Transport Layer
전송 계층
- 전송계층(Layer-4)의 프로토콜로는 크게, TCP, UDP, SCTP가 있다.
- 이들 프로토콜은 네트워크 계층(Layer-3)의 IPv4 혹은 IPv6 프로토콜을 이용한다.
- Raw Socket이란, Layer-5(Application)이 Layer-4를 건너뛰고, Layer-3의 서비스를 이용하는 구조의 소켓을 의미한다.
- Client-Server Program은 보통 TCP 혹은 UDP를 이용한다.
- SCTP는 본래 인터넷을 통한 전화 서비스를 위해 설계되었다.
TCP (Transmission Control Protocol) (URL)
- 복잡하고, 신뢰도가 높은 Connection-Oriented Protocol이다.
- Full-Duplex Byte-Stream Protocol이다.
- TCP는 또한, Acknowledgment(ACK), TImeout, Re-Transmission과 같은 서비스를 제공한다.
- TCP는 UDP와 같이, IPv4 혹은 IPv6를 이용한다.
- TCP Socket = Stream Socket
UDP (User Datagram Protocol) (URL)
- 간단하고, 신뢰도가 낮은 Connectionless Protocol이다.
- UDP 프로토콜에서는 Datagram이 목적지에 도달한다는 보장이 없다.
- UDP 또한, TCP와 같이 IPv4 혹은 IPv6를 이용한다.
- UDP Socket = Datagram Socket
- UDP Client는 하나의 소켓으로 다수의 서버에게 Datagram을 전송할 수 있다.
- UDP Servevr 또한, 하나의 소켓으로 각기 다른 Client로부터의 여러 Datagram을 수신할 수 있다.
SCTP (Stream Control Transmission Protocol)
- Reliability 수준은 TCP와 유사한, Connection-Oriented Protocol이다.
- Full-Duplex Association이다.
("Association"이란, SCTP에서의 "연결"을 의미한다.)
- SCTP는 Message Boundary, Multihoming(다중연결), Minimize Head-of-Line Blocking와 같은 추가적인 서비스를 제공한다.
- TCP, UDP와 같이 SCTP도 IPv4 혹은 IPv6를 이용하며, 같은 Association에서 IPv4와 IPv6를 동시에 이용할 수도 있다.
Port Numbers (포트번호)
- Application Layer(L5)의 Service 종류를 결정짓는, Transport Layer(L4)에서 지정되는 번호이다.
ex) Port Number 13 = Daytime Service
- 같은 서비스라도, OS나 RFC마다 포트번호가 다른 부분이 있다.
(BSD와 IANA는 포트번호 Range가 약간 상이하다.)
- Kernel 권한이 없으면(Root 권한이 없으면),
Well-Known Port Numbers(Reserved Port Numbers)를 사용하는 Application을 만들 수 없다.
(Kernel이 Well-Known Port Numbers를 사용하는 소켓 생성을 허용하지 않는다.)
* TCP/UDP Port Numbers (URL)
Reference: UNIX Network Programming Volume 1, 3E: The Sockets Networking API (W. Richard Stevens, Bill Fenner, Andrew M. Rudoff 저, Addison-Wesley, 2004)