저의 velog에 작성된 글은 모두 저의 주관적인 생각 및 이해를 바탕으로 작성된 글이므로
정확하지 않은 내용을 있을 수 있음을 알립니다.
[교재] Computer Networking : A Top-Down Approach 8th
저번 시간까지는 Application layer에 대한 내용을 살펴봤습니다. 오늘은 다른 주제인 Transport layer에 대한 내용을 알아보겠습니다. 저희가 이전에 알아봤던 transport protocol인 TCP, UDP에 대한 내용이 많이 나오기 때문에, 모르시는 분들은 [컴퓨터네트워킹] 07 내용을 확인하시기 바랍니다.
Transport layer는 서로 다른 host의 process가 통신하기 위해 application layer로부터 받은 내용을 port number를 통해 전달하는 과정을 거칩니다.
sender와 receiver 사이에서 message를 주고 받을 때, sender의 transport layer에서 message가 segment로 쪼개어 network를 넘어가게 되고, receiver의 transport layer에서는 넘겨 받은 segment를 다시 합쳐 application layer로 전달하게 됩니다.
이 과정에서 transport protocol은 메세지를 전달하는 방식에 따라 TCP와 UDP라는 두 가지의 protocol로 나뉘게 됩니다.
Tranport layer와 Network layer 사이에는 어떤 차이점이 존재할까요? 두 layer를 간단하게 정의해 보겠습니다.
Transport layer
processes 사이에서 통신
Network layer
hosts 사이에서 통신
hosts는 뭐고, processes는 뭐라고 이해해야 할까요?
hosts는 쉽게 말해서 client, server를 의미하는데요. 더 정확하게 말하면 같은 네트워크상에 존재하는 모든 client, server를 의미합니다.
processes는 host보다는 조금 더 구체화된 의미로 특정 client가 가지고 있는 통신 주체를 의미합니다.
이해를 돕기 위해 예시를 들어보겠습니다.
Ann의 집에 12명의 아이가 있습니다. 이 12명의 아이들은 Bill의 집에 있는 12명의 아이에게
각각 편지를 쓰려고 합니다. 여기에서 hosts, processes를 각각 의미하는 것을 뭘까요?
우선 순서는 이렇습니다. application layer에서 편지를 작성합니다. 편지를 주고 받는 통신 주체는 아이들므로, processes는 아이들이 됩니다. 이 processes가 모여있는 곳이 집이므로 같은 네트워크상에 존재하는 모든 client, server를 의미하는 hosts는 houses가 될 것 입니다.
layer의 관점으로 얘기해보면 processes 간의 소통인 아이들에서의 소통, 즉 Ann의 집과 Bill의 집이 서로 소통하는 것은 transport layer에서 일어나는 일이라고 볼 수 있고, 집을 특정하지 않고 같은 네트워크에 있는 집 간 서로 소통하는 것은 같은 network에 존재하는 hosts간의 소통이므로 network layer에서 일어나는 일이 됩니다.
정리하자면 process는 곧 client의 통신을 의미하며 이 통신은 transport layer에서 이뤄짐! hosts는 같은 네트워크 상에 존재하는 client, server 전체를 의미하고, 이들 사이의 통신은 network layer에서 이뤄진다!
추가적으로 protocol에 대한 이야기를 조금 하자면, 위의 예시에는 transport protocol은
아이들에게 편지를 나눠주는 사람이 되고, network layer protocol은 집과 집 사이에
편지를 전달해주는 postal service가 된다.
TCP와 UDP와 관련해서는 이전부터 계속 해왔지만 가볍게 특징 정리만 하고 넘어가도록 하겠습니다.
TCP
TCP는 data loss가 없고, 오는 순서대로 받는다. 또한 sender와 receiver 사이의 connection이 이뤄지기 때문에 connection을 위한 setup이 필요하다.
UDP
UDP는 data loss가 있을 수 있고, 순서가 없다. connectionless이기 때문에 별도의 connection setup이 없고, "best-effort"라는 얘기는 "최선을 다하겠지만, 보증하지는 않는다"라는 이야기다.
오늘은 가볍게 Transport layer에 대해 알아보았습니다. 이전에 많이 다뤘던 내용이라 이해하기에는 어렵지 않을 것으로 생각합니다. 다음 시간에는 Multiplexing, Demultiplexing에 대한 내용을 알아보도록 하겠습니다. 수고하셨습니다 :)