영호

[Network] Transport layer(1) 본문

Network

[Network] Transport layer(1)

0h0 2022. 7. 20. 18:09

Transport layer의 역할

  • Transport layer는 OSI 7 계층 중 4계층에 속하고 Network layer의 바로 위에 존재하는 계층입니다.
  • Transport layer는 다른 host에서 동작하고 있는 process사이의 논리적인 커뮤니케이션을 담당합니다.
    • 논리적인 커뮤니케이션은 데이터를 주고받는 과정에서 데이터의 오류 검증, 순서 보장 등의 역할을 의미합니다.
  • network core에 존재하는 router등과 같은 host에는 구현되어 있지 않고, end-system에만 구현하면 됩니다.
  • 대표적으로 TCP, UDP 프로토콜을 제공합니다.

segment
segment format

  • 위 사진과 같이 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만 보고 해당 소켓으로 보내줍니다.

Connectionless-demux
Connectionless demux

Connection-oriented demux

  • TCP 프로토콜의 방식의 연결형 demultiplexing입니다.
  • source IP, source port, destination IP, destination port 4개의 정보를 가지고 적절한 소켓을 찾아 보내줍니다.
  • 서버 측에서는 여러 개의 소켓을 만들어서 사용할 수 있습니다. 이 과정에서 각 소켓들은 source IP, port들의 정보가 다르게 연결되어 있기 때문에 각 소켓 별로 구분될 수 있습니다.

TCP-demux
TCP Demux

 

UDP

  • 데이터의 손실을 보장하지 않습니다.
  • 순서도 보장하지 않습니다.
  • 그러나, 연결 지향적이 아니기 때문에 handshaking 하는 오버헤드가 없고, 헤더 역시 TCP보다 적기 때문에 TCP보다 오버헤드가 적습니다.
  • 또한 TCP와 달리 congestion control(혼잡 제어)를 하지 않기 때문에 원하는 만큼 빠르게 패킷을 보낼 수 있습니다.
  • 헤더 각각의 필드는 2byte(16 bits)로 이루어져 있습니다.
  • 그래서 sender의 입장에서는 UDP데이터는 16bit의 integer가 나열되어 있다고 봅니다. 16bit들을 모두 더하고 1의 보수를 취해 checksum을 만듭니다.
  • receiver 역시 동일한 방법으로 checksum을 만들어 데이터의 오류를 확인합니다.
  • checksum이 다르다고 무조건 에러가 있는 것은 아니지만, 가능성이 매우 희박한 경우입니다.

udp-format
UDP format

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