IP 주소를 MAC 주소로 변환하는 프로토콜
송신자는 목적지 물리주소가 필요하므로, 물리주소 요청을 위한 ARP요청 패킷을 **브로드캐스트**로
전송.
(브로드캐스트를 하는 이유는 목적지의 물리주소를 모르므로 모두에게 요청함.)
(요청 패킷에는 수신자가 수신자 주소를 응답할 때 필요한 송신자 주소가 포함)
모든 호스트와 라우터는 송신자가 보낸 ARP 요청 패킷을 수신함.
해당되는 수신자만 자신의 논리주소와 물리주소를 넣어 응답 패킷을 **유니캐스트**로 전송.



1. VER(버전영역) : IP 버전을 나타내기 위한 영역
2. HLEN(헤더크기) : 4바이트를 기본 단위로 헤더의 길이를 규정 ( HLEN = 5 => 5 * 4바이트 = 20바이트
3. DS(차별화된 서비스) (Type of Service): 네트워크를 통해 데이터를 전송하고자 할 때 사용자의 데이터마다 우선권을 부여할 수 있음 (8bits) <= 라우팅할 때 중요
voice 같은 경우 delay가 중요하기 때문에 먼저 처리됨
Quality of Service (QoS)

4. Total length(전체패킷 길이) : IP 데이터그램의 총 길이를 나타냄
5. Identification(데이터그램 식별자) : 패킷분할시 이 영역값을 참조해 어떤 원본 데이터그램으로부터 분할되었는지 알 수 있음
6. flag(플래그) : 전송되는 패킷이 분할되었는지 여부
7. 패킷분할 옵셋 : 8바이트 단위로 조각난 패킷의 부분을 가리키는데 사용
8. TTL(존재시간 영역) : 패킷이 네트워크를 통해 전송되었을 때, 최종 목적지에 도착하지 못한 패킷은 네트워크상에 계속 존재하게 되어 네트워크의 자원을 잠식
8bits → 256 라우터를 하나 거치면서 1씩 작아지다가 0이되면 사라짐 (약 2분)
9. Protocol(프로토콜) : IP계층의 서비스를 사용하는 상위계층 프로토콜이 무엇인지를 정의
10. checksum(헤더 체크섬) : 네트워크를 통해 패킷이 전송될 때 발생한 에러를 검출하기 위해 사용하는데, 1에 대한 보수 연산으로 수행
11. 전송측과 목적지 주소 영역 : 32비트
예제1) IP HLEN = 5, Total Length = 0028일 때 사용자 데이터 길이는?
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=printf7&logNo=10170430212

fragflag는 마지막 데이터그램만 0으로 표시하여 내용 끝났음을 표시
https://hororolol.tistory.com/299

offset unit이 8bits 이므로 MTU도 8의 배수여야함

ip header에 있는 id칸은 16비트 이다. fragmentation 때문에 생긴 이 id 필드는 같은 id를 가진 패킷을 합친다. 따라서 패킷을 보낼때 2분 내에 같은 패킷을 보내면 안된다.
id는 최대 2^16개 존재 할 수 있는데 120초 이내에 같은 패킷을 보내며 안되므로 초당 최대 보낼 수 있는 패킷의 숫자는 2^16 / 120 = 546개이다.
초당 최대로 보낼 수 있는 패킷숫자의 한계가 있다보니 최대 속도에도 제한이 걸려버리는 것이다.
→ 따라서 이 문제를 해결하기 위해서는 id 필드를 늘려도 되지만 애초에 fragmentation을 안하면 된다.
여러번 쪼개야 하는 경우
MTU가 200 → 1500 →1000 인 라우터를 거치게 되면 fragmentation이란 작업을 여러번 해주어야 한다. 이 작업은 비용이 많이 든다. fragmentation을 안하게 된다면 속도의 향상을 기대해 볼 수있다.
wasted
fragmentation의 또다른 문제는 낭비이다. 10개의 fragment로 쪼개었는데 1개의 조각이 사라지면 나머지 9개는 버려야하기 때문이다.
여러 Fragmentation의 문제를 해결하기 위해서는 패킷 전송의 path 중에서 가장 작은 MTU를 찾아서 처음부터 그만큼으로 잘라서 보내면 된다.
ICMP( internet Control Message Protocol )
대부분의 MTU는 1500 바이트면 해결이 되기 때문에 IP 헤더와 TCP 헤더 크기를 뺀 1460이 MSS이다

이 문제들을 IPv6를 만들때 고려되었음, (fragmentation 문제, routing 문제) 하지만 공사가 어려워 전환이 안됨
IP는 에러 처리기능이 없다. (detect만 할 수 있음)
하지만 ICMP는 이동을 하지 못한다. 따라서 IP에 붙어서 이동하여 공생관계를 이룬다.
네트워크의 패킷이 사라지는 3가지 이유
3가지 문제중 99%는 Congestion의 문제로 패킷이 사라지게 되는데 ICMP가 sender에게 패킷을 천천히 보내라고 에러를 보낼 수 있다. Flow control
error report → 빨간색 화살표가 붙어있는 ip header 는 실제 전송 방법에 대한 ip header이고 안쪽에 있는 또다른 header는 error를 만든 ip의 복사본이다.
