OS , 네트워크
TCP 와 UDP의 특징 및 차이점
KimGeon-U
2025. 1. 6. 17:48
이번 포스팅에서는 네트워크에서 데이터들이 어떻게 송/수신되는지에 대한 과정에 대해 알아보려고 합니다.
호스트네임 또는 IP와 포트번호를 통해 송신과 수신을 어떻게 하는지, 그리고 데이터를 전송하는 과정에서의
UDP와 TCP의 전송방식, 특징 및 차이점에 대해 알아보겠습니다.
OSI 7계층 / TCP/IP 4계층
※ 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)
전송 계층의 통신 프로토콜 중 하나로, 사용자가 정의한 데이터그램을 상대방에게 보낼 수 있게하는 통신 규약입니다.
- 비 연결지향적 프로토콜
- 데이터 전달 및 순서 보장을 하지 않는다.
- UDP 헤더의 체크섬 필드를 통해 최소한의 오류만 검출한다.
- TCP보다 속도가 빠르며, 빠른 요청과 응답이 필요한 실시간 응용에 사용된다.
- 데이터그램 유실이 생겨도 이어서 오는 데이터가 해당 정보를 보완해주는것들을 UDP로 전송한다.
- Ex) 캐릭터 이동 정보
- 음성, 화상데이터 전송
- 1:1, 1:N, N:N 형태의 통신이 가능하다.
- 데이터그램(메시지) 단위로 전송되며, 메시지의 크기가 어플리케이션 크기에 의해 정의된다.
- 소켓을 활용하여 IP와 PORT를 기반으로 데이터를 전송한다.
TCP(Transmission Control Protocol)
전송 계층의 통신 프로토콜 중 하나로, 전송제어를 통해 송/수신데이터가 완전히 동일함을 도장하는 프로토콜 입니다.
- 연결지향형(Connection Oriented)식으로, 1:1 통신만 가능하다.
- 흐름제어기능(Data Flow Control)을 통해 데이터 전송을 보장한다.
- 데이터가 상대방에게 정확하게 전송되는것을 보장하는 기능
- 스트림 데이터 형식으로 전송한다.
- 세그먼트(Segment)라는 IP 패킷에 넣을 수 있는 크기의 단위로 쪼개어 전송
(송신 단말기 A -> 수신 단말기 B) - IP패킷을 받으면 세그먼트를 꺼내 받은 세그먼트 응답을 송신자에게 반송
(수신 단말기 B -> 송신 단말기 A)- 해당반송 과정을 ack, acknowledge라고 한다.
- 즉, ack가 회신되지 않은 경우 상대방이 받았다는 응답이 올때까지 다시 세그먼트를 전송하여 송/수신 전송을 보장한다.
- 세그먼트(Segment)라는 IP 패킷에 넣을 수 있는 크기의 단위로 쪼개어 전송
- 패킷에 대한 응답을 하기전까지 블로킹되며, UDP에 비해 속도가 느리다.
- 연결 시 TCP 3-Way Handshake을 통해 연결을 설정한다.
- SYN : 연결을 생성할 때 클라이언트가 서버에 시퀀스 번호를 보내는 패킷
- SYN-ACK : 시퀀스 번호를 받은 서버가 ACK값을 생성하여 클라이언트에게 응답하는 패킷
- ACK : ACK 값을 사용하여 응답하는 패킷
- 연결 종료시에는 TCP 4-Way Handshake 방식을 통해 연결을 종료한다.
- FIN : 클라이언트가 연결을 종료하고 싶을 때 FIN플래그가 설정된 패킷을 전송
- ACK : 시퀀스 번호를 받은 서버가 클라이언트의 종료 요청 확인
- FIN : 서버가 종료되었음을 알림과 동시에 클라이언트에게 자신의 시퀀스 번호를 보내는 패킷
- ACK : ACK값을 확인하여 서버 종료 요청 확인하는 패킷
TCP vs UDP 비교
특성 | TCP (Stream) | UDP (Message) |
전송 단위 | 바이트 스트림 (경계 없음) | 메시지 (데이터그램, 경계 유지) |
신뢰성 | 데이터 손실, 순서 보장, 중복 방지 | 신뢰성 없음 |
연결성 | 연결형 (Connection-oriented) | 비연결형 (Connectionless) |
속도 | 느림 (추가적인 신뢰성 처리) | 빠름 (신뢰성 처리 없음) |
사용 사례 | 파일 전송, 웹 브라우징 (HTTP, FTP 등) | 실시간 스트리밍, VoIP, 게임 데이터 전송 |