포스트

[Network] TCP/IP 4계층 모델

Computer Science / Network

TCP/IP 4계층 모델에 대한 개념 정리 및 핵심 정리

TCP/IP (& UDP) 개념 정리

IP(Internet Protocol)란?

지정한 IP 주소에 데이터의 조각들을 패킷(Packet)1이라는 통신 단위로 최대한 빨리 목적지로 보내는 역할이다.

목적지까지 빨리 보내는 것이 목적인 만큼, 조각들의 순서가 뒤바뀌거나 일부가 누락되더라도 크게 상관하지 않고 보내는 것에 집중한다.

그래서 IP 프로토콜은 패킷의 순서 보장도 할 수 없고 패킷이 중간에 유실되도 이에 대한 방안이 없다.

TCP(Transmission Control Protocol)란?

패킷 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.

따라서 도착한 조각을 점검하여 줄을 세우고 망가졌거나 조각이 빠지는 경우, 해당 조각을 다시 요청하는 식으로 순서를 보증한다.

TCP는 데이터를 상대방에게 확실하게 보내기 위해서 3-Way Handshake이라는 방법을 사용하고 있다.

이 방법은 패킷을 보내고 잘 보내졌는지의 여부를 상대에게 확인하러 가는 방식이다.

여기에서 고유의 SYNACK라는 TCP 플래스를 사용한다.

일종의 확인 마크 정도로 이해하면 된다.

즉, TCP는 IP의 문제를 보완해주는 역할을 한다고 보면 된다.

TCP 3-Way Handshake

본격적으로 상대 클라이언트와 연결되기 전에 가상 연결을 하고 패킷으로 보내서 확인하는 동작이다.

  • SYN
    접속 요청
  • ACK
    요청 수락
이름의미
SYN연결을 생성할 때 클라이언트가 서버에 시퀀스 번호를 보내는 패킷
SYN-ACK시퀀스 번호를 받은 서버가 ACK 값을 생성하여 클라이언트에게 응답하는 패킷
ACKACK 값을 사용하여 응답하는 패킷

image_2

  • 클라이언트서버
    SYN 패킷 전송
  • 서버클라이언트
    SYN-ACK 패킷 전송
  • 클라이언트서버
    ACK + 데이터 패킷 전송

TCP 순서 보장 방법

image_3

  1. 클라이언트에서 패킷1, 패킷2, 패킷3 순서로 전송
  2. 서버에서 패킷1, 패킷3, 패킷2 순서로 받음
  3. 서버에서 패킷2번부터 다시 보내라고 클라이언트에게 요청 (TCP 기본 동작)

이렇게 패킷을 순서대로 제어를 할 수 있는 이유는 TCP 데이터 안에 전송 제어, 순서, 정보들이 있기 때문이다.

그래서 TCP는 신뢰할 수 있는 프로토콜이라고 얘기한다.

UDP(User Datagram Protocol)란?

image_4

비연결지향적 프로토콜로써, 데이터의 전달을 보증하지 않으며, 데이터 전달의 순서 또한 보장하지 않는다.

TCP에 비교해서 기능이 거의 없다시피 해서 단순하지만, 오로지 빠르게 패킷을 보내는 목적으로 사용된다.

즉, IP와 거의 같다고 보면 되며, PORT와 체크섬2 정도만 추가된 형태이다.

IP에서 기능이 거의 추가되지 않은 하얀 도화지 같은 상태이기 때문에, 최적화 및 커스터마이징이 용이하다는 장점이 있다.

TCP와 IP의 차이 정리

방식중요도특징
TCP정확도 / 속도 IP보다 느리지만 꼼꼼한 방식을 사용
도착한 데이터 조각을 점검하여 줄을 세우고
망가졌거나 빠진 조각을 다시 요청
IP정확도 / 속도 데이터의 조각들을 최대한 빨리 목적지로 보내는 역할
데이터가 뒤바뀌거나 누락되도 크게 상관 X

TCP와 UDP의 차이 정리

TCPUDP
연결지향형 프로토콜비연결지향형 프로토콜
바이트 스트림을 통한 연결메세지 스트림을 통한 연결
혼잡 제어, 흐름 제어혼잡 제어와 흐름 제어 지원 X
순서 보장 (상대적으로 느림)순서 보장되지 않음 (상대적으로 빠름)
신뢰성 있는 데이터 전송 (안정적)데이터 전송 보장 X
세그먼트 TCP 패킷데이터그램 UDP 패킷
HTTP, Email, File Transfer도메인, 실시간 동영상 서비스에서 사용

TCP와 UDP를 비교하여 개념을 정리한 내용은 #TCP VS UDP

TCP/IP 4계층

image_5

  • 4층
    애플리케이션 계층
    HTTP, FTP, DNS, SMTP
  • 3층
    전송 계층
    TCP, UDP
  • 2층
    인터넷 계층
    IP
  • 1층
    네트워크 액세스 계층
    Ethernet (이더넷)

TCP/IP 4계층 종류

image_7

1. 네트워크 액세스 계층 (Network Access Layer)

이 계층은 Node-To-Node 간의 신뢰성 있는 데이터 전송을 담당하는 계층이다.

OSI 7계층의 물리 계층과 데이터 링크 계층의 역할을 바로 이 계층이 담당하는 것으로 볼 수 있다.

image_8

알맞은 하드웨어로 데이터가 전달되도록 MAC 주소를 핸들링 하는 것 뿐 아니라, 데이터 패킷을 전기 신호로 변환하여 선로를 통해 전달할 수 있게 준비해준다.

2. 인터넷 계층 (Internet Layer)

IP를 담당하는 계층으로, IP를 사용하여 데이터의 원천지(Origin)과 목적지(Destination)에 관한 정보를 첨부한다.

IP는 복잡한 네트워크 망을 통해 가장 효율적인 방법으로 데이터의 작은 조각들을 되도록 빨리 보내는 일을 한다.

따라서, IP 패킷 전달 여부를 보증하지 않고, 경로를 설정하여 어떻게든 빨리 보내도록 한다.

  • IP
    비연결의 서비스를 제공하며, 발신자와 목적지까지의 라우팅 경로를 결정
  • ICMP
    IP 제어와 메시지 기능을 담당
  • ARP
    IP 주소를 이용해 상대방의 MAC 주소를 알아오는 프로토콜 (브로드캐스트 요청, 유니캐스트 응답)
  • RARP
    MAC 주소에 해당하는 IP 주소를 알아오는 프로토콜 (브로드캐스트 요청, 유니캐스트 응답)

3. 전송 계층 (Transport Layer)

TCP/UDP를 담당하는 계층으로, TCP는 IP 위에서 동작하는 프로토콜을 말하며, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다.

즉, 순서가 맞지 않거나 중간에 빠진 부분을 점검하여 다시 요청하는 일을 담당한다.

  • TCP (Transmission Control Protocol)
    연결 지향적 (Connection Oriented)
    신뢰적, 흐름 제어, 에러 제어 (SYN 번호, ACK 번호 사용)
    ACK를 받지 못한 모든 데이터는 재전송한다.
    • 장점 : 보장된 세그먼트로 전달하기에 신뢰성이 있다.
    • 단점 : 연결을 위한 초기 설정 시간이 오래 걸리며, 상대적으로 속도가 느리다.
  • UDP (User Datagram Protocol)
    비연결 지향적 (Connectionless Oriented)
    비신뢰적
    데이터를 보낸 후에 잘 도착했는지를 검사하는 기능이 없다.
    신뢰성보다는 고속성을 요구하는 멀티미디어 응용 등에 일부 사용되고 있다.
    • 장점 : 연결을 맺지 않으므로 제어 프레임 전송을 할 필요가 없기에 네트워크 부하를 줄일 수 있으며, 상대적으로 속도가 빠르다.
    • 단점 : 데이터의 순서를 보장할 수 없으며, 누락될 가능성도 존재한다. (신뢰성 부족)

4. 응용 계층 (Application Layer)

HTTP/FTP를 담당하는 계층으로, OSI 7개층에서 5계층부터 7계층까지의 기능을 담당하고 있다.

서버나 클라이언트 응용 프로그램이 이 계층에서 동작한다.

우리가 흔히 알고 있는 브라우저나 Telnet같은 서비스가 이 계층에서 동작한다.

  • DNS (Domain Name System)
    인터넷에서 사용하는 이름을 해당 IP 주소로 변환해주는 서비스
  • SNMP (Simple Network Management Protocol)
    네트워크 장비를 모니터링하고 제어하는 프로토콜
  • FTP (File Transfer Protocol)
    TCP 환경에서 파일 전송 프로토콜
  • TFTP (Trival File Transfer Protocol)
    UDP 환경에서 파일 전송 프로토콜
  • HTTP (Hypertext Transfer Protocol)
    웹 상에서 정보를 주고받을 수 있는 프로토콜

TCP/IP 4계층 동작 순서

image_9

  1. 송신측 클라이언트의 애플리케이션 계층에서 어느 웹 페이지를 보고 싶다라는 HTTP 요청을 지시한다.
  2. 그 다음에 있는 트랜스포트 계층에서 애플리케이션 계층에서 받은 데이터(HTTP 메시지)를 통신하기 쉽게 조각내어 안내 번호와 포트 번호(TCP 패킷)를 붙여 네트워크 계층에 전달한다.
  3. 네트워크 계층에서 데이터에 IP 패킷을 추가해서 링크 계층에 전달한다.
  4. 링크 계층에서는 수신지 MAC 주소와 이더넷 프레임을 추가한다.
  5. 이로써 네트워크를 통해 송신할 준비가 된다.
  6. 수신측 서버는 링크 계층에서 데이터를 받아들여 순서대로 위의 계층에 전달하여 애플리케이션 계층까지 도달한다.
  7. 수신측 애플리케이션 계층에 도달하게 되면 클라이언트가 발신했던 HTTP 리퀘스트를 수신할 수 있다.

현재 OSI 7계층보다는 TCP/IP 4계층이 더 많이 활용되고 있다.

OSI 7계층이 이론적인 느낌이라면, TCP/IP 4계층은 이론을 실제로 사용한다는 느낌이다.

네이버 접속 시나리오

  1. 웹 브라우저에 [www.naver.com][https://www.naver.com] 입력
  2. DNS로 네이버 서버 IP 주소 할당
  3. 응용 계층(L4)에서 메시지 데이터 패킹 (HTTP 메시지)
  4. 전송 계층(L3)에서 PORT 정보(출발지, 목적지), 전송제어 정보, 순서 정보, 검증 정보 패킹 (TCP)
  5. 인터넷 계층(L2)에서 IP 정보(출발지, 목적지) 패킹
  6. 네트워크 액세스(L1) 계층에서 MAC 주소 패킹
  7. 게이트웨이를 통해 인터넷 망 접속
  8. 라우터를 통해 목적지(네이버 서버)를 찾아 연결
  9. 네이버 서버에 도착하면 패킷을 하나씩 까면서 목적 포트에 메시지 데이터를 전달하여 다시 응답

참고 사이트

Inpa Dev - 🗼 TCP / IP 4계층 모델 - 핵심 총정리


  1. 패킷(Packet) 또는 네트워크 패킷(Network Packet)은 네트워크를 통해 전송되는 형식화된 데이터 덩어리로, 네트워크 패킷의 주요 컴포넌트는 사용자 데이터와 제어 정보이며, 사용자 데이터는 “페이로드(Payload)”로 알려져 있다. ↩︎

  2. 체크섬(Checksum)은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다. ↩︎

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.