IP 헤더 구조를 보면, IP 프로토콜이 무슨 기능을 가지고 있는지 좀 더 명확하게 알 수 있따. IP Header는 버전(Version) 정보를 가지고 있다. 버전 정보는 IPv4 혹은 IPv6을 구분하는 역할을 수행하며, 즉, 버전 정보를 보고 라우터가 IP 헤더 구조를 파악하는 것이다.
또한 Flag와 Fragment Offset이라는 것이 있는데, 이것은 패킷을 전송할 때 패킷의 크기가 너무 크면 패킷은 분할되고 패킷이 분할될 경우 분할된 패킷을 수신자가 수신 이후에 다시 조립을 해야 하기 때문에 패킷 분할과 관련된 정보가 있는 것이다. 네트워크에는 MTU(Maximum Transmission Unit)라는 것이 있는데, MTU는 한 번에 통과할 수 있는 패킷의 최대 크기를 의미한다. 그래서 MTU 값보다 패킷의 크기가 크면 패킷은 분할되고 그 정보를 Flag와 Offset이 가지고 있게 된다. MTU 값을 확인하고 싶으면 이더넷(Ethernet) 정보를 조회하면 되고 리눅스에서 ifconfig 명령을 실행하면 된다.
TTL(Time To Live)은 IP 패킷이 통과할 수 있는 라우터의 수를 의미하며 라우터를 하나 통과할 때마다 1씩 감소하여 0이 되면 패킷은 자동으로 폐기된다. 이는 인터넷에서 무한정으로 떠도는 패킷을 없애기 위함이다.
Protocol은 IP Header 위의 상위 프로토콜의 종류를 의미하며, TCP 혹은 UDP인지를 의미한다.
Header Checksum 은 헤더의 무결성을 검사하기 위한 것이다.
*IP(Internet Protocol) Header 구조
- Version: IPv4 버전
- Header Length: Header 전체의 길이
- Type of Service: 서비스 유형
- Total Length: IP Datagram의 Byte 수
- Identification: Host에서 보낸 Datagram 식별
- Flags & Offset: IP Datagram 단편화 정보
- Time to Live: Datagram이 통과할 수 있는 라우터 수
- Protocol: ICMP, TCP, UDP
- Header Checksum: IP Header Checksum 계산
IP 주소는 클래스(Class)로 구분되며, 클래스는 IP 주소를 분류하는 기준으로 사용된다. IP 클래스의 구조는 네트워크 ID와 호스트 ID로 분류할 수 있는데 네트워크 ID는 네트워크에 부여될 수 있는 것이고 호스트 ID는 하나의 네트워크에 부여될 수 있는 호스트 IP 주소의 자릿수이다. 그러므로 최대 32비트에 호스트 ID의 자리가 크면 하나의 네트워크에서 많은 수의 컴퓨터에 IP주소를 부여해서 사용할 수 있는 것이다.
클래스 | 메시지 |
---|---|
Class A | - 첫 바이트 7Bit가 네트워크 식별자 - 한 네트워크에 가장 많은 호스트 를 가짐 |
Class B | - 14Bit의 네트워크 식별자 - 한 네트워크에 약 2^16대의 호스트 수용 |
Class C | - 세 번째 바이트까지 네트워크 식별자 - 한 네트워크에 254대까지 수용 |
Class D | 멀티캐스트 주소로 사용 |
ISP(Internet Service Provider) 사업자가 많은 네트워크 망을 효율적으로 관리하기 위해서 네트워크를 묶어 관리하는 방법이다.
Type | Message | 설명 |
---|---|---|
3 | Destination Unreachable | 라우터가 목적지를 찾지 못하는 경우 보내는 메시지 |
4 | Source quench | 패킷을 너무 빨리 보내 네트워크에 무리를 주는 호스트를 제지할 때 사용 |
5 | Redirection | 패킷 라우팅 경로를 수정, Smurf 공격에서 사용 |
8 or 0 | Echo request or reply | Host의 존재를 확인 |
11 | Time exceeded | 패킷을 보냈으나 시간이 경과하여 패킷이 삭제되었을 때 보내는 메시지 |
12 | Parameter Problem | IP Header field에 잘못된 정보가 있다는 것을 알림 |
13 or 14 | Timestamp request and reply | Echo와 비슷하나 시간에 대한 정보 추가 |
데이터 전송 방식은 송신자와 수신자 간에 어떻게 데이터를 보낼 것인지를 의미한다. 즉, 1대 1로 데이터를 전송하는 것은 유니캐스트(Unicast)이고 1대 N으로 모두에게 전송하는 것은 브로드캐스트(Broadcast)이다. 멀티캐스트(Multicast)는 1:N 전송 또는 M:N 전송에서 특정 사용자에게만 데이터를 전송하는 것이다. 애니케스트(Anycast)는 IPv6에 새롭게 등장한 것으로 그룹에 등록된 노드 중에서 최단 경로 노드 한 개에만 전송하는 기술이며, IPv6부터는 브로드캐스트가 없어졌다.
멀티캐스트는 그룹에 등록된 사용자에게만 데이터는 전송하는 것이다. 그룹에 등록된 사용자를 관리하는 프로토콜이 바로 IGMP이다.
ARP 프로토콜은 IP 주소를 물리적 하드웨어 주소인 MAC 주소로 변경하는 프로토콜이다. ARP 프로토콜은 ARP 리퀘스트를 보내고 인접에 있는 컴퓨터가 ARP Reply로 응답한 것을 통해서 ARP Cache Table을 유지한 후 인접 컴퓨터의 IP 주소와 MAC 주소를 가지고 있게 되는 것이다.
RARP는 Diskless Host에서 사용하는 것으로 이것은 운영체제도 없는 일종의 더미 터미널이다. 더미 터미널에서 자신의 물리적 주소인 MAC 주소를 서버에 전송하고 IP 주소를 수신 받아서 기동하는 것이다. 이것은 일반적인 데스크톱 PC에서는 필요하지 않고, 과거 은행에서 더미 터미널을 사용했을 경우 사용했던 방법이다.