Layering에 대해서 알아보자.
Layer 는 '층'이라는 의미를 갖는다.
네트워크에서 레이어는 각각의 서비스를 실행하는 층을 의미한다.
인터넷 프로토콜의 레이어는 스택 구조로 되어 있고, 5개의 레이어가 존재한다.
이렇게 5개의 레이어가 존재하며 각각의 역할이 다르다.
Application Layer
는 네트워크 어플리케이션을 돕는 역할을 한다.
Http, IMAP, SMTP, DNS등이 이 레이어에 속한다.
Transport Layer
는 프로세스 간의 데이터 전송을 다룬다.
대표적으로 TCP와 UDP가 있다.
사용자의 휴대폰에 어떤 패킷이 도착했다고 가정하자. 이 패킷은 물론 목적지가 사용자의 휴대폰이었을 것이다. 하지만 휴대폰에서 패킷이 필요한 곳은 다양하다. Transport 레이어는 이 중 어떤 application으로 이 패킷이 가야 하는지를 결정하는 역할을 한다.
메일, 게임, 카카오톡 등등 다양한 어플리케이션 중, 이 패킷의 정확한 목적지를 결정하는 것을 담당하는 것이다.
Network Layer
는 'datagram'의 시작점부터 목적지까지의 routing을 담당한다.
IP와 routing protocold이 속한다.
사용자가 데이터를 보내고 싶은 대상 중 대부분은 라우터를 거치지 않는 대상은 많지 않을 것이다. A라는 컴퓨터가 B라는 컴퓨터와 라우터를 거쳐서 연결되어 있다고 할 때, A라는 컴퓨터에서 B로 데이터를 보내고 싶다면 A는 패킷에 B의 주소를 쓰는 것이 아니라 라우터의 물리적 주소를 작성한다. 이때 이 패킷의 목적지가 B인지, 라우터인지 알아내는 것이 네트워크 레이어의 역할이며, IP주소를 통해 할 수 있다.
Link Layer
는 neighboring network elements들 간의 데이터 전송을 담당한다.
Ethernet, WiFi, PPP등이 있다.
만약 근처에 연결되어 있는 (neighboring network elements)들 간의 통신에서, 누가 데이터를 전송하고 누가 받을지, 어떤 노드가 지금 데이터를 보낼 것인지 등의 문제를 해결하게 된다.
이를 Medium Access Control(MAC)
이라고 한다.
노드들에는 MAC Address(=Physical Address)가 부여되어 있는데, 이는 겹치지 않는다.
MAC Address를 통해 neighboring network elements들에게 정보를 전송할 때 목적지를 설정하게 된다.
Physical Layer
는 wire에 올라가는 것들에 대한 것을 담당하며,
네트워크 카드, 구리선 등의 물리적인 것들에 대한 규정과 전송 속도, link bandwidth등이 속한다.
Encapsulation
은 '캡슐화'라는 의미를 지닌다.
5개의 레이어를 거치며 데이터는 '캡슐화'된다.
처음에 존재하던 Message 'M'으로 시작해 각각의 단계를 거치며 M 앞에 헤더가 붙는다.
사진에서 볼 수 있듯이 각 레이어를 지날 때마다 정보들이 불리는 이름이 달라진다.
Application 레이어를 지나면 message
,
Transport 를 지난 뒤 segment
,
Network를 지난 뒤 datagram
,
Link를 지난 뒤엔 frame
이라는 이름으로 불리게 된다.
Packet
은 네트워크를 타고 다니는 데이터의 chunk이며, 모든 레이어에서 사용 가능한 용어이다.
다음 사진은 메시지 M이 각 레이어를 거치며 앞에 헤더가 붙게 되는 것을 보여준다.
H옆에 붙은 작은 알파벳으로 어떤 계층인지 눈치 챌 거라 생각한다.