목차
- 프로토콜이란?
- TCP란?
- UDP란?
- TCP와 UDP 비교
- TCP 헤더와 UDP 헤더
- DNS가 UDP 프로토콜을 사용하는 이유
1. 프로토콜이란?
프로토콜은 네트워크 상에서 데이터를 주고받기 위한 데이터에 대한 통신 규약을 의미한다. OSI 7계층에서 각 계층에서 사용되는 프로토콜 종류가 다르며, 그중 TCP와 UDP는 전송 계층에서 사용되는 프로토콜이다.
계층 | 프로토콜 |
애플리케이션 계층 | HTTP, FTP, SMTP, POP3, IMAP, Telnet, DNS 등 |
프레젠테이션 계층 | SSL, ASCII, JPEG 등 |
세션 계층 | NetBIOS, RPC 등 |
전송 계층 | TCP, UDP, RTP 등 |
네트워크 계층 | IP, ICMP, IPSec 등 |
데이터링크 계층 | Ethernet, WIFI, PPP 등 |
물리 계층 | 없음 |
2. TCP(Transmission Connection Protocol)란?
TCP는 연결 지향적인 프로토콜이다. 데이터를 송수신할 두 개의 컴퓨터가 TCP 연결을 수립하고, 데이터가 전달됨에 있어 신뢰성을 보장한다. 데이터를 요청하는 쪽을 클라이언트, 데이터를 보내는 쪽을 서버라고 할 때, 클라이언트와 서버가 각각 1대 1로 연결되어야 한다.
(특징)
- 클라이언트와 서버가 1:1로 연결 지향적임
- 전이중(양방향) 통신
- 3-way handshaking과 해제
- 흐름 제어 : 데이터 전송 속도 및 크기 제어
- 오류 제어 : 데이터 유실 확인 및 재전송
- 혼잡 제어 : 네트워크 트래픽 제어
- 데이터에 대한 신뢰성 보장
(단점)
- UDP에 비해 상대적으로 속도가 느림
3. UDP(User Datagram Protocol)란?
UDP는 비연결 지향적인 프로토콜이다. 3-way handshaking 과정을 거치지 않고, 흐름 제어와 혼잡 제어 기능을 제공하지 않기 때문에, TCP와 비교했을 때 신뢰성이 낮고 빠르다는 특징을 가진다. 따라서 스트리밍과 같은 실시간 서비스를 제공하는 통신에 적합한 프로토콜이다.
한 가지 확실하게 짚고 넘어가야 할 것은 UDP는 흐름 제어와 혼잡 제어를 제공하지 않지만 오류 제어는 일부 기능을 제공하고 있는 것이다. UDP 헤더 내 checksum을 통해 오류를 탐지할 수 있지만, 오류가 발생한 데이터에 대한 재전송을 요청할 수는 없으므로 손실된 데이터는 무시된다.
(특징)
- 비연결 지향적임
- 1:1, 1:N, N:1 통신 모두 가능
- TCP에 비해 상대적으로 속도가 빠름
(단점)
- 데이터에 대한 신뢰성 보장하지 않음
4. TCP와 UDP 비교
TCP | UDP | |
연결 방식 | 연결 지향적 | 비연결 지향적 |
패킷 교환 | 가상 회선 방식 | 데이터그램 방식 |
전송 순서 | 보장 O | 보장 X |
전송 속도 | 느림 | 빠름 |
흐름 제어 | O | X |
오류 제어 | 오류 확인 O, 재전송 O | 오류 확인 O, 재전송 X |
혼잡 제어 | O | X |
프로토콜 | HTTP, HTTPS, FTP, SMTP, IMAP, POP3 등 | DNS, VoIP 등 |
5. TCP 헤더
- Source Port : 출발지 Port 번호
- Destination Port : 목적지 Port 번호
- Sequence Number : 데이터 순서 번호
- Acknowledgement Number : 수신한 데이터의 바이트를 응답해 다음에 송신해야 할 바이트 번호를 확인
- Data Offset : TCP 세그먼트 헤더의 길이 (데이터의 시작 위치를 의미함)
- Flags : ACK, RST, SYN, FIN
- Window Size : 송수신되는 데이터의 크기
- Checksum : 데이터에 대한 오류 검사
6. UDP 헤더
- Source Port : 출발지 Port 번호
- Destination Port : 목적지 Port 번호
- Length : UDP 데이터그램 길이
- Checksum : 데이터에 대한 오류 검사
7. DNS가 UDP 프로토콜을 사용하는 이유
네트워크 상에서 다른 컴퓨터와 데이터를 주고받을 때 IP 주소와 MAC 주소를 이용한다. 하지만 우리가 google.com이라는 도메인 네임을 검색했을 때 어떻게 IP 주소와 매핑되고 연결을 확립해 데이터를 송수신될 수 있는 걸까?
그건 바로 DNS 덕분이다. DNS는 애플리케이션 계층에서 사용되는 프로토콜로, 사람이 쉽게 읽을 수 있는 웹사이트 이름을 IP 주소로 변환하거나, IP 주소를 웹사이트 이름으로 변환하는 기능을 한다.
DNS는 매우 빠른 응답 시간이 중요하다. 전 세계 수많은 클라이언트가 도메인 네임에 대한 IP 주소 변경을 요청할 것이고, 서버는 도메인 네임을 IP 주소로 변경한 데이터를 포함해 응답할 것이다. 응답을 제대로 전달됐다면 클라이언트와 서버는 더 이상의 연결을 지속할 필요가 없으므로, 결국에는 빠른 속도와 비연결성이라는 특징을 가진 UDP 프로토콜을 사용하는 것이다.
댓글