전송 계층
- 연결 지향 데이터 스트림 지원
- 신뢰성
- 흐름 제어
- 다중화
와 같은 편리한 서비스를 제공한다.
전송 프로토콜 중 가장 잘 알려진 것은 연결 지향 전속 방식을 사용하는
TCP
이다.보다 단순한 전송에서 사용되는
UDP
도 있다.TCP


연결을 생성하기 위해, 3방향 핸드셰이크를 사용한다.
SYN: 클라이언트가 서버에게 SYN 메시지를 보낸다. 이 메시지에 포함된 시퀀스 번호는 클라이언트가 임의로 설정한 값 A. , window size 를 함께 서버로 보냄
SYN-ACK: 서버가 클라이언트에게 SYN-ACK 메시지로 응답한다. 이 메시지에 포함된 시퀀스 번호는 서버가 임의로 설정한 값 B, 응답 번호는 (A + 1). window size 에 여유가 있으면 전송, 없으면
wait
ACK: 클라이언트가 서버에게 ACK 메시지를 보낸다. 이 메시지에 포함된 응답 번호는 (B + 1).
SEQ 번호 교환
MSS (Maximum Segment Size) 교환
혼잡제어와 관련된 정책 교환
연결 종료
연결을 종료하기 위해, 4방향 핸드셰이크를 사용한다.
UDP
UDP의 전송 방식은 너무 단순해서 서비스의 신뢰성이 낮고, 데이터그램 도착 순서가 바뀌거나, 중복되거나, 심지어는 통보 없이 누락시키기도 한다. UDP는 일반적으로 오류의 검사와 수정이 필요 없는 애플리케이션에서 수행할 것으로 가정한다.
UDP를 사용하는 네트워크 애플리케이션에는 도메인 이름 서비스 (DNS), IPTV, 음성 인터넷 프로토콜 (VoIP), TFTP, IP 터널, 그리고 많은 온라인 게임 등이 있다.
UDP vs TCP
GeeksforGeeks - Differences between TCP and UDP
Basis | TCP | UDP |
서비스 타입 | 연결 지향 프로토콜
연결 지향이란 데이터를 주고받기 전과 후에 연결을 수립하고 끊는 과정이 있어야 한다는 것을 의미 | 데이터그램 지향 프로토콜
연결을 맺느 유지, 종료하는 것에 대한 오버헤드가 없음
방송과 multicast 타입의 네트워크 전송에 효율적임 |
신뢰성 | TCP 는 목적지 라우터로의 데이터 전송에 신뢰성을 보장함 | UDP 는 목적지로의 데이터 전송에 대한 신뢰성을 하지 않음 |
에러 체킹 | TCP 는 흐름 제어와 ack, checksum 을 통해 에러 체킹을 지원함 | UDP 는 Basic 한 checksum 방식의 에러 체킹만을 제공함 |
ack | Acknowledgment 세그먼트가 있음 | Acknowledgment 세그먼트가 없음 |
sequence | TCP 에서는 메시지가 보내진 순서를 보장함 | UDP 에서는 메시지 도착 순서를 예측할 수 없음
필요하다면 application 계층에서 제공해야함 |
속도 | UDP 보다 느림 | TCP 보다 빠름 |
재전송 | 잃어버린 packet 에 대한 재전송 가능 | 재전송 기능 없음 |
크기 | 무거움, 헤더 : 20~60 바이트 | 가벼움, 헤더 : 8 바이트 고정 |
Handshake | 연결 수립, 종료시 SYNm ACK, SYN-ACK 같은 Handshake 가 일어남 | UDP는 connectionless protocol 임
i.e. No handshake! |
Protocols | TCP is used by HTTP, HTTPS, FTP, SMTP … | UDP is used by DNS, DHCP, VoIP |
Stream Type | byte stream | message stream |
Overhead | UDP 보다 큼 | 낮음 |