본문 바로가기
Computer Science/Network

[CS / Network] TCP/IP 4계층에 대해 알아보자!

by newtownboy 2024. 3. 11.


[Version]
⦁ 2024.03.12 / [CS / Network] TCP/IP 4계층에 대해 알아보자!

 

TCP/IP 4계층이란?

인터넷 프로토콜 스위트는 인터넷 상에서 컴퓨터들이 정보를 주고 받는 데 사용되는 프로토콜의 집합이다. 이것은 보통 TCP/IP 4계층 모델이나, OSI 7계층 모델로 설명된다.

 

TCP/IP 4계층 모델은 네트워크 통신을 위한 프로토콜을 네 개의 추상화된 계층으로 구성된다. 이러한 계층적 틍성은 한 계층의 변경이 다른 계층에 영향을 미치지 않도록 설계되었다.

.

자! 이제 각 계층에 대해 상세하게 알아보자.


애플리케이션 계층 (Application Layer)

애플리케이션 계층은 사용자가 직접적으로 상호 작용하는 서비스를 제공하는 계층이다. 이 계층은 FTP, HTTP, SSH, SMTP, DNS등 다양한 프로토콜을 포함하고 있다.

  • FTP: 장치 간 파일 전송을 위한 표준 프로토콜
  • SSH: 네트워크 서비스를 안전하게 운영하기 위한 네트워크 프로토콜
  • HTTP: 웹 사이트 간 데이터 통신을 가능하게 하는 프로토콜로, World Wide Web의 기초를 이룬다.
  • SMTP: 전자 메일을 전송하기 위한 인터넷 표준 통신 프로토콜
  • DNS: 도메인의 이름과 IP주소를 매핑해주는 서버

전송 계층(Transport Layer)

전송 계층은 송신자와 수신자 간 통신 서비스를 제공하는 역할을 한다. 이 계층은 견결 지향 데이터 스트림을 지원하고, 데이터의 신뢰성을 보장하며 흐름을 제어한다. 또한, 애플리케이션과 인터넷 계층 사이에서 데이터가 전달될 때 중계 역할을 수행한다. 이 계층의 대표적인 프로토콜로 TCP와 UDP가 있다.

 

TCP(Transmission Control Protocol)란?

TCP는 패킷 사이의 순서를 보장하고 연결 지향적인 프로토콜로, 가상회선 패킷 교환 방식을 사용하여 신뢰성을 제공한다.

 

[가상회선 패킷 교환 방식]

가상회선 패킷 교환 방식은 각 패킷에 가상회선 식별자가 포함되며, 모든 패킷이 전송 완료되면 가상회선이 해제되고 패킷들은 순서대로 도착하는 것을 보장한다.

 

[TCP 연결 과정]

TCP는 연결을 확립하고 신뢰성을 보장하기 위해 3-way handshake를 사용한다. 이에 대한 과정을 아래 순서로 알아보자!

  1. 클라이언트가 서버와 통신을 시작할 때 클라이언트의 ISN을 SYN에 담아 서버로 전송한다.
  2. 서버는 클라이언트의 수신을 받은 후 서버의 ISN, 클라이언트의 ISN + 1을 ACK에 담아 클라이언트로 전송한다.
  3. 클라이언트는 서버의 수신을 받은 후 서버의 ISN + 1을 ACK에 담아 서버로 전송하고 연결을 확립한다.

 

[TCP 연결 해제 과정]

TCP가 연결을 해제할 때는 4-way handshake 과정을 수행한다. 이에 대한 과정을 아래 순서로 알아보자!

  1. 클라이언트가 연결을 종료하고자 할 때, 클라이언트는 FIN 플래그가 설정된 세그먼트를 서버에게 전송한다. 그리고 클라이언트는 FIN_WAIT_1 상태로 전환되고, 서버의 응답을 기다린다.
  2. 서버는 클라이언트로부터 받은 FIN 세그먼트에 대해 ACK 세그먼트를 전송한다. 이후 서버는 CLOSE_WAIT 상태로 전환된다. 클라이언트가 서버의 ACK 세그먼트를 받으면 FIN_WAIT_2 상태로 전환된다.
  3. 서버는 일정 시간이 지난 후 클라이언트에게 FIN 세그먼트를 보낸다. 이 세그먼트는 서버가 클라이언트에게 연결을 종료한다는 것을 의미한다.
  4. 클라이언트는 서버로부터 받은 FIN 세그먼트에 대해 ACK를 보내고 TIME_WAIT 상태로 전환한다. 그리고 클라이언트는 서버에게 ACK를 보내어 서버가 CLOSED 상태로 전환된다. 이후 클라이언트는 일정 시간을 대기한 후 연결이 완전히 종료되고 이후 클라이언트와 서버의 모든 자원의 연결이 해제된다.

TIME_WAIT 상태는 TCP 연결을 종료한 후 일정 시간 동안 소켓을 유지하는 상태이다. 이 상태를 유지하는 이유에는 두 가지 이유가 있다.

  • 첫 번째로, 지연 패킷이 발생할 경우를 대비하기 위함이다. TCP 연결이 종료되면서 이전에 전송된 모든 패킷이 도달할 때까지 일정 시간을 기다리는 것으로 만약 도착하지 않은 패킷이 있다면 재전송을 요청하여 데이터의 무결성을 유지한다.
  • 두 번째로, 두 장치 간에 연결이 실제 종료되었는지 확인하기 위함이다. TCP의 4-way handshake 과정에서 마지막 ACK가 손실되는 경우를 대비하여, 상대방이 연결을 닫았음에도 불구하고 재 연결을 시도하는 경우를 방지하기 위해 TIME_WAIT 상태를 유지한다. 이를 통해 다음 연결이 원활하게 이루어질 수 있도록 한다.

 

UDP(User Datagram Protocol)란?

UDP는 데이터를 전송하는데 사용되는 프로토콜 중 하나로 데이터그램 패킷 교환 방식을 사용한다.

 

[데이터그램 패킷 교환 방식]

데이터그램 패킷 교환 방식은 패킷이 독립적으로 이동하며 최적의 경로를 선택하여 전송된다. 이는 하나의 메세지가 여러 패킷으로 분할되어 전송될 때, 각각의 패킷이 서로 다른 경로를 통해 전송될 수 있고 도착하는 순서가 보장되지 않는 특징을 갖는다.

 

즉, UDP는 데이터의 순서를 보장하지 않고, 수신 여부를 확인하지 않는다. 각각의 데이터그램은 독립적으로 처리되며 패킷이 전송되는 순서와 도착하는 순서가 다를 수 있다. 이러한 특성 때문에 UDP는 실시간 통신이나 손실이 발생해도 영향을 받지 않는 응용 프로그램에서 주로 사용된다.


인터넷 계층 (Internet Layer)

인터넷 계층은 네트워크 패킷을 목적지 IP주소로 전송하는 역할을 한다. 이 계층에는 IP, ARP, ICMP와 같은 프로토콜이 존재한다.

 

인터넷 계층은 장치로부터 받은 네트워크 패킷을 목적지 IP주소로 전송하기 위해 사용된다. 패킷을 수신해야할 상대의 IP 주소를 지정하여 데이터를 전달한다. 이 계층의 특징 중 하나는 비연결형으로 상대방이 패킷을 제대로 받았는지에 대해 보장하지 않는다는 것이다. 따라서 패킷의 전송이나 수신에 대한 보증이나 확인 작업을 수행하지 않는다.


링크 계층 (Link Layer)

링크 계층은 데이터를 전달하고 장치 간 신호를 주고받는 규칙을 정하는 계층이다. 링크 계층은 물리 계층과 데이터링크 계층으로 구분될 수 있다.

  • 물리 계층은 실제로 데이터를 0과 1로 변환하여 전송하는 역할을 담당하며, 유선, 무선 LAN과 같은 매체를 통해 이루어진다.
  • 데이터링크 계층은 오류 확인, 흐름 제어, 접근 제어 등의 기능을 수행하는 역할을 한다. 

계층 간 데이터 송수신 과정

서로 다른 두 대의 컴퓨터가 통신을 수행할 때 어떠한 작업이 발생할까요? 다음 순서를 통해 확인해봅시다.

  1. 애플리케이션 계층 → 전송 계층: HTTP 요청은 애플리케이션 계층에서 출발하여 전송 계층으로 이동한다. 여기서 요청은 TCP 또는 UDP와 같은 프로토콜을 통해 전송된다. 이때 데이터는 캡슐화되어 전송 계층으로 이동한다.
  2. 전송 계층 → 네트워크 계층: 전송 계층을 통해 캡슐화된 데이터는 네트워크 계층으로 이동한다. 여기서는 IP주소와 같은 정보가 추가되어 목적지 서버를 식별하는 과정이 수행된다.
  3. 네트워크 계층 → 링크 계층: 네트워크 계층에서 캡슐화된 데이터는 링크 계층으로 이동한다. 이때 MAC주소와 같은 링크 계층에서 필요한 정보가 추가된다.
  4. 링크 계층을 통한 통신: 링크 계층을 통해 데이터가 목적지 서버로 전송된다.
  5. 이후, 역순으로 비캡슐화 수행

 

[캡슐화]

캡슐화 과정은 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고, 해당 계층의 헤더를 삽입하는 과정을 의미한다.

 

예를 들어, 애플리케이션 계층의 데이터가 전송 계층으로 전달되면서 TCP헤더가 추가된다. 이렇게 세그먼트 또는 데이터그램화 된 데이터는 TCP헤더와 함께 전송 계층에서 생성된다. 이후, 데이터는 인터넷 계층으로 전달되면서 IP헤더가 추가된다. 이 과정을 통해 데이터는 패킷화되며 IP헤더는 패킷의 정보를 추가한다. 마지막으로 패킷은 링크 계층으로 전달되면서 프레임 헤더와 프레임 트레일러가 추가된다. 이 과정을 통해 데이터는 프레임화된다.

 

[비캡슐화]

비캡슐화 과정은 하위 계층에서 상위 계층으로 데이터가 전달되면서 각 계층의 헤더 부분을 제거하는 과정을 의미한다. 이 과정은 캡슐화된 데이터가 상위 계층으로 전달될 때 발생하며, 각 계층에서는 자신의 헤더를 제거하고 상위 계층으로 데이터를 전달한다.

 

예를 들어, 링크 계층에서부터 상위 계층으로 데이터가 전달될 때는 프레임화된 데이터가 먼저 패킷화되고 이어서 세그먼트, 데이터그램화를 거쳐 최종적으로는 애플리케이션의 PDU인 메세지로 전달된다.


PDU(Protocol Data Unit)

네트워크의 각 계층에서 계층으로 데이터가 전달될 때, 한 덩어리 단위를 PDU라고 한다. PDU는 제어 관련 정보들이 포함된 헤더와 실제 전달되는 데이터인 페이로드로 구성되어 있으며 각 계층에서는 PDU를 다른 명칭으로 부른다.

  • 애플리케이션 계층: 메세지
  • 전송 계층: 세그먼트(TCP), 데이터그램(UDP)
  • 인터넷 계층: 패킷
  • 링크 계층: 프레임(데이터 링크 계층), 비트(물리 계층)

참고