addressing, datagram format, data handling을 정의한다.
이 IP address를 통해서 host를 구별한다.
// port number를 통해서 process를 구별한다.
- Network layer의 protocol로 routing protocol, ICMP protocol, 그리고 IP protocol이 있다.
🥝 IP 주소로는 host와 router의 interface를 구별한다.
🌰 ICMP protocol은 router를 signaling하고, error발생시 보고한다. ping을 보낼때에도 사용된다.
🍍 routing protocols은 path를 선택한다. (forwarding table을 이용한다.)
routing protocol로는 OSPF(Open Shortest Path First), BGP(Border Gateway Protocol), RIP(Routing Information Protocol)가 있다.
IP datagram format
- header는 가변이다. (기본적으로 20bytes)
- type of service로 어떤 것을 먼저 우선순위로 두고 queue에서 서비스할지 결정한다.
- MSS(Maximum Segment Size, TCP datagram format에 정의됨)와 유사한 MTU(Maximum Transfer Size)가 존재한다.
☕ 이 MTU는 네트워크에 따라서 크기가 다르다.
- 하나의 IP datagram이 여러개로 잘라질 수 있다. 이때, 16-bit identifier, flgs, fragment offset을 사용해 자르고 붙인다.
- TTL(Time To Live)는 router를 지날 때 마다 1씩 줄어들어 0이 되면 데이터를 버린다.
- Upper Layer로 상위 어떤 계층의 데이터를 담고 있는지 나타낸다.
- Fragmentation Flags가 1이면, 자신을 제외한 다른 쪼개진 datagram이 있다는 의미다. 0이면 더 이상 쪼개진 datagram이 없다는 의미이다.
- Fragment Offset은 datagram이 전체중에서 몇 번째 순서인지를 의미한다.
🍈 유선/무선 LAN카드는 서로 IP주소가 다르다.
- IP 주소는 subnet part와 host part로 나뉘는데, 동일한 부분을 subnet IP, 다른 부분을 host IP라고 한다.
- subnet을 구별하는 것은 network layer에서 inferface를 잘랐을 때의 subnet이다.
- subnet을 나타내는 부분을 subnet mask라고 한다.
- 255.255.255.255은 subnet 전체에 broadcasting하기 위한 IP이다.
- Classful Addressing에서는 subnet part의 bytes가 고정되어 있다.
이때문에 어쩔 수 없이 필요한 IP 주소의 bytes 개수보다 더 많은 부분을 사용하게 된다.
이에 대한 해결책으로 CIDR이 있다.
🍖 CIDR(Classless Inter-Domain Routing)은 임의의 bit를 subnet Id로 사용한다.
🍄 subnet part와 host part를 나누는 이유는 subnet part만 보고 더 효율적으로 IP주소를 통해서 host를 찾아갈 수 있게 되기 때문이다. 🍄
- IPv4(Internet Protocol version 4)와 IPv6(Internet Protocol version 6)는 현재 가장 일반적으로 사용되는 두 가지 IP 주소 버전이다.
- IPv4는 32비트로 이루어져 갯수에 한계가 있었기에, 128비트로 이루어진 IPv6가 등장했다.