IP(Internet Protocol)
- IP주소에 따라 다른 네트워크 간 패킷의 전송(경로 제어)를 위한 규약이다.
- 패킷이 전송된 순서대로 도착하는 것을 보장하지 않는다.
[IP특징]
비신뢰성
- IP 데이터그램이 목적지에 성공적으로 도달한다는 것을 보장하지 않는다.
비연결형
- 전달되는 데이터그램에 대해 상태정보를 유지하지 않는다.
[IPv4 주소 체계]
비트 수 | 1 | 7 | 24 |
A Class | 0 | Network Address | Host Address |
비트 수 | 2 | 14 | 16 | |
B Class | 0 | 1 | Network Address | Host Address |
비트 수 | 3 | 21 | 8 | |||
C Class | 1 | 1 | 0 | Network Address | Host Address |
[사설 IP 주소 범위]
- A 클래스: 10.0.0.0 ~ 10.255.255.255
- B 클래스: 172.16.0.0 ~ 172.31.255.255
- C 클래스: 192.168.0.0 ~ 192.168.255.255
[ IP 데이터그램]
<--------------20~65536byte--------------> | |
<---20~60byte----> |
|
Header | Payload |
[IP 헤더]
VER
(4 bit)
|
HLEN
(4 bit)
|
TOS
(8 bit)
|
Total length (16 bit)
|
|
Identification
(16 bit)
|
Flags
(3 bit)
|
Fragmentation offset
(13 bit)
|
||
TTL
(8 bit)
|
Protocol
(8 bit)
|
Header checksum
(16 bit)
|
||
Source IP address (32 bit)
|
||||
Destination IP address (32 bit)
|
||||
Option (0 or 32 bit)
|
① VER (Version)
- IP 프로토콜의 버전이다.
② HLEN (Header Length)
- IP 헤더 길이이다.
③ TOS (Type Of Service)
- QOS(Quality Of Service : 서비스 품질)에 대한 정보를 제공한다.
우선권 필드 (3 bit)
|
TOS 필드 (4 bit)
|
사용 X (1 bit)
|
|||||
값 |
서비스 |
설명 |
0 |
보통 |
- 보통 데이터로 취급 - 대부분이 이 분류에 속함 |
1 |
비용 최소화 |
- 가장 비용이 적게 드는 경로를 통해 패킷을 라우트 할것을 요구 |
2 |
신뢰성 최대화 |
- 가장 신뢰성 있는 네트워크를 통해 패킷을 라우트할 것을 요구 |
4 |
처리량 최대화 |
- 보통 데이터 패킷을 더 많이 처리를 하면서 라우트 할 것을 요구 |
8 |
지연 최소화 |
- 보통 데이터보다 더 신속한 패킷의 라우트를 요구 - 자신의 입력 에코를 신속하게 보고싶어하는 Telent과 같은 애플리케이션 등에 유용 |
15 |
보안 최대화 |
- 가장 안전한 경로를 통해 패킷을 라우트를 요구 - 실험용이므로 지원하지 않는 곳이 많음 |
④ Total Length
- IP 데이터그램의 전체 길이이다.(Byte)
⑤ Identification
- 단편화가 발생한 경우 조각을 다시 결합하기 위해 호스트가 전송한 데이터그램을 유일하게 식별한다.
⑥ Flags
- 단편화(Fragmentation)에 대한 정보이다.
0으로 고정 (1 bit) |
May Fragment (1 bit) |
More Fragments (1 bit) |
-> May Fragment (라우터에 의해 분열되는 여부)
0 : 분열가능
1: 분열 방지
-> More Fragments (분열된 단편화된 조각이 더 있는지 여부)
0 : 마지막 조각
1: 조각이 더 있음
⑦ Fragmentation offset
- 패킷이 분할되기 전 데이터에서의 위치를 8바이트 배수로 표현한다.
ex) 4라면 원래 데이터의 32바이트에 위치하는 패킷이다.
⑧ TTL (Time To Live)
- 데이터그램이 지날 수 있는 라우터의 수이다.
⑨ Protocol
- 상위 계층의 프로토콜
value |
protocol |
1 |
ICMP |
2 |
IGMP |
6 |
TCP |
8 |
EGP |
17 |
UDP |
41 |
IPv6 |
89 |
OSPF |
⑩ Header checksum
- IP 헤더의 checksum을 저장한다.
- 라우터를 지날때마다 다시 계산을 하기 때문에 속도가 떨어진다.
⑪ Source IP address
- 발신지 IP 주소이다.
⑫ Destination IP address
- 목적지 IP 주소이다.
⑬ Option
- 보안의 목적을 위해 사용하거나 라우팅 경로를 지정하거나 시간을 기록하는 데에 사용한다.
[IP 패킷 분석 1]
- 아래는 10.10.0.3에서 192.168.0.128로 ping했을 때의 상황을 캡처한 것이다.
<10.10.0.3 호스트에서 캡처한 모습>
(1)-> ping을 하여 ttl이 128인 상태로 Echo request패킷이 날라갔고
(2)-> 이에 대한 응답으로 상대편에서 돌아올 때 라우터를 1개 거쳤기 때문에 ttl이 127이 돼서 왔다.
<192.168.0.3호스트에서 캡처한 모습>
(1)-> 상대편에서 ping을 했기 때문에 라우터를 1개 거쳐서 ttl이 127인 패킷이 캡처됐다.
(2)-> 이에 대한 응답으로 상대편에게 ttl이 128인 상태로 Echo request패킷을 보냈다.
[IP 패킷 분석 2]
- 단편화 패킷이 발생한 상황을 캡처한 것이다.
(2)->
(3)->
(4)->
(5)->
(6)->