[면접을 위한 CS 지식 노트] TCP/IP 4계층 모델

재오·2023년 3월 20일
3

CS

목록 보기
3/35
post-thumbnail

계층 구조

계층 모델은 네트워크에서 사용되는 통신 프로토콜의 집합으로 계층들은 프로토콜의 네트워킹 범위에 따라 4개의 추상화 계층으로 구성된다.

애플리케이션 계층(Application)

애플리케이션 계층은 응용 프로그램이 사용되는 프로토콜 계층이다. 이 층은 실질적으로 서비스가 사람들에게 제공되는 층이다. HTTP나 DNS가 이 층에 해당된다. 애플리케이션을 사장님에 비유하고 다른 층을 이해하기 쉽게 연관시켜보자.

전송 계층(Transport)

트랜스포트 계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며, 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 한다. TCP와 UDP가 이 층에 해당된다. 여기서 TCP(가상회선 패킷 교환방식)는 패킷 사이의 순서를 보장하는 연결지향 프로토콜을 사용해 신뢰성을 확보한다. 반면 UDP(데이터그램 패킷 교환방식)은 순서를 보장하지 않고 수신여부를 확인하지 않으며 단순히 데이터만 주고 받는 방식이다.

여기서 TCP는 패킷들이 전송된 순서대로 도착하는 방식을 이용하는데 TCP가 신뢰성을 확보하는 이유는 3-way handshake라는 작업을 진행하기 때문이다.

3-way handshake(TCP 연결 성립 과정)

TCP는 SYN을 보내고(연결 요청) (seq는 랜덤) → 응답을 8001번으로 해준다. 서버가 S를 보면 아 연결 요청이구나 하면서 잘 받았다는 의미에서 ACK을 보내준다. 앞에서 말한 것과 같이 TCP는 양방향이기 때문에 SYN을 보내고 SYN(랜덤으로 15000번)과 ACK를 같이 받고 ACK(15001)를 보낸다. 위에 그림과는 다르게 ACK만 갈 때에는 ACK만 보면 된다. seq는 볼 필요가 없다.
3-way handshake: SYN이 가면 SYN + ACK이 오고 SYN + ACK이 가면 ACK이 온다.

4-way handshake(TCP 연결 해제 과정)

TCP 연결 상태와 비슷하나 살짝 다르다. 먼저 SYN 대신에 FIN을 보내고 서버는 클라이언트로 ACK 승인 세그먼트를 보낸다. 서버는 ACK를 보내고 일정 시간 이후 FIN 세그먼트를 보낸다. 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 된다. TIME_WAIT은 지연 패킷이 발생할 경우를 대비하기 위해서 필요하다. 서버에서 FIN 세그먼트를 못보내고 서버를 닫을 수도 있기 때문이다.

인터넷 계층(Network)

인터넷 계층은 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는 계층이다. IP, ICMP가 여기에 속한다. 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달하기 때문에 상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가지고 있다.

실질적으로 데이터를 전달하는 계층이다.흔히 0과 1로 이루어진 데이터를 보내는 물리적인 계층을 의미한다.

계층 간 데이터 송수신 과정


애플리케이션 계층에서 전송 계층으로 요청 값들이 캡슐화 과정을 통해 전달이 되고, 링크 계층을 통해 해당 서버와 통신을 하고, 해당 서버의 링크 계층으로부터 애플리케이션까지 비캡슐화 과정을 거쳐 데이터가 전송된다.

캡슐화 과정


애플리케이션 계층의 데이터가 전송 계층으로 전달되면서 세그먼트화 되며 TCP헤더가 붙는다. 그리고 이후 인터넷 계층으로 가면서 IP헤더가 붙어지며 패킷화가 된다. 이후 링크 계층으로 전달되면서 프러임헤더가 붙어 프레임화가 된다.

PDU

PDU(Protocol Data Unit)는 네트워크의 어떠한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위를 의미한다. PDU는 정보들이 포함되어 있는 헤더와 데이터를 의미하는 페이로드로 구성되어 있다. 각 계층마다 부르는 명칭이 다른데 애플리케이션 계층은 메시지, 전송 계층은 세그먼트 또는 데이터그램, 인터넷 계층은 패킷, 링크 계층은 프레임이라고 한다.

profile
블로그 이전했습니다

1개의 댓글

comment-user-thumbnail
2023년 3월 21일

깔끔한 정리 감사합니다 !!

답글 달기