이번 포스팅에서는 네트워크에서 데이터들이 어떻게 송/수신되는지에 대한 과정에 대해 알아보려고 합니다.

호스트네임 또는 IP와 포트번호를 통해 송신과 수신을 어떻게 하는지, 그리고 데이터를 전송하는 과정에서의

UDP와 TCP의 전송방식, 특징 및 차이점에 대해 알아보겠습니다.

 

OSI 7계층 / TCP/IP 4계층

OSI 7계층 / TCP/IP 4계층 비교 - https://shlee0882.tistory.com/110

 

※ OSI 7계층 : 네트워크에서 통신이 일어나는 개념적인 과정을 7단계로 나눈 것

※ TCP/IP 4계층 : 네트워크에서 실제로 사용하는 인터넷 표준을 4단계로 나눈 것

 

  • 4층 - 어플리케이션 계층 - HTTP, DNS, FTP 등
  • 3층 - 전송 계층 - TCP, UDP
  • 2층 - 인터넷 - IP
  • 1층 - 네트워크 엑세스 계층 - 이더넷

 

IP(Internet Protocol)

  • TCP와 UDP가 데이터를 전달하는데 사용하는 기본 전송 수단.
  • 데이터를 패킷(Packet)단위로 나누어 전송하고, 목적지 IP 주소를 기반으로 라우팅한다.
  • 비연결성이며, 신뢰성이 보장되지 않는다.
    • 데이터가 유실되거나 순서가 보장되지 않는다.

※ 패킷 (Packet) : 네트워크를 통해 전송되는 형식화된 데이터 덩어리

  • 라우터마다 패킷 한개의 크기가 제한되어있다 .(600 ~9000바이트, 평균 1300)
  • 주고받는 데이터, 페이로드의 크기 및 송/수신자 주소, 체크섬 등이 들어있다.
    • 수신자 주소 : 수신측 단말기까지 전달할 때 라우터에서 필요한 정보
    • 송신자 주소 : 수신측 단말기까지 도착한 후 수신자 측에서 송신자를 식별하는 용도
    • 체크섬 : 메시지를 검증해주는 데이터

 

UDP(User Datagram Protocol)

전송 계층의 통신 프로토콜 중 하나로, 사용자가 정의한 데이터그램을 상대방에게 보낼 수 있게하는 통신 규약입니다.

 

출처 : https://mangkyu.tistory.com/15

 

  • 비 연결지향적 프로토콜
  • 데이터 전달 및 순서 보장을 하지 않는다.
  • UDP 헤더의 체크섬 필드를 통해 최소한의 오류만 검출한다.
  • TCP보다 속도가 빠르며, 빠른 요청과 응답이 필요한 실시간 응용에 사용된다.
    • 데이터그램 유실이 생겨도 이어서 오는 데이터가 해당 정보를 보완해주는것들을 UDP로 전송한다.
    • Ex) 캐릭터 이동 정보
    • 음성, 화상데이터 전송
  • 1:1, 1:N, N:N 형태의 통신이 가능하다.
  • 데이터그램(메시지) 단위로 전송되며, 메시지의 크기가 어플리케이션 크기에 의해 정의된다.
  • 소켓을 활용하여 IP와 PORT를 기반으로 데이터를 전송한다.

 

TCP(Transmission Control Protocol)

전송 계층의 통신 프로토콜 중 하나로, 전송제어를 통해 송/수신데이터가 완전히 동일함을 도장하는 프로토콜 입니다.

ACK / NACK - https://www.geeksforgeeks.org/snooping-tcp/

 

  • 연결지향형(Connection Oriented)식으로, 1:1 통신만 가능하다.
  • 흐름제어기능(Data Flow Control)을 통해 데이터 전송을 보장한다.
    • 데이터가 상대방에게 정확하게 전송되는것을 보장하는 기능
  • 스트림 데이터 형식으로 전송한다.
    • 세그먼트(Segment)라는 IP 패킷에 넣을 수 있는 크기의 단위로 쪼개어 전송
      (송신 단말기 A -> 수신 단말기 B) 
    • IP패킷을 받으면 세그먼트를 꺼내 받은 세그먼트 응답을 송신자에게 반송
      (수신 단말기 B -> 송신 단말기 A)
      • 해당반송 과정을 ack, acknowledge라고 한다.
    • 즉, ack가 회신되지 않은 경우 상대방이 받았다는 응답이 올때까지 다시 세그먼트를 전송하여 송/수신 전송을 보장한다.
  • 패킷에 대한 응답을 하기전까지 블로킹되며, UDP에 비해 속도가 느리다.
  • 연결 시 TCP 3-Way Handshake을 통해 연결을 설정한다.
    1. SYN : 연결을 생성할 때 클라이언트가 서버에 시퀀스 번호를 보내는 패킷
    2. SYN-ACK :  시퀀스 번호를 받은 서버가 ACK값을 생성하여 클라이언트에게 응답하는 패킷
    3. ACK : ACK 값을 사용하여 응답하는 패킷
  • 연결 종료시에는 TCP 4-Way Handshake 방식을 통해 연결을 종료한다.
    1. FIN : 클라이언트가 연결을 종료하고 싶을 때 FIN플래그가 설정된 패킷을 전송
    2. ACK : 시퀀스 번호를 받은 서버가 클라이언트의 종료 요청 확인
    3. FIN : 서버가 종료되었음을 알림과 동시에 클라이언트에게 자신의 시퀀스 번호를 보내는 패킷
    4. ACK : ACK값을 확인하여 서버 종료 요청 확인하는 패킷

 

TCP vs UDP 비교

 

특성 TCP (Stream) UDP (Message)
전송 단위 바이트 스트림 (경계 없음) 메시지 (데이터그램, 경계 유지)
신뢰성 데이터 손실, 순서 보장, 중복 방지 신뢰성 없음
연결성 연결형 (Connection-oriented) 비연결형 (Connectionless)
속도 느림 (추가적인 신뢰성 처리) 빠름 (신뢰성 처리 없음)
사용 사례 파일 전송, 웹 브라우징 (HTTP, FTP 등) 실시간 스트리밍, VoIP, 게임 데이터 전송

 

 

'OS , 네트워크' 카테고리의 다른 글

동기, 비동기, 블로킹, 논블로킹  (1) 2025.03.11
OSI 7계층  (0) 2025.03.10
TCP/IP 4계층  (0) 2025.02.06
프로세스 동기화 - 세마포어, 뮤텍스, 임계영역  (1) 2025.01.03

+ Recent posts