본문 바로가기

Library/Computer Network

Data Communication Layers

네트워크 모델에서의 각 계층(layer)들은 상대방 계층들에 대해서만 통신하게 된다. 전송측의 해당 Application 계층은 수신측의 Application에서 자신과 짝이 맞는 계층과 통신하게 된다.

OSI 7 계층은 네트워크를 이론적으로 잘 설명하는 모델이지만, 실제 구현은 이것보다 훨씬 간략하게 되어 있다. OSI 7 계층을 그대로 구현한 프로토콜은 사실 찾아보기 힘들다. TCP/IP 프로토콜은 4계층, 혹은 5계층으로 구분하며, 특정 계층은 OSI 7 계층의 몇몇 계층의 기능을 하나의 계층으로 가지고 있다.

각 계층에서 데이터를 송수신하는 것은 우편물 보내기와 비슷한 면이 있다. 각 계층에서는, 자신에게 필요한 정보를 담은 헤더를 첨가하여 다음 계층에게 전달하는데, 이것은 내용물을 우편 봉투에 넣고 우편 봉투에 송수신 정보를 쓰는 것과 비슷하다. 각 계층은 다른 계층에서 넘어온 데이터가 우편 봉투가 있든 없든, 자신만의 우편 봉투에 그 우편물을 넣고 해당 정보를 쓴 뒤 우체통에 넣어버린다.

데이터 송수신에서, 가장 하부 단계에 있는 것은 물리 계층(Physical Layer)이다. 이 계층은 실제 전기 신호의 송수신을 담당한다. 그 다음 단계는 데이터연결 계층(Datalink Layer)인데, 이 계층에서는 데이터를 프레임(frame)으로 표현하며, 한 프레임을 다른 노드로 전달하는 책임을 진다. 데이터연결 계층은 다음 노드까지의 전송만을 책임진다. 다시 말해서, 데이터 조각을 다음 목적지까지만 보내주는 것을 보장할 뿐이며, 도착한 목적지가 자신이 원하는 목적지인지 아닌지, 데이터 조각이 순서대로 정확하게 도착했는지 따위는 상위 계층에서 확인해야 할 사항이다.

네트워크 계층(Network Layer)에서는, 자신의 데이터가 목적지까지 전송되도록 하는 역할을 한다. IP Address가 실제적으로 유효한 것은 이 계층이다. 이 계층에서는 자신의 데이터를 Packet이라 한다. 이런 전송 방식을 가리켜 Source To Destination Delivery, 혹은 Host To Host Delivery라 한다.

라우팅 과정을 거치는 과정에서는, 이 3계층까지만 데이터가 이동한다. 즉, 물리 계층에서 네트워크 계층까지만 데이터가 이동하는데, 목적지까지 데이터가 정확하게 도착했다면 그 데이터를 이용하는 것은 그 위의 상위 계층에서 이루어지게 된다. 즉, 데이터 전송은 자신이 필요한 정보라면 상위 계층에 데이터를 넘기고, 그렇지 않다면 다른 호스트에게 데이터를 넘긴다.

전송 계층(Transport Layer)에서는 어떤 일을 하는가? 전송 계층에서는, 특정 호스트의 프로세스에서 다른 호스트의 프로세스로 데이터를 전송하는 책임을 진다. 이 계층에서는 데이터를 메세지(Message) 또는 세그먼트(Segment)라 한다. 전달 받은 데이터는, 포트 번호에 의해서 해당 프로세스에게 전달된다. 프로세스는 해당 포트를 감시하고 있다가, 그 포트로 데이터가 들어오면 해당 데이터를 받아 사용하게 된다. 그래서, 이것을 Process To Process Delivery라 한다.


여담으로, 네트워크 계층에서 IP 고갈 문제는 사실 전체 주소 공간의 고갈이라기 보다는, 클래스 지정에 따른 고갈이 더 큰 문제이다. IP 주소는 클래스 별로 구분하는데, A 클래스 네트워크는 엄청난 수의 호스트를 가질 수 있지만, A 클래스를 할당받는 네트워크는 사실 많지 않다. 오히려 B 클래스나 C 클래스 네트워크가 현실적으로 더 많이 존재하며, 이들이 관리해야 하는 호스트 수가 더 많다. 즉, 클래스 지정에 따른 낭비가 발생하는 것이다. 이 문제를 해결하기 위해 CIDR(Cider라고 발음한다)라는 임시 방편의 문제가 도입되었지만, 근본적인 해결 방법은 IPv6와 같은 128 비트 주소 체계를 이용하는 것이다.