IP
- 네트워크 레이어 프로토콜
- 현재 버전은 Version 4 (IPv4). RFC 891에 명시되어있다.
- 라우터와 호스트 둘 모두에게 구현되어있는 가장 높은 레이어 프로토콜이다.
IP service
- IP는 unreliable connectionless best effort service
Unreliable : 손실된 패킷을 복구하려는 시도를 하지 않는다.
Connectionless : 각 패킷(데이터그램)은 독립적으로 처리된다.
IP는 패킷들의 논리적 순서에 대해 알지 못한다. (순서를 보장해주지 않는다.)
Best Effort : 서비스에 대해 보장해주지 않는다. (no throughput guarantee, no delay guarantee)
- 때문에, 더 상위의 레이어 프로토콜은 중복 패킷, 잃어버린 패킷에 대한 처리를 해주어야 한다.
- 패킷은 순서를 어기고 전송될 수 있다.
- one-to-one(unicast), one-to-all(broadcast), one-to-several(multicast) 지원
- IP multicast는 IGMP, multicast routing과 같은 별도의 프로토콜이 더 필요하다.
IP Header
20 bytes <= Header Size < 2^4 * 4 bytes = 64 bytes
20 bytes <= Total Length < 2^16 bytes = 65536 bytes
Version :
- 보통 4 (for IPv4), 6은 IPv6
- Header Length : IP header length, 곱하기 4 bytes를 해준다. 보통 5 (for a 20-byte IPv4 header)
DS/ECN field :
- Type-of Service (TOS) field라고 불리었었다.
- Differentiated Service (6 bits): 특정한 서비스 레벨에 사용된다. ex) more fast manner, priority
하지만, 지금은 지원되지 않는다.
- Explicit Congestion Notification (2 bits): IP 패킷에 캡슐화된 TCP 프로토콜이 ECN 기능을 사용한다고 알려주는 역할
Total length :
패킷 바이트의 숫자
- 16bits가 할당되므로, 최대 사이즈는 65,535 bytes이다. 2^16 - 1
데이터는 65535에 IP header size 20을 빼줘야하므로 최대 65515 bytes
Flags :
- 첫 비트는 항상 0으로 set
- DF bit (Do not fragment) : 패킷의 사이즈가 너무 클 때, fragment하지 않고, 패킷을 드랍하고 icmp 메시지를 보내게 함
- MF bit (More framgents) : 해당 패킷은 조각 중에 하나이고 해당 하는 조각들이 더 있음을 알려준다.
Maximum Transmission Unit (MTU)
- IP datagram의 최대 크기는 65535이다. 하지만 데이터 링크 프로토콜은 일반적으로 훨씬 더 작은 한계를 가진다.
- 이더넷 프레임은 최대 1500 bytes의 페이로드를 가진다.
- 최대 IP datagram 크기에 제한을 주는 데이터 링크 프로토콜을 MTU라고 부른다.
Ethernet: 1500, FDDI: 4352, 802.3:1492 ... PPP는 각 엔드 포인트끼리 협상한다.
Fragmentation
- MTU가 다른 라우트를 할 때, 데이터그램은 여러개의 데이터그램으로 나누어진다.
- Fragmentation은 sendor, 중간 라우터에서 실행될 수 있다.
- 같은 데이터그램이 여러번 나뉘어질 수 있다.
- Reassemble은 목적지 호스트가 한다.
- fragment된 데이터그램들은 같은 Identification field를 갖는다.
- Flag (DF, MF), fragment offest, total length, checksum이 변하게 된다.
Time-to-Live (TTL) Field
- 포워딩 루프가 형성되면 패킷은 영원히 그 루프를 돌고 있을 것이다.
- 이 패킷들이 축적되면 패킷들은 라우터의 모든 자원을 소비할 것이다.
때문에, TTL field가 사용된다.
- Sender는 특정한 값을 TTL filed로 set한다.
- 각 라우터는 TTL field를 1씩 줄인다. (1 hop에 1씩 감소)
- TTL 값이 0에 도달하게 되면 데이터그램을 drop하고, source IP address로 ICMP를 사용해 time exceeded 메세지를 전송하게 된다.
Protocol
- 상위 레이어의 프로토콜을 명시한다.
- 수신 호스트에서 de-multiplexing하는데 중요하다.
Checksum
- IP header의 모든 16-bit words를 1's complement로 변환한다.
1011/1000/0101/0111 -> 1011 + 1000 + 0101 + 0111 = 11111 -> 10000 -> 0001
end-around carry : 초과된 앞에 값을 뒤로
- 라우터는 TTL을 1씩 줄여주기 때문에 IP header가 바뀌게 된다 때문에 라우터마다 계속 checksum을 다시 계산해주어야 한다.
-> checksum이 맞지 않으면 패킷을 무시한다.
IP address
- Destination address : 수신 호스트의 unique identifier였지만, 현재는 NAT로 인해 그렇지 않다.
어느 곳으로 포워딩 될지 결정하는데 도움을 준다.
- Source address : 송신 호스트의 unique identifier
수신자가 source address를 보고 수신 여부를 결정할 수 있다.
수신자가 송신자에게 회신할 수 있게 해준다.
Options
- 보안 제한사항, 라우트 경로 저장(자신의 ip address를 헤더에 저장하는 라우터),
timestamp(ip address와 시간을 헤더에 저장하는 라우터), source routing(통과할 수 있는 라우터 목록, 통과해야되는 라우터 목록)
Padding
- 헤더가 4bytes로 끊어지도록 패딩
IPv6
- IP address가 16bytes(=128bits)로 이루어진다.
- IPv4는 최대 2^32, IPv6는 최대 2^128
- 8rodml 16-bit integer로 표기
CEDF:BP76:3245:4464:FACE:2E50:3025:DF12
:0000:은 :: 로 표기 될 수 있다.
::80:8F:89:90 -> ::128.143.137.144
IP를 이용한 공격
- option의 동작과, frament reassemble 등을 이용
MF 비트를 가진 데이터그램을 보내, 자원 소비
- header length나 버전 넘버 등을 수정하여 라우터를 고장내거나, 성능을 저하시킨다.
- IP spoofing
송신자 ip 주소를 타겟 주소로 바꿔 보내, redirect를 타겟이 받도록 함
ingress filtering, egress filtering을 이용해 방지
'컴퓨터 사이언스 > 네트워크' 카테고리의 다른 글
[모바일 컴퓨팅] User Datagram Protocol (UDP) (0) | 2021.04.21 |
---|---|
[모바일 컴퓨팅] ICMP (Internet Control Message Protocol) (0) | 2021.04.20 |
[모바일 컴퓨팅] Addressing (0) | 2021.04.18 |
[모바일 컴퓨팅] Data Link Layer (0) | 2021.04.17 |
[모바일 컴퓨팅] Introduction and Layering (0) | 2021.04.16 |