본문 바로가기
네트워크

Transport Layer#1 Multiplexing & Demultiplexing

by PudgeKim 2020. 11. 9.

Transport layer는 서로 다른 호스트에 있는 application processes들 간의 논리적 커뮤니케이션을 제공하는 layer이다.

물리적 기계간의 연결은 다른 layer들에게 맡기며 delay와 bandwidth을 보장하지 않는데 몇초후에 도착할지 또는 얼만큼의 대역폭을 잡을지는 Transport layer가 하는일이 아니라는 뜻이다.

 

Multiplexing과 Demultiplexing을 알아보기 위해 아래 그림을 보자.

p는 application layer들 위에서 동작하는 process들을 뜻한다. (그림에 있는 4개의 p들은 모두 각각 다른 process라고 보면 된다.)

자 이제 가운데 네모가 왼쪽과 오른쪽 네모에게 데이터를 전송한다고 가정해보자.

Multiplexing이란 가운데 네모(데이터를 주는 입장)에서 Transport layer가 socket으로부터 각 process들이 보낸 데이터를 받으면 transport header를 달아서 하위 layer로 보내는걸 뜻한다.

Demultiplexing이란 왼쪽과 오른쪽 네모에서(데이터를 받는 입장) Transport layer가 하위 layer로부터 데이터(패킷)를 받으면 header의 정보를 보고 알맞은 socket으로 건네주는걸 뜻한다.

 

그럼 위에서 말한 헤더란 뭘까?

헤더란 데이터를 보내기위해 그 데이터가 어디서 왔고 어디로 가야하는지에 대한 정보와 그 외 여러 정보를 포함하는데 payload는 실제 데이터의 내용이 들어있는 곳이고 그 위로는 헤더이다.

오늘 알아볼건 source port number와 destination port number인데 직관적으로 알 수 있듯

source port number는 어디서 왔는지,

dest port number는 어디로 보내는지를 나타낸다.

 

다시 3개의 네모가 그려진 그림을 보자. 왼쪽과 오른쪽은 데이터를 받는 입장이라고 했다.

그리고 그림에서는 process를 하나만 그렸지만 실제로는 많은 process들이 있다. (우리는 유튜브를 보면서 인터넷 서핑도 하니까) 그럼 그 많은 process들중 알맞은 process들에게 데이터를 주기 위해 transport layer에서 header를 까보고 port number를 알아내서 알맞은 socket에 전달하면 데이터가 잘 전달되게 되는 것이다.

'네트워크' 카테고리의 다른 글

네트워크 NAT란?  (0) 2020.12.07
네트워크 인터넷과 여러 계층들  (0) 2020.12.06
네트워크 switching fabrics  (0) 2020.11.28
네트워크 라우팅  (0) 2020.11.28
Transport Layer#3 Go-Back-N  (0) 2020.11.09