CS/Network
TCP vs UDP
징석
2021. 8. 5. 00:02
728x90
TCP vs UDP
0. Internet Protocol Suite
- TCP/IP
5 | 응용 계층 | DNS, TFTP, TLS/SSL, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, 텔넷, ECHO, 비트토렌트, RTP, PNRP, rlogin, ENRP, … |
---|---|---|
4 | 전송 계층 | TCP, UDP, DCCP, SCTP, IL, RUDP, … |
3 | 인터넷 계층 | IP (IPv4, IPv6) |
2.5 | ARP | ARP, RARP (주소 결정 프로토콜) |
1,2 | 네트워크 인터페이스 계층 | 이더넷, Wi-Fi, 토큰링, PPP, SLIP, FDDI, ATM, 프레임 릴레이, SMDS, … |
- OSI 7 계층
7 | 응용 계층 | HTTP, SMTP, SNMP, FTP, 텔넷, SSH & Scp, NFS, RTSP |
---|---|---|
6 | 표현 계층 | XDR, ASN.1, SMB, AFP |
5 | 세션 계층 | TLS, SSL, ISO 8327 / CCITT X.225, RPC, 넷바이오스, 애플토크 |
4 | 전송 계층 | TCP, UDP, RTP, SCTP, SPX, 애플토크 |
3 | 네트워크 계층 | IP, ICMP, IGMP, X.25, CLNP, ARP, RARP, BGP, OSPF, RIP, IPX, DDP |
2 | 데이터 링크 계층 | 이더넷, 토큰링, PPP, HDLC, 프레임 릴레이, ISDN, ATM, 무선랜, FDDI |
1 | 물리 계층 | 전선, 전파, 광섬유, 동축케이블, 도파관, PSTN, 리피터, DSU, CSU, 모뎀 |
1. Transportation Layer
- 4계층(OSI 7 계층)
- 다른 호스트들이 계속 네트워크에 머물도록 응용 프로세스 간의 논리적 통신을 제공한다.
- 송신자와 수신자를 연결하는 통신 서비스 제공
- 송신 호스트 : 데이터 메시지를 세그먼트로 분해하여 네트워크 계층(3계층)으로 전송한다.
- 수신 호스트 : 세그먼트들을 데이터 메시지로 재조립하여 응용 계층으로 전송한다.
- vs Network Layer
- Network Layer(네트워크 계층, 3계층) : 호스트들 간의 논리적 통신을 돕는다.
- Transport Layer(전송 계층, 4계층) : 응용 프로세스 간의 논리적 통신을 돕는다.
2. TCP
- 연결지향적 프로토콜
- 클라이언트와 서버가 연결된 상태에서 데이터를 주고 받음
- 3way handshaking
- 4-way handshaking 을 통해 연결을 해제.
- SYN - ACK 순차전달
- 전송 순서를 보장.
- 각 바이트마다 번호를 부여
- 신뢰성 있는 데이터 전달
- Flow Control
- 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
- 송신하는 곳에서 감당이 안되게 많은 데이터를 빠르게 보내 수신하는 곳에서 문제가 일어나는 것을 막는다.
- 수신자가
윈도우크기(Window Size)
값을 통해 수신량을 정할 수 있다.
- 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지
- Congestion Control
- 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지
- UDP 보다 느림
TCP 프로토콜의 작동
연결 생성 (Connection establishment)
자료 전송 (Data transfer)
연결 종료 (Connection termination)
TCP Header
Flow Control - 신뢰성 보장, 흐름 제어
- 송신측과 수신측의 데이터 처리 속도차이를 해결하기 위한 기법
- 수신측 처리속도 > 송신측 처리속도 (문제 X)
- Stop And wait
- 매번 전송한 패킷에 대해 확인 응답
- 슬라이딩 윈도우
- 수신 측에서 설정한 윈도우 크기만큼 송신 측에서 세그먼트 전송
- 데이터 흐름 동적으로 조절
Congestion Control - 혼잡 제어
- 송신측의 데이터 전달과 네트워크 처리 속도 차이를 해결하기 위한 기법
- TCP Taho, TCP Reno, TCP Vegas - 혼잡 방지 알고리즘
- 라우터는 매우 복잡하기 때문
- Slow Start
- 윈도우 크기를 2배씩 증가 -> 혼잡발생 -> 1로 감소 ->Threshold 까지 2배 -> 1씩 증가
- Fast Recovery
- 혼잡상태 발생시 반으로 감소 -> 선형 증가
3. UDP
- 데이터의 신뢰성이 없다.
- 의미있는 서버를 구축하기위해서는 일일이 패킷을 관리해주어야 한다.
- 세그먼트가 손실될 수 있고, 순서가 뒤바뀔 수 있다.
- Handshaking이 없음
- 실시간이 중요한 스트리밍 멀티미디어와 같은 응용프로그램, 도메인 네임 서버(DNS) 및 SNMP에 이용되어진다
- DNS, IPTV, VoIP, TFTP, IP터널, 온라인게임 등
UDP Header
4. TCP vs UDP
공통점
- 포트 번호 이용하여 주소 지정
- Checksum 이용하여 데이터 오류 검사
TCP | UDP | |
---|---|---|
연결 방식 | 연결 | 비연결 |
패킷 교환 방식 | 가상 회선 | 데이터그램 |
전송 순서 | 보장 | 바뀔 수 있음 |
수신 여부 | 확인 | 비확인 |
통신 방식 | 1:1 | 1:1 or 1:N or N:N |
신뢰성 | 높음 | 낮음 |
속도 | 느림 | 빠름 |
혼잡제어 | O | X |
흐름제어 | O | X |
Streaming 서비스 | 불리 | 유리 |
5. QUIC
- 현재 구글 서비스의 약 절반 정도
- Zero RTT
- UDP 사용
- HOL 블로킹 문제 해결
- HoL (Head-Of-Line) 블로킹 : 네트워크에서 같은 큐에 있는 패킷이 첫번째 패킷에 의해 지연될 때 발생하는 성능 저하 현상
- 구글 검색에서 3%로딩 시간 개선, 유튜브 30% 버퍼링 감소
ref