[컴퓨터네트워킹] 16. Multiplexing, Demultiplexing

Yoons·2023년 4월 11일
0
post-thumbnail

❗️Notice❗️

저의 velog에 작성된 글은 모두 저의 주관적인 생각 및 이해를 바탕으로 작성된 글이므로 
정확하지 않은 내용을 있을 수 있음을 알립니다.

[교재] Computer Networking : A Top-Down Approach 8th

오늘은 Multiplexing과 Demultiplexing에 대해 알아보겠습니다.

1. Multiplexing and Demultiplexing

Multiplexing

Multiplexing은 sender와 receiver가 n:1 관계를 가지는 것을 말합니다. 다시 말해
여러 명이 한 명에게 메세지를 보내는 것과 같습니다.

Demultiplexing

Demultiplexing은 serder와 receiver가 1:n 관계를 가지는 것을 말합니다. 다시 말해
한 명이 여러 명에게 메세지를 보내는 것과 같습니다.

즉 이번 챕터에서는 UDP와 TCP라는 상황에 맞춰 한 명이 여러 명에게 메세지를 보낼 때, 여러 명이 한 명에게 메세지를 보낼 때 어떤 과정이 이뤄지는지 알아보는 것이 포인트입니다.

(참고 : 교재에서는 Multiplexing 보다 Demultiplexing에 더 무게를 두어 설명하고 있습니다.)


2. Demultiplexing in UDP

UDP에서 Demultiplexing이 어떻게 이뤄지는지 알아보기 전에 용어에 대한 내용을 설명해 드리겠습니다.

각각의 layer를 지날 때마다 새로운 header value가 붙음에 따라 packet의 용어가 바뀌는데요. 용어는 다음과 같습니다.

Application layer - message
Transport layer - segment (message + destination port #)
Network layer - datagram (segment + destination IP address)
Link layer - frame

TCP와 UDP의 공통사항으로 먼저 본인(sender)의 socket을 열고 보내기 때문에, 자신의 port #를 적게 됩니다. 예를 들면 다음과 같습니다.

DatagramSocket mySocket1 = new DatagramSocket(12543)
(12543 : 자신의 port number)

우선 UDP는 connection도 없이 그냥 data를 보내기만 하기 때문에, 많은 정보를 요구하지 않습니다. 따라서 UDP에서 datagram을 생성할 때 destination IP, port # 만 있으면 됩니다. 그냥 주소를 알고 그저 보내면 되기 때문이죠.

이 메세지를 받은 receiver는 메세지를 받고 datagram의 destination IP와 segment의 destination port #를 보고 "나한테 오는게 맞구나"를 확인하고 application으로 올려보냅니다.

위의 그림은 UDP에서 multiplexing과 demultiplexing을 보여줍니다. 여기서 눈 여겨 봐야할 점은 여러 명에게 메세지를 받음에도 불구하고 하나의 socket으로 전달받는다는 점입니다. 이것이 가능한 이유는 socket programming의 내용을 참고하면 되는데, 각각의 client는 OS가 임의로 정한 port id가 있기 때문에 여러명이 보내도 분리할 수 있다.


3. Demultiplexing in TCP

TCP는 connetion을 하기 때문에 connetion setup 과정에서 필요한 정보가 있다.

  • source IP address
  • source port number
  • dest IP address
  • dest port number

UDP와는 달리 source IP와 port number가 추가적으로 필요한데, 이것은 connection을 위해 필요하다.

위의 사진은 TCP에서 multiplexing과 demultiplexing을 보여준다. UDP와의 큰 차이점은 receiver가 각각의 sender에 대해 별도의 socket을 생성한다는 것이다. 이 또한 TCP socket programming의 내용을 보면 이해가 가능하다.
(socket programming은 [컴퓨터네트워킹] 14에 있습니다.)

메세지를 받을 때 4개의 값을 모두 이용해서 어떤 socket으로 보낼지를 결정한다.


4. Summary

내용을 정리하자면 UDP에서의 demultiplexing은 destination port number만 사용하고, TCP에서의 demultiplexing은 4개의 값을 모두 이용한다. 또한 multiplexing과 delmultiplexing은 모든 layer에서 이뤄진다.


마치며

오늘은 TCP, UDP에서의 multiplexing과 demultiplexing에 대해 알아보았습니다. 다음 시간에는 UDP에 대해서 심도 있게 배워보도록 하겠습니다. 수고하셨습니다 :)

profile
모든 글은 저의 눈물을 머금으며 작성한 글이니..재밌게 봐주세요 :) 깃헙 맞팔@

0개의 댓글