영호
[Network] Transport layer(1) 본문
Transport layer의 역할
- Transport layer는 OSI 7 계층 중 4계층에 속하고 Network layer의 바로 위에 존재하는 계층입니다.
- Transport layer는 다른 host에서 동작하고 있는 process사이의 논리적인 커뮤니케이션을 담당합니다.
- 논리적인 커뮤니케이션은 데이터를 주고받는 과정에서 데이터의 오류 검증, 순서 보장 등의 역할을 의미합니다.
- network core에 존재하는 router등과 같은 host에는 구현되어 있지 않고, end-system에만 구현하면 됩니다.
- 대표적으로 TCP, UDP 프로토콜을 제공합니다.
- 위 사진과 같이 process 간의 논리적 커뮤니케이션을 담당하기 때문에 헤더에 source port, destination port정보가 붙습니다.
Sender의 역할
- sender의 입장에서는 Appliction layer로부터 받은 메시지를 segment단위로 쪼개서 Network layer에 전달합니다.
Receiver의 역할
- receiver는 Network layer로부터 받은 패킷을 segment로 합쳐 Application layer에 전달합니다.
Multiplexing
- Sender의 입장에서 하는 기능으로 메시지에 segment헤더를 붙이는 과정입니다.
Demultiplexing
- Network layer로부터 받은 패킷의 segment헤더의 source port, destination port정보를 보고 올바른 소켓으로 메시지를 전달합니다.
Connectionless demux
- UDP프로토콜에서 사용되는 demultiplexing입니다.
- host가 UDP세그먼트를 받게 되면 destination port만 보고 해당 소켓으로 보내줍니다.
Connection-oriented demux
- TCP 프로토콜의 방식의 연결형 demultiplexing입니다.
- source IP, source port, destination IP, destination port 4개의 정보를 가지고 적절한 소켓을 찾아 보내줍니다.
- 서버 측에서는 여러 개의 소켓을 만들어서 사용할 수 있습니다. 이 과정에서 각 소켓들은 source IP, port들의 정보가 다르게 연결되어 있기 때문에 각 소켓 별로 구분될 수 있습니다.
UDP
- 데이터의 손실을 보장하지 않습니다.
- 순서도 보장하지 않습니다.
- 그러나, 연결 지향적이 아니기 때문에 handshaking 하는 오버헤드가 없고, 헤더 역시 TCP보다 적기 때문에 TCP보다 오버헤드가 적습니다.
- 또한 TCP와 달리 congestion control(혼잡 제어)를 하지 않기 때문에 원하는 만큼 빠르게 패킷을 보낼 수 있습니다.
- 헤더 각각의 필드는 2byte(16 bits)로 이루어져 있습니다.
- 그래서 sender의 입장에서는 UDP데이터는 16bit의 integer가 나열되어 있다고 봅니다. 16bit들을 모두 더하고 1의 보수를 취해 checksum을 만듭니다.
- receiver 역시 동일한 방법으로 checksum을 만들어 데이터의 오류를 확인합니다.
- checksum이 다르다고 무조건 에러가 있는 것은 아니지만, 가능성이 매우 희박한 경우입니다.
TCP
- 데이터의 손실이 없는 것을 보장해줍니다.
- 데이터들의 순서를 보장해줍니다.
- '100ms 안에 전송해준다' 같은 타이밍을 제공하지 않습니다.
- 보안적인 기능도 제공하지 못합니다.
- 보안적인 부분은 Securing TCP가 따로 있습니다.
- TCP에 대한 자세한 내용을 다음 포스팅에서 다루겠습니다.
출처
https://www.imperva.com/learn/ddos/udp-user-datagram-protocol/
'Network' 카테고리의 다른 글
[Network] Transport layer(2) - TCP reliable data transfer (0) | 2022.07.22 |
---|---|
[Network] DNS(Domain Name System) (0) | 2022.07.16 |
Comments