prime 2024. 4. 6. 18:18

이 세상에 존재하는 MAC address는 너무나 많고 시스템적으로 정렬되어져있지 않기 때문에 switch에서 모든 MAC address로 가는 모든 정보를 갖고 routing하는 것은 불가능하다. Network Layer의 IP는 이를 해결한다.

 

1. IPv4 address

 

IPv4 address는 32bit(4byte)으로 이루어져 있다. 예를 들자면, 12.34.56.254 와 같은 식이다. IP address는 device가 아닌network에 따라 구분된다. IP address는 MAC address와 다르게 dynamic하게 할당될 수 있고 hierarchical structure를 가지고 있다. 하지만, static IP address도 있는데, 대부분의 경우에 이것은 server, network device를 위해서 예약된다. dynamic IP address는 client를 위해 예약된다. 

 

2. IPv4 Datagram & Encapsulation

 

IP protocol에서 packet을 IP datagram이라고 한다. IP datagram은 header, payload로 구성된다. IP datagram header은 Ethernet frame header에 비해서 훨씬 많은 정보를 가지고 있다. 구성은 아래와 같다.

 

출처 : Wikipedia

 

IP version은 사용되는 IP버전을 나타낸다. 일반적으로는 IPv4이지만, IPv6도 많이 채택된다.

IHL(IP Header Length)는 전체 IP Header의 길이를 나타낸다. IPv4에서 일반적으로  20byte이고, 20byte는 IP header의 최소길이이다. 

Service type field(DSCP+ECN)는 QoS(Quality of Service)기술에 대한 설명이다. 이것은 Router가 어떤 IP Datagram이 더 중요한지 결정할 수 있도록 한다.

Total length는 IP datagram의 전체 길이를 나타낸다. 총 16bit이므로 IP datagram의 최대 크기는 65,535bit이다.
Identification field는 메세지를 그룹화 하기위해 사용한다. IP datagram의 최대크기보다 더 큰 데이터를 전송해야 하는 경우 데이터를 split해야하는데, 그렇게 나누어진 IP datagram들이 동일한 Identification field값을 갖도록 하여 같은 전송임을 말해준다.   

Flag field는 IP datagram이 fragmentation되었거나, fragmentation이 가능한지 여부를 알려준다. Network의 구간마다 허용되는 IP datagram의 size가 정해져있는데, 만약 더 작은 size를 허용하는 network구간을 통과하기 위해서는 IP datagram을 split해야한다.

Fragment offset field는 fragmentation된 IP datagram들을 올바른 순서로 조립하기 위해 사용된다. 

TTL(Time to live) field는 얼마나 많은 router hops를 traverse할 수 있는지를 알려준다. router를 거칠 때마다 이 값은 감소하고 0이 되면 더이상 forwarding되지 않고 버려진다. 이는 잘못된 routing설정으로 인한 endless loop를 방지한다.

Protocol field는 어떤 transport layer protocol이 사용되는지 알려준다. 일반적으로 TCP/UDP이다.

Header checksum field는 IP datagram header에 대한 checksum이다. router를 거칠 때마다 TTL field값이 바뀌므로, router를 거칠 때마다 재계산되어야 한다.

Source/Destination IP address field는 32bit의 IP주소가 들어간다.

IP options field는 주로 테스트 목적으로 사용되며, IP datagram의 특별한 설정을 위해 사용된다. IP options field 다음에는 Padding field가 나오는데, 이것은 0으로 채워지며 header가 Header Length에 정의된 올바른 size가 되도록한다.

 

TCP/IP five-layer model에서 상위계층의 datagram은 하위계층의 payload로 들어간다.

 

3. IPv4 Address Classes

 

IP address는 두가지 section으로 나눌 수 있는데, network ID, host ID 이다. 예를 들어, 9.100.100.100에서 9는 IBM의 네트워크ID이고, 100.100.100은 host ID이다. Address class system은 global IP address들이 할당되는 방식을 정의한다.

IP address는 ClassA, ClassB, ClassC, ClassD, ClassE 등으로 분류된다.

Class A는 첫번째 octet까지 network ID이고 나머지는 host ID이다. 첫번째 4bit가 0xxx로 설정된 것이다(0 ~ 127)

Class B는 두번째 octet까지 network ID이고 나머지는 host ID이다. 첫번째 4bit가 10xx로 설정된 것이다(128 ~ 191)

Class C는 세번째 octet까지 network ID이고 나머지는 host ID이다. 첫번째 4bit가 110x로 설정된 것이다(192 ~ 223)

 

Class D는 전체 network로 multicasting하기 위해 사용된다. 첫번째 4bit가 1110로 설정된 것이다(224 ~ 239)

Class E는 아직 할당되지 않았고, 테스트 목적으로 사용된다. 첫번째 4bit가 1111로 설정된 것이다(240 ~ 255)

 

Class에 따라 network가 가지는 IP address갯수가 달라지고, Class A > Class B > Class C순으로 IP address를 갖는다.

이러한 Address class system은 실제로는 대부분  CIDR(Classless Inter-Domain Routing) system으로 대체되었다.

 

4. ARP(Address resolution protocol)

 

ARP는 특정 IP에 대한 Hardware address를 찾고싶을 때 사용한다. 한 device가 특정 IP로 데이터를 보내고 싶을 때, Ethernet frame을 완성하기 위해서는 MAC address가 필요하다. 네트워크에 연결된 device는 보통 자체적으로 local ARP table이 존재하는데, IP address와 그에 대응되는 MAC address의 리스트이다. 만약, 여기에 매핑 정보가 존재하지 않을 경우, device는 Broad cast로 ARP메세지를 보내고 이는 local network의 모든 devices들로 전달된다. 만약 동일한 IP를 가진 device가 있다면, MAC address가 담긴 ARP response를 응답하고 이를 통해 ARP table에 추가하고 MAC address를 추가해 Ethernet frame을 만들어 데이터를 보낸다. 보통 ARP table의 list는 네트워크의 변경을 반영하기 위해 짧은 시간 이후 초기화된다.