본문 바로가기

Information Network

[Information Network] Network Layer: Internet Protocol-인터네트워킹(Internetworking)


Internetworking

여러 링크를 거쳐 전달하는 문제를 해결하기 위하여 Network layer가 설계되었다. Network layer는 Host-Host 사이의 전달과 라우터와 스위치를 통과하는 packet의 경로지정을 책임진다.
 



발신지에서의 Network layer는 다른 프로토콜에서 온 data로 packet을 만드는 일을 한다. 여러 가지 정보를 가진 packet의 header는 발신지와 목적지의 논리적인 주소를 포함한다.

스위치나 라우터에서의 Network layer는 packet의 경로를 지정하는 일을 한다. packet이 도착하면 라우터나 스위치는 경로지정 테이블을 참조하여 패킷이 송신되어야 하는 interface를 찾아 header를 일부 변경한 후 다시 data link layer로 전달된다.

목적지에서의 Network layer는 주소 인증의 책임을 가진다. packet에 있는 목적지 주소가 호스트의 주소와 동일한가를 확인한다.


데이터그램 네트워크로서의 인터넷
인터넷 Network layer의 교환은 packet 교환의 데이터그램 방식을 사용한다.

IP는 datagram 방식으로 전송된다.


비연결형 네트워크로서의 인터넷
packet 전달은 연결중심 or 비연결형 network service를 이용하여 이루어질 수 있다.

Connection-oriented
연결중심 서비스에서는 packet을 보내기 전에 먼저 발신지가 목적지와 연결을 만든후(call setup) packet을 전송.

이때 packet들은 순차적으로 같은 경로를 통해 보내지게 된다. 연결중심 프로토콜에서 발신지와 목적지 주소를 가진 일련의 packet에 대한 경로의 결정은 연결을 설정할 때 단 한 번만 할 수 있다. 이러한 형태는 Frame Relay, ATM과 같은 교환을 하는 packet에 대한 virtual circuit 방법에 사용된다.

=> call setup 과정이 존재하고 data 통신시 언제 끝나고 시작되는지 알 수 있다.


Connectionless
비연결형 서비스에서 network layer 프로토콜은 각 packet이 다른 packet과 관련이 없는 것으로 겨기고 각 packet을 독립적으로 처리한다.

때문에 한 message의 packet들도 목적지까지 경로가 같을수도 있고 다를수도 있다. 이러한 서비스는 datagram 방식의 packet교환에서 사용된다.

인터넷은 이 서비스를 사용한다. 이유는 인터넷이 아주 많은 서로 다른 종류의 네트워크로 구성되어 사전에 네트워크들의 특성을 알지 못하고서는 발신지와 목적지 사이의 연결을 만들어 내는 것이 거의 불가능 하기 때문이다.

=> call setup과정이 없기 때문에 통신이 언제 종료될지 알수 없어 서비스 품질을 보장하지 못한다. 
   (packet switching과 비슷)


따라서 인터넷의 네트워크층 통신은 비 연결형 방식이다.






IPv4

IPv4는 TCP/IP 프로토콜에서 사용되는 전달 방식이다.


IPv4는 신뢰성이 없는 무연결 데이터그램 프로토콜인 best-effort delivery service로, 데이터그램 방식을 사용하는 packet switching network를 위한 connectionless protocol이다. 이것은 데이터그램이 독립적으로 처리되며 목적지까지 다른 경로를 따라 갈 수 있다는 것을 의미한다.

best-effort란 IPv4가 error control or flow control를 제공하지 않는다는 것을 의미한다. (header에 대한 오류 검출은 제외)따라서 신뢰성이 떨어진다.

만약 신뢰성이 중요하면, IPv4는 TCP와 같은 신뢰성이 있는 프로토콜과 반드시 짝을 이루어야 한다.




Datagram

IPv4 layer의 packet을 데이터그램이라 부른다. 다음은 데이터그램의 형식이다.

VER : IP의 version을 정의한다. (IPv4, IPv6)

HLEN : header의 전체 길이를 의미한다.

Service : service의 유형이라고 불렀지만 현재는 차별 서비스를 의미하는 것으로 IPv4에서는 의미가 거의 퇴색됨
우선순위 subfield는 version 4의 일부이나 사용된적은 없다.



Service Type

처음 3bit를 우선순위 bit, 그 다음 4bit를 서비스유형(TOS)bit 이며 마지막 bit는 사용하지 않는다.

TOS bit는 4bit의 subfield로서 각 bit가 특별한 의미를 갖는다. 비록 각 bit가 0 or 1의 값을 가질 수 있지만 한 데이터그램에서 이 bit 가운데 단 하나만이 1의 값을 가질 수 있다.



Differentiate Services

처음 6bit가 부호점(codepoint) subfield를 구성하고 마지막 2bit는 사용하지 않는다.



Total length : header를 포함한 데이터그램의 전체 길이를 정의하며, 데이터 길이를 알기 위해서는 total length에서 header length를 빼면 된다.
필드 길이가 16bit이기 때문에 IPv4 데이터그램의 Total length는 65,536byte로 제한된다.

total length는 데이터그램이 frame에 capsulation될 뿐만 아니라 padding이 추가될 수도 있기 때문에 필요하다.

예를 들면 ethernet protocol은 frame에 capsulation될 수 있는 데이터 크기에 최소와 최대 크기를 가진다.
IPv4 데이터그램의 크기가 46byte보다 작으면 이 요구사항을 지키기 위하여 padding이 추가된다. 이 경우 기계가 데이터그램을 encapsulation할 때, 얼마가 진짜 데이터이고 얼마가 padding인지를 결정하기 위하여 total length field를 조사할 필요가 있다.
 


Time To Live(TTL) : 이 필드는 원래 각 라우터를 거칠 때마다 감소되는 타임스탬프를 저장하도록 설계되었으나, 모든 기계가 동기화된 시간을 가져야 한다는 어려움으로 인하여 이 필드는 데이터그램이 통과하는 최대 홉수를 제어하는데 대부분 사용된다. 만약 TTL값이 0이면 라우터는 이 데이터그램을 폐기한다.

Protocol : IPv4 layer의 서비스를 사용하는 상위 계층 프로토콜을 정의한다.  IPv4 데이터그램은 TCP, UDP, ICMP, IGMP와 같은 여러 상위 프로토콜을 캡슐화 할 수 있다. 이 필드의 값으로 수신 네트워크층이 이 데이터가 어느 프로토콜에 속한 것인가 알아내는 것을 도와준다.


다음은 protocol value이다.

Checksum : header의 error만 check(TTL로 인하여 header에 변경되는 부분이 생기기 때문)





Fragmentation


데이터그램은 종류가 다른 네트워크들을 통해 이동할 수 있다. 각 라우터는 수신한 프레임에서 데이터그램을 역캡슐화하여, 데이터그램에 대한 일을 하고, 다른 프레임으로 다시 캡슐화 한다.

MTU(Maximaum Transfer Unit, 최대 전송 단위)
프레임에 데이터그램이 캡슐화될 때, 데이터그램의 전체 크기는 정의된 최대크기 보다 작아야 한다.


 이때 data link layer의 전송능력에 의해 MTU가 변경된다.

단편화에 관련된 field는 다음과 같다.

Identification : 해당 16bit field는 발신지 host에서 출발한 데이터그램을 식별한다. 즉 data 순서를 지정해주는역할을 한다.

Flag : 이것은 3bit field. 첫 bit는 예비이며 두 번째 bit는 단편화 금지 bit라고 한다. 만약 이 bit가 1이면 해당 데이터그램을 단편화해서는 안된다. 세 번째 bit는 more fragment bit로써 해당 값이 1이면, 이 데이터그램이 마지막 flag가 아니라는 것을 의미한다.  

Flagmentation offset : 전체의 data중 현재 자신이 가지고 있는 data의 시작위치로 fragmentation된 data에 사용된다. 이것은 원래 데이터그램에서의 8byte 단위로 계산한 데이터의 offset이다.
 

Checksum : header의 오류 유무만 확인하며 수정은 하지 않는다.




IPv6


TCP/IP 프로토콜의 네트워크층 프로토콜은 현재 IPv4이다. 그러나 IPv4는 빠르게 성장하는 인터넷에 적절하지 않은 몇 가지 취약점을 가지고 있는데,
서브넷 지정, 무클래스 주소지정과, NAT와 같은 모든 단기간의 해결책에도 불구하고 인터넷에서 주소부족은 여전히 장기적인 문제이다.

인터넷은 실시간 오디오와 비디오 전송을 수용해야만 한다. 이 유형의 전송은 최소 지연 방안과 자원 예약이라는 IPv4 설계에서 제공되지 않는 것을 필요로 한다.

인터넷은 일부 응용에 대해 데이터의 암호화와 인증을 제공해야 한다. IPv4는 암호화와 인증을 제공하지 않는다.

이런 취약점을 극복하기 위하여 IPv6 프로토콜이 제안되었고 현재는 표준으로 채택되었다.

IPv6는 다음과 같은 몇 가지 장점을 가지고 있다.
보다 큰 주소 공간

IPv6는 option이 기본 헤더에서 분리되어 필요할 경우 기본 헤더와 상위 계층 데이터 사이에 삽입되는 새로운 헤더 형식을 사용하여, 대부분의 option이 라우터에 의해 검사되어야 할 필요가 없기 때문에 경로지정 과정을 간단하게 한다.

IPv6는 추가적인 기능성을 허용하도록 새로운 option을 가지고 있다.

IPv6의 암호화와 인증 선택사항으로 packet의 기밀성과 무결성을 제공한다.




Packet format




Base header
다음은 8개의 field를 가진 base header이다.


VER
: IP의 버젼 정보를 알려주는 것으로 IPv6는 6이다.

PRI : Priority field는 traffic 혼잡에 대한 packet의 priority를 정의한다.
Priority field는 동일한 발신지에서 온 다른 packet에 대한 각 packet의 priority를 정의한다.

예를 들면, 만약 2개의 연속 데이터그램 중 하나가 혼잡 때문에 반드시 폐기되어야 한다면, 낮은 Priority를 가진 데이터 그램이 폐기된다.

IPv6는 traffic을 혼잡 제어(congestion-controlled traffic)와 비혼잡 제어(Noncongestion-controlled traffic)의 두가지로 크게 분류된다.

Congestion-controlled traffic : 혼잡이 있을 때 발신지가 자체적으로 traffic을 낮추는 적용을 하는 것.
이때 packet들은 지연, 분실되거나 순서에 어긋나서 도착할 수 있다.

Noncongestion-controlled traffic : 이것은 최소 지연을 기대하는 traffic 유형을 나타낸다. packet의 폐기도 바람직 하지 않으며 대부분의 경우 재전송이 불가능하다. 즉, 발신지는 자체적으로 혼잡에 적응하지 않는다.
실시간 오디오와 비디오가 이 유형의 트래픽이다.



Flow label : 데이터의 특정한 흐름을 위한 특별한 처리를 제공하기 위한 field.
특정 발신지에서 특정 목적지로 송신된 일련의 packet을 packet의 흐름이라고 한다. 이때 발신지 주소와 flow label 값의 조합이 packet의 흐름을 유일하게 정의한다.

라우터에 대해서 흐름은 동일한 특성을 공유하는 일련의 packet이다. 동일한 특성은 동일한 경로를 따라 이동하거나, 동일한 자원일 이용하거나, 또는 같은 종류의 보완성을 가지는 등을 의미한다. 이런 flow label을 지원하는 라우터는 flow label table을 가지고 있다.

가장 간단한 형태로 flow label은 라우터에 의한 packet 처리를 가속시키는데 사용할 수 있다. 다음 홉을 flow label table로 확인

조금 더 복잡한 형태로, flow label은 실시간 오디오와 비디오 전송을 지원하는 데 사용될 수 있다.

Payload length : 기본 헤더를 제외한 IP 데이터 그램의 길이를 정의

Next Header : 데이터그램의 기본 헤더를 뒤 따르는 헤더를 정의한다. IPv4에서는 이 field를 프로토콜이라고 정의했다.
 

Hop limit : IPv4의 TTL field와 같은 목적으로 사용된다. 즉, 이 필드는 데이터그램이 통과하는 최대 홉수를 제어하는데 사용된다. 만약 값이 0이면 라우터는 이 데이터그램을 폐기한다

Source Address

Destination Address






Extension Headers


기본 header의 길이는 40byte로 고정되어 있다. 그러나 IP데이터그램에 보다 큰 기능을 제공하기 위해 기본 header뒤에 여섯 개까지 Extension header를 둘 수 있다.
 


Hop-by-Hop Option : 데이터그램이 거쳐가는 모든 라우터에 발신지가 정보를 전달해야 할 때 사용된다.

Source Routing : 발신지 경로지정 선택사항 header는 IPv4의 엄격한 발신지 경로와 유연한 발신지 경로 선택사항의 개념을 혼합한 것.

Fragmentation : IPv4의 개념과 동일하지만, fragmentation이 발생하는 곳이 다르다. IPv4에서는 데이터그램이 이동하는 네트워크의 MTU보다 데이터그램이 크기가 더 클경우 발신지나 라우터가 fragmentation을 하도록 되어있지만, IPv6에서는 원 발신지만이 fragmentation을 할 수 있다.

Authentication and Privacy : 인증 확장 header는 메시지 송신자를 증명하는 것과 데이터의 무결성을 보장하는 목적을 가지고 있다. 

Ecrypted Security Payload(ESP) : 기밀성과 도청에 대한 방비를 제공

Destination Option : 발신지가 정보를 목적지에만 전달할 필요가 있을때 사용






IPv4에서 IPv6로의 천이


IPv4에서 IPv6로 갑자기 천이될 수는 없다. 인터넷상의 모든 시스템이 IPv4에서 IPv6로 이동하는 것은 상당한 시간이 걸리게 된다. 때문에 다음과 같은 세 가지 방안을 고안하였다.




Dual Stack


IPv4와 IPv6를 동시에 동작시키는 장비이다. 목적지에 packet을 보낼 때 어느 version을 사용할 것인가를 결정하기 위해 발신지 host는 DNS에 질의를 하여 DNS가 IPv4 주소를 보내오면 발신지 host는 IPv4 packet을 보낸다.
 






Tunneling


IPv6를 사용하는 두 컴퓨터가 서로 통신하기를 원하나 packet이 IPv4를 사용하는 지역을 지나가야만 할 때의 방안이다. IPv6 packet이 이 지역에 진입할 때 IPv4 packet으로 capsulation되고, 지역을 벗어나면 다시 encapsulation을 수행한다.





Header Translation


대부분의 인터넷이 IPv6로 전환되고 일부분이 아직 IPv4를 사용할 때 필요하다. 송신자는 IPv6를 사용하기를 원하나 수신자는 IPv4를 사용할 경우, header 형식이 header translation을 통해 완전히 바뀌어야 한다.