네트워크 계층은 IP와 함께 목적지까지 패킷을 전송한다. 단순해 보이지만, 패킷을 전송함에 있어 수행되어야할 작업은 아주 많다.
네트워크 계층에서는 다음과 같은 작업을 수행한다.
네트워크 계층의 작업 외에 IP가 수행해야할 작업은 다음과 같다.
서비스 요구사항(QoS)는 서비스의 질을 위한 요구사항이다.
네트워크에서 요구되는 사양은 신뢰성, 지연, 지터, 대역폭이다.
각 응용프로그램 별로 요구되는 사항은 다르다.
→ 이메일 서비스의 경우, 높은 신뢰성을 필요로 하며, 지연, 지터, 대역폭은 낮아도 상관이 없다. 목적지에 잘 도착하는 것이 중요하다.
→ 화상회의 서비스의 경우, 지연, 지터, 대역폭이 모두 중요하다. 신뢰성은 낮아도 괜찮다. 실시간으로 동영상이 전송되기 때문이다. 지터 오류가 많다면 화면의 속도가 왔다 갔다할 것이다.
혼잡제어(congestion control)란 혼잡이 발생하는 곳의 흐름을 변화시켜 혼잡을 완화시키는 작업이다.
호스트의 타임 아웃 시간을 늘리기
슬라이딩 윈도우 크기 줄이기 (천천히 전송)
⇒ 초크 패킷(chock packet)
패킷과 패킷의 전송 간격을 조정
⇒ 토큰 버킷 알고리즘
초크 패킷은 윈도우의 크기를 줄일 때 사용되는 패킷이다.
윈도우의 크기를 줄이자는 의미로 상대방 호스트에게 빈 패킷인 초크 패킷을 보낸다. 초크 패킷을 받은 호스트 윈도우 크기를 줄인다.
IP 헤더에서 ECN(Explicit Congestion Notification)은 초크 패킷의 역할을 한다.
토큰 버킷 알고리즘은 버퍼를 통해 패킷의 간격을 조절하여 혼잡을 제어한다.
패킷의 흐름을 일정 간격으로 조절하면 혼잡이 완화된다.
→ 윈도우 크기가 같은 경우, 패킷을 0.1초 간격으로 보내는 것과 1초 간격으로 보내는 것은 다르다.
일정하지 않은 간격으로 도착하는 패킷을 버킷(버퍼)에 넣고, 일정 간격으로 맞추어 패킷을 내보낸다. → 천천히 패킷을 처리
LAN 마다 패킷의 처리 능력과 다룰 수 있는 패킷의 크기가 다르다. 처음 보낸 패킷이 여러 개로 조각나 배달되는 경우가 발생할 수도 있다.
LAN이 끝나는 지점에서 원래의 패킷으로 합쳐서 보내주면 큰 문제는 없으나, 문제는 분리된 채로 목적지에 도착하는 경우이다. 이때 순서가 뒤바뀔 수도 있다.
→ IP는 이 문제에 대비하여 원본을 확인할 수 있도록 준비한다.
패킷이 분리되어 전송될 때는 다시 원본으로 복원할 수 있도록 해야 한다.
a) 초기 상태
패킷의 맨 앞의 3개의 필드는 패킷 분할과 관련하여 헤더에 있는 값이다.
b) 2개로 분할된 경우
c) 3개로 분할된 경우 - 순서가 뒤바뀐 경우
터널링(혹은 IP 터널링): 패킷이 인터넷 망이 아닌 구간을 통과할 때의 처리 방식
서로 다른 종류의 통신망을 사용하여 인터넷에 접속하는 경우
→ 핫스팟 기능으로 노트북을 인터넷에 연결하는 경우
이때 무선 전화통신망은 IP 패킷과는 다른 종류의 헤더를 사용한다. 이때 패킷이 인터넷 망이 아닌 구간을 어떻게 통과하느냐 문제가 발생하는데 이때 터널링 혹은 IP 터널링 기술을 사용한다.
기존의 IP 패킷을 무선 전화망에서 사용하는 패킷에 집어넣고, 무선 전화망과 인터넷이 연결되는 곳까지 보낸다. 이후 IP 패킷으로 전송한다.
IPv4의 헤더는 32bit (4Byte)를 기준으로 나눈다.
이때, 5번째 줄까지가 필수 부분이며, 나머지는 옵션이다.
필수 부분은 20 Byte. 옵션은 선택이며 4Byte 씩 증가할 수 있고,최대 40Byte까지 추가할 수 있다.
Time to Live(TTL): 패킷이 살아있을 수 있는 시간 기록
Transport Protocol: 해당 패킷을 전송 계층에 있는 어떤 프로토콜에게 전달해야 하는지 명시
Header Checksum: 헤더만 에러검사 → checksum, 검사합
4번 줄의 Source Address: 보내는 호스트의 IP 주소
5번 줄의 Destination Address: 받는 호스트의 IP 주소
IPv6 헤더는 40Byte로 고정 (옵션 X)
IPv6는 128bit, 16Byte의 주소로 10진수로 표현하면
길이가 매우 길어진다.
따라서, 4개 16진수(2Byte)를 하나로 묶어서 8개의 덩어리로 표시하고, 콜론(:)으로 구분한다.
IPv6의 경우 주소 중간에 0이 많이 나타난다 → 생략 가능
IPv4와 IPv6를 같이 표시하는 경우
→ IPv6 주소 (16진수) :: IPv4 주소 (10진수)