[개발 상식] TCP/IP

Darlene·2021년 7월 27일
1

개발 상식

목록 보기
2/3

TCP/IP 란?

컴퓨터의 인터넷 연결 시스템

"transmission control protocol/Internet protocol"

서로 다른 시스템을 가진 컴퓨터들을 서로 연결하고, 데이터를 전송하는 데 사용하는 통신 프로토콜들의 집합이다.

서로 다른 하드웨어와 운영체제 등을 가지고 서로 통신을 하기 위해서는 모든 요소에 규칙이 필요하다. 상호간에 통신을 하기 위해서 서로 같은 방법이 필요하기때문에 표준 통신 규약(프로토콜)이 생겨났다.
이렇게 인터넷과 관련된 프로토콜들을 모은 것을 TCP/IP라고 부른다.

TCP/IP 4계층

TCP/IP에서 가장 중요한 개념 중 하나가 계층(Layer)이다.
TCP/IP는 '애플리케이션 계층', '트랜스포트 계층', '네트워크 계층', '링크 계층' 이렇게 4계층으로 구성되어 있다.

👀 애플리케이션 계층

유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임을 결정하고 있다.

응용 계층은 애플리케이션의 기능을 실행하기 위해 애플리케이션이 다루는 데이터 형식과 처리 순서를 결정하여 사용자에게 서비스를 제공하는 역할이다.

예를 들면 웹페이지 데이터를 주고받을 때는 HTTP, 파일을 전송할 때는 FTP, 도메인 이름과 IP 주소를 서로 변환할 때는 DNS라는 프로토콜을 사용한다.

표 출처 : TCP/IP 4계층(애플리케이션 계층)_작성자 혜영

👀 트랜스포트 계층

트랜스포트 계층은 애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름을 제공한다.

데이터 전송의 신뢰성이나 효율성을 중요시하는 여부에 따라 크게 TCP와 UDP프로토콜이 사용된다.

TCP 프로토콜

신뢰할 수 있고 정확한 데이터를 전달하기 위해 전송 속도를 조절하거나 도달하지 않은 데이터를 재전송하는 기능을 하는 프로토콜이다.

웹이나 이메일과 같이 데이터의 신뢰성과 정확성이 중요한 애플리케이션에서는 TCP를 사용한다.

UDP 프로토콜

데이터의 일부가 유실되더라도 빠르고 효율적으로 데이터를 전송하는 프로토콜이다.

동영상 스트리밍 서비스와 같이 데이터가 늦게 도착해서 버벅거리는 동영상을 보는 것보다 데이터가 일부 유실되더라도 원활하게 볼 수 있도록 빠른 데이터 전송이 필요한 애플리케이션에서는 UDP를 사용한다.

📌 트랜스포트 계층 식별 주소

👀 네트워크 계층

네트워크 상에서 패킷(전송하는 데이터의 최소의 단위)의 이동을 다룬다. 어떠한 경로를 거쳐 상대의 컴퓨터까지 패킷을 보낼지를 결정하기도 한다.

네트워크 계층의 기본 기능은 송수신 호스트 사이의 패킷 전달 경로를 선택하는 라우팅이다. 라우팅 과정에 수반되는 부분도 네트워크 계층에서 처리하는데, 대표적인 것이 네트워크의 특정 지역에 트래픽이 몰리는 현상을 다루는 혼잡 제어와 라우터 사이의 패킷 중개 과정에서 다루는 패킷의 분할과 병합이다.

대표적으로 IP, ARP, RARP가 있다.

📌 네트워크 계층 식별 주소

👀 데이터 링크 계층

네트워크에 접속하는 하드웨어적인 면을 다룬다. 운영체제가 하드웨어를 제어하기 때문에 디바이스 드라이버랑 네트워크 인터페이스 카드를 포함한다. 그리고 케이블 등과 같이 물리적으로 보이는 부분도 포함한다. 하드웨어적 측면은 모두 링크 계층의 역활이다.

여기서 말하는 하드웨어에는 네트워크 어댑터, 유무선 LAN 케이블, 광케이블 등이 있다. 이 계층에서는 상위 계층에서 하드웨어의 종류에 상관없이 통신할 수 있도록 하드웨어를 제어하면서 인접한 다른 통신 기기까지 데이터를 전달해야 한다.

네트워크 어댑터(NIC, Network Interface Card)에는 식별 번호가 부여되어 있고, 이를 MAC(Media Access Control) 어드레스라고 한다.

📌 데이터 링크 계층 식별 주소

TCP/IP 통신 흐름

TCP/IP로 통신을 할 때 계층을 순서대로 거쳐 상대와 통신을 한다.
송신하는 측은 애플리케이션 계층에서부터 내려가고, 수신하는 측은 애플리케이션층에서 위로 올라간다.

그림과 같이 HTTP로 예를 들어 보자.

  1. 먼저 송신측 클라이언트의 애플리케이션 계층(HTTP)에서 'OOO 웹 페이지를 보여주세요.' 라는 HTTP 리퀘스트(요청)을 보내온다.
  2. 그 다음에 있는 트랜스포트 계층(TCP)에서는 애플리케이션 계층에서 받은 데이터(HTTP 메시지)를 통신하기 쉽게 조각내어 안내 번호포트 번호를 붙여 네트워크 계층에 전달한다.
  3. 네트워크 계층(IP)에서는 수신지 MAC 주소를 추가해서 링크 계층에 전달한다.

이렇게 네트워크를 통해 송신할 준비가 완료되었다!!! 🔫

수신측 서버는 링크 계층에서 데이터를 받아들여 순서대로 위릐 계층에 전달하여 애플리케이션 계층까지 도달한다.
이렇게 애플리케이션 계층에 도달하게 되면 클라이언트가 발신했던 HTTP 리퀘스트 내용을 수신할 수 있다.

위 그림과 같이 각 계층을 거칠 때는 헤더를 추가하고 헤더를 삭제하는데 이렇게 정보를 감싸는 것을 캡슐화라고 부른다.

참조 : 두산백과_TCP/IP
참조 : 변계사 Sam의 테크 스타트업! 블로그
참조 : 네이버 지식백과 _네트워크 계층의 기능
참조 : 코딩팩토리_블로그
참조 : 유투브_우아한Tech

0개의 댓글