네트워크 계층 제어 정보 교환에 사용하는 프로토콜. ICMP도 network 계층 프로토콜인데, ICMP가 IP 위에 있다. 그 얘기는 ICMP 메세지를 IP 데이타그램으로 encapsulated한다는 것이다. ICMP 메세지 내용은 type과 code에서 나타난다. (에러 reporting, 서버가 살았는지 확인하는 용도(ping) 등)
trace-route는 ICMP를 기반으로 하는 애플리케이션이다.
source host에서 UDP segment를 계속 내보낸다. 이는 세 개씩 한 세트이다. 첫 번째 세트에서는 IP header의 TTL을 1로 설정한다. 이렇게 되면 첫 번째 세트는 첫 번째 router까지만 갈 수 있고 이 패킷은 drop되고 그 router는 source host 쪽으로 error reporting을 보낼 것이다.(이때 ICMP 메세지를 보낸다.) 두 번째 set의 TTL = 2로 설정하고 세 번째 set은 TTL = 3으로 설정하는 것과 같은 과정을 반복한다. trace route는 경로까지 몇 개의 router가 있고 각각 도달 시간은 얼마나 걸리는지를 알기 위해 실행한다. TTL이 충분히 커지면 dest host까지 갈 것이고, 이러면 dest host는 port 번호로 deliver하려고 하는데 port 번호가 없다. 그러면 dest host에서는 port unreachable이라는 ICMP 메세지를 source host로 보내게 된다.
IPv4에는 주소 문제가 존재한다. 식별할 수 있는 max 개수가 2^32이다. 이를 효율적으로 사용하기 위해 CIDR을 만들었고, 재사용하기 위해 DHCP라는 프로토콜도 만들었고, NAT도 만들었다. 하지만 언젠가는 주소가 고갈할 것이므로 IPv6가 만들어졌다.
IPv6는 2^128개를 사용할 수 있다. 또한 고정 header길이를 통해 router의 처리속도를 향상시키고자 하였다. ip header 자체는 고정길이 40 바이트이지만, optional field 기능을 할 수 있는 optional header를 추가했다. 마지막 optional header의 next header 필드에는 UDP헤더냐 TCP 헤더냐에 대해 표기해놨다.
fragment 기능이 삭제됨에 따라, 데이터그램이 너무 커서 그 정보를 drop 해버렸다는 error reporting이 추가로 요구되기 시작했다. 이로 인해 ICMPv6도 새로이 등장하게 되었다.
멀티미디어 전송을 위해 QoS를 지원할 수 있는 헤더 필드를 추가하였다.
추가 된 필드는 아래와 같다. 그 아래에는 IPv6의 전체적인 구조도가 첨부되어 있다.
(+멀티캐스팅에 대한 고려도 추가되었다.)
터널링을 사용한다. IPv4 라우터 사이에 IPv6를 추가로 놓는 방법을 채택함에 따라 터널링이 필요하게 되었다. (IPv4가 IPv6를 이해할 수 없기 때문에)
라우팅 프로토콜은 라우팅 알고리즘이 필요로하는 data를 collect하는 역할을 한다. 근데 일반적으로 RP에는 RA가 포함되어 있다.
라우팅 알고리즘의 목적은 forwarding table을 세팅하는 것이다. 라우팅 알고리즘에서는 네트워크를 그래프로 추정을 한다. 라우팅 알고리즘의 목적은 least cost path의 발견이다.
RA에서 사용하는 정보에 따라서 global vs decentralized와 static vs dynamic으로 나뉜다.
global 알고리즘에서는 각 라우터가 네트워크 전체에 대한 정보를 가지고 있다.(이 모든 정보는 consistency 해야만한다.) 이를 link state algorithm이라고 한다.
decentralized 알고리즘에서는 지엽적인 정보만 알고 있다. 이를 distance vector algorithm이라고 한다.
static은 link cost를 static 한 것을 사용한다는 뜻이고
dynamic은 link cost를 dynamic한 것을 사용한다는 뜻이다.
한 노드가 처리해야하는 메세지의 양의 경우, LS는 네트워크 내에서 link수나 node수가 늘어나면 그에 비례해서 증가한다. 하지만 DV는 지엽적인 정보만 알면 되기 때문에 크게 증가하지 않는다.
속도면에서 살펴보면, LS의 경우에는 모든 라우터가 똑같은 경로를 그리게 되는데 DV는 달라지므로 convergence time이 다양하다.
각 기관은 전체 네트워크에게 본인의 데이터를 전부 보여주고 싶어하지 않는다. 그래서 AS로 나눈다. AS 내에서는 한 가지의 routing 을 돌려서 as에 속한 host에 대한 routing을 만든다.(= intra-AS routing)
AS 엣지에 있는 게이트의 라우터끼리 연결하기 위한 부분도 필요하다.