여러 링크를 통하여 전달해야 하는 문제를 해결하기 위하여 네트워크층이 설계되었다. 네트워크층은 호스트-대-호스트 전달과 라우터를 통한 패킷 라우팅(경로지정)을 수행한다. 이 장에서는 네트워크층에 대한 개요를 설명하고 네트워크층이 필요한 이유와 관련된 문제점들을 설명한다.
개념적인 수준에서 전체 인터넷은 수백만 대의 컴퓨터를 연결하는 블랙박스 네트워크로 생각할 수 있다. 이 개념적인 수준에서 한 컴퓨터 내의 응용층에서 다른 컴퓨터의 응용층까지 메시지가 전달되는 것에만 관심이있다. 이는 다음 그림과 같이 생각할 수 있다.
그러나 인터넷은 하나의 네트워크로 구성된 것이 아니고 연결 장치를 통하여 연결된 수많은 네트워크(또는 링크)로 구성된다. 즉, 인터넷은 LAN과 WAN들의 조합인 네트워크들이 서로 연결된 네트워크이다. 다음 그림은 적은 수의 네트워크와 연결 장치로 구성된 가상의 작은 인터넷을 보여준다.
이 모델에서 라우터와 같은 연결 장치는 교환기로서 작동한다. 패킷이 라우터의 한 포트(또는 인터페이스)에 도착하면 이 패킷은 다른 포트를 통하여 다음 교환기(또는 최종 목적지)로 전달(Foward)된다. 다시 말하면 교환(switching)이라는 과정이 연결 장치에서 수행된다.
앞에서 살펴 보았듯이 메시지를 발신지에서 목적지까지 전달하는 과정에는 많은 결정이 이루어진다. 메시지가 연결 장치에 도착하면 패킷을 송신하는 출력 포트를 결정해야한다. 다시 설명하면 연결 장치는 한 포트를 다른 포트에 연결하는 교환기 역할을 한다.
교환에 대한 한 가지 해결책은 회선 교환(Circuit Switching)이라고 한다. 회선교환에서는 메시지 전달 전에 발신지와 목적지 사이에 물리 회선(또는 채널)이 생성된다. 회선이 생성된 후 전체 메시지가 발신지에서 목적지로 전달된다. 발신지는 메시지 전달이 완료되면, 이를 네트워크에 통보해서 네트워크가 다른 연결을 위하여 사용할 수 있게 한다. 회선 교환은 네트워크층에서는 구현되지 않고 대부분 물리층에서 사용된다.
교환에 대한 두 번째 해결책은 패킷 교환(packet switching)이다. 오늘날 인터넷의 네트워크층은 패킷 교환망이다. 이 네트워크에서는 상위 계층의 메시지가 관리 가능한 크기의 패킷으로 분할되고 각 패킷이 네트워크를 토앟여 전달된다. 메시지 발신지는 패킷을 한 개씩 송신하고 목적지는 한 개씩 수신한다. 목적지는 같은 메시지에 속하는 모든 패킷이 도착하면, 메시지를 상위 계층으로 전달한다. 패킷 교환망의 연결 장치는 패킷을 최종 목적지까지 어떻게 보낼 것인지 결정해야 한다. 오늘날 패킷 교환망은 데이터그램과 가상 회선을 사용하여 패킷을 보낸다.
네트워크층은 패킷 교환망으로 설계되어 있다. 이는 발신지에서 메시지가 데이터그램(datagram)이라는 관리 가능한 크기의 패킷들로 분할된다는 것을 의미한다. 각 데이터그램이 발신지에서 목적지로 전달된다. 수신된 데이터그램은 목적지에서 재조립되어 원래의 메시지를 다시 생성하게 된다. 인터넷의 패킷 교환 네트워크층은 원래 비연결형 서비스(connectionless service)로 설계되었으나 최근에 연결형 서비스(connection-oriented service)로 전환되고 있다.
인터넷이 설계되었을 때 네트워크층은 비연결형 서비스를 제공하도록 설계 되었는데 이 서비스에서 네트워크층은 각 패킷을 상호 독립적으로 다룬다. 한 메시지 내의 패킷은 목적지까지 같은 경로로 전송될 수도 있고 아닐 수도 있다. 인터넷이 시작 되었을 때 네트워크층을 간단하게 비연결형 서비스로 설계하였다. 주된 개념은 네트워크층은 발신지에서 목적지까지 패킷 전달만을 책임진다는 것이다. 다음 그림에 이 개념이 나와있다.
네트워크층이 비연결형 서비스를 제공하는 경우 인터넷에서 전달되는 패킷은 독립적인 개체가 되고, 같은 메시지에 속한 패킷 사이에 아무러 관계가 없다. 이 네트워크 내의 교환기를 라우터(router)라고 한다. 한 메시지에 속한 패킷 뒤에 같은 메시지에 속한 다른 패킷이 따라올 수도 있고 다른 메시지에 속한 패킷이 따라올 수도 있다.
각 패킷은 헤더에 속한 발신지 주소와 목적지 주소를 기반으로 전달된다. 목적지 주소는 어디로 갈 것인지를 결정하고 발신 주소는 어느 곳에서 패킷이 왔는지를 알려준다. 이 경우에 라우터는 목적지 주소를 기반으로 패킷을 전달한다. 패킷이 페기되는 경우 발신지 주소를 사용하여 발신지에 오류 메시지를 보낼 수 있다. 다음 그림은 이 경우 라우터에 전달되는 과정을 보여준다.
연결형 서비스에서 한 메시지에 속한 모든 패킷 사이에는 관계성이 있다. 한 메시지에 속한 모든 데이터그램이 송신되기 전에 데이터그램의 경로를 나타내는 가상회선(virtual circuit)이 생성되어야 한다. 연결이 생성된 후 데이터그램은 같은 경로를 따라 전달된다. 연결형 서비스의 경우 패킷은 발신지 주소, 목적지 주소와 함께 패킷이 전달되는 가상 회선을 지정하는 가상 회선 식별자(virtual circuit identifier)인 흐름 레이블(flow label)도 가지고 있어야 한다. 다음 그림은 연결형 서비스의 개념을 보여준다.
각 패킷은 패킷 내의 레이블을 기반으로 전달된다. 인터넷에서 사용되는 연결형 설계 개념에 따라 라우터에 도착하는 패킷은 레이블을 가지고 있다고 가정한다. 다음 그림은 이러한 개념을 보여준다. 이 경우 전달 결정은 레이블(가상 회선 식별자라고도 함) 값을 기반으로 이루어진다. 연결형 서비스를 생성하기 위해 연결 설정(setup), 데이터 전송(data transfer)과 연결 해제(teardown)로 구성된 세 단계 과정이 사용된다. 설정 단계에서 송신자와 수신자의 발신지와 목적지 주소를 사용하여 연결형 서비스를 위한 테이블 엔트리를 생성한다. 연결 해체 단계에서 발신지와 목적지는 라우터에게 해당하는 엔트리를 삭제하라고 통보한다. 데이터 전송은 이 두 단계 사이에 수행된다.
이 절에서는 네트워크층에서 제공되는 서비스를 소개한다. 설명은 오늘날 인터넷에서 주로 사용되는 비연결형 서비스를 기반으로 한다.
위 그림에서 한국 출판사에서 근무하는 철수가 꽃가게인 크로이플라워사의 관리자인 영희에게 꽃가게 광고 책자가 프린트되어 배달될 준비가 되었음을 알리기 위해 메시지를 보내려 한다고 가정한다. 한국출판사는 LAN을 사용하고, 이 LAN은 케이블 WAN을 이용하여
BestNet이라는 지역ISP에 연결되어 있다. 코리아플라워사도 LAN을 이용하는데, 이 LAN은 DSL WAN을 통하여 ServeNet이라는 다른 지역의 ISP에 연결되어 있다. 이 두 지역 ISP는 고속 SONET WAN을 통하여 국가 ISP에 연결되어 있다. 철수가 영희에게 보내는 메시지는 여러 개의 네트워크층 패킷으로 분할될 수 있다. 뒤에서 살펴보듯이 패킷들은 같은 경로를 따라 전송될 수도 있고 그렇지 않을수도 있다. 두 컴퓨터는 TCP/IP 프로토콜 그룹중 다섯 계층에 관여하고 라우터들은 세 계층에 관여한다.
네트워크층은 종단-대-종단(end-to-end) 통신을 제공하므로 상호 통신하는 두 컴퓨터는 네트워크층 주소 또는 논리 주소라는 인터넷 공통의 식별자 시스템이 필요하다. 이 유형의 식별자 시스템은 균일하고 전역적인 주소 시스템을 통하여 네트워크층에서 제공된다. 인터넷은 주소 공간을 사용한다. 인터넷을 사용하는 각 개체는 모두 주소 공간에서 유일한 주소를 할당받는다.
발신지 컴퓨터의 네트워크층에서는 총 4개의 서비시를 제공하는데, 이는 패킷화, 다음홉 논리 주소 찾기, 다음홉 물리(MAC) 주소 찾기, 필요한 경우 데이터그램 단편화다. 다음 기림은 이 서비스들을 보여준다.
네트워크층은 상위 계층으로부터 데이터, 데이터 길이, 목적지 논리 주소, 프로토콜 ID(네트워크층을 사용하는 프로토콜 식별자), (뒤에서 설명될) 서비스 유형 정보들을 받는다. 네트워크층은 이 정보들을 처리하여 단편화된 데이터그램과 다음 홉의 MAC 주소를 생성한 후 이를 데이터 링크층에 전달한다.
앞에서 언급한 바와 같이 라우터에서 한 개의 데이터그램 전달을 위하여 입력 인터페이스와 출력 인터페이스가 관여한다. 그러므로 라우터의 네트워크층은 입력 인터페이스의 데이터 링크층과 출력 인터페이스의 데이터 링크층과 상호 작용해야 한다. 네트워크층은 입력 인터페이스의 데이터 링크층으로부터 데이터그램을 받아 필요한 경우 단편화를 수행한 후 출력 인터페이스의 데이터 링크층에 단편들을 전달해야한다. 라우터는 일반적으로 상위 계층에 관여하지 않는다. 아래 그림은 네트워크층에서 라우터에 의해 제공되는 서비스를 보여준다.
다음 홉의 논리 주소 찾기, 다음 홉의 MAC 주소 찾기 그리고 단편화 과정은 발신지에 대한 설명에서 언급된 마지막 세 과정과 같다. 그러나 이 과정을 적용하기 전에 라우터는 검사합을 사용하여 데이터그램의 요효성을 검증해야 한다. 유효성 검사란 데이터그램 헤더가 훼손되지 않았고 데이터그램이 올바른 라우터에 전달되었음을 확인하는 것이다.
목적지 컴퓨터의 네트워크층은 간단하다. 전달(포워딩)은 더이상 필요없다. 그러나 목적지 컴퓨터는 데이터를 목적지에 전달하기 전에 단편들을 조립할 필요가 있다. 각 데이터그램의 요효성을 검증한 후 각 단편에서 데이터를 추출하고 저장한다. 모든 단편이 도착하면 데이터가 재조립되고 상위 계층에 전달한다. 네트워크층은 재조립 타이머를 설정한다. 만약 타이머가 만료되면 모든 데이터 단편은 폐기되고 모든 단편을 재전송해야 한다는 오류 메시지가 전송된다. 이 과정은 아래 그림에 나타나 있다. 모든 단편이 도착하고 재조립되기 전까지는 네트워크층이 상위 계층에 데이터를 전달하지 않으므로 단편화 과정은 상위 계층에는 보이지않는다.
오류 제어(error control)란 훼손되거나 손실되거나 중복된 데이터그램을 탐지하는 메커니즘을 포함하는 것을 의미한다. 오류 제어는 오류를 탐지한 후 수정하는 메커니즘도 포함한다. 인터넷에서 네트워크층은 오류 제어 메커니즘을 제공하지 않는다. 각 데이터그램은 최종 목적지에 도달하기 전에 여러 네트워크를 경유하므로 표면적으로는 네트워크 계층에서 오류 제어를 제공할 필요가 없는 것처럼 보인다. LAN과 WAN을 포함하는 네트워크의 처리과정을 제어하는 데이터 링크층은 오류 제어를 사용한다. 만약 홉-대-홉(hop-to-hop) 오류 제어가 데이터 링크층에서 구현되어 있다면 왜 네트워크층에서 오류제어가 필요한가? 홉-대-홉 오류 제어가 어느 정도 데이터그램을 보호하지만 완전한 보호를 하지는 못한다. 아래 그림은 오류가 발생했지만 확인되지 못하는 경우를 보여준다. 데이터그램이 라우터에 의해 처리되는 동안 오류가 발생하면 데이터 링크층은 이를 탐지하지 못한다.
흐름 제어(flow control)는 수신자의 수신 능력을 초과하지 않도록 발신지의 데이터 전송 양을 조절한다. 만약 발신지 컴퓨터의 상위 계층이 목적지 컴퓨터가 처리할 수 있는 속도보다 빨리 데이터를 생성하면 수신자에서는 데이터가 수신 능력 이상으로 넘치게 된다. 데이터의 흐름을 제어하기 위해 수신자는 데이터가 넘친다는 사실을 송신자에게 알리는 피드백 메커니즘을 가지고 있어야 한다. 그러나 인터넷의 네트워크층은 직접 흐름 제어를 제공하지 않는다. 데이터그램을 송신할 준비가 되면 수신자가 준비 되었는지를 확인하지 않고 즉시 전송된다.
네트워크층 프로토콜에서 또 다른 문제점은 혼잡 제어(congestion control)이다. 네트워크 계층에서 혼자(congestion)이란 인터넷 내부에 데이터그램이 너무 많이 존재하는 상황이다. 발신지 컴퓨터에 의해 송신된 데이터그램의 수가 네트워크나 라우터의 용량을 넘어서는 경우 혼잡이 발생한다. 혼잡이 계속된다면 시스템이 붕괴되어 데이터그램이 전혀 전송되지 못하는 경우까지도 발생할 수 있다.
인터넷이 (오디오와 비디오의 실시간 통신을 포함하는) 멀틷미디어 통신과 같은 새로운 응용을 허용함에 따라 통신의 서비스 품질(QoS: Quality of Service)은 점점 더 중요한 문제가 되고 있다.
인터넷 계층에서 매우 중요한 사항은 라우팅(routing, 경로지정)으로 비연결형 서비스에서 데이터그램을 전달하는 것을 돕기 위해 또는 연결형 서비스에서 설정 단계에 가상 회선의 생성을 도울 수 있도록 라우터가 어떻게 라우팅 테이브릉ㄹ 생성하는 가의 문제이다.
네트워크층에서 통신과 관련된 다른 중요한 사항은 보안(security)이다.