ICMP(Internet控制消息协议)
发送到远程计算机的数据通常会经过一个或多个路由器,这些路由器吧数据传输到最终目的地的过程中可能发生多种问题。路由器利用Internet控制消息协议把问题通知给源IP。
常见的ICMP消息:
- Echo Request(回显请求)和Echo Relay(回显应答):测试ping
- Source Quench(源抑制):限速
- Destination Unreachable(目的不可到达):设备故障或维护
- Time Exceeded(超时):数据报TTL为0时被抛弃,防止环路路由
- Fragmentation Needed(需要分段)
网络ID主机ID
- A类地址使用地址前八位(0~127)
- B类地址使用地址前十六位(127~191)
- C类地址使用地址前二十四位(192~223)
- D类地址用于多播,多播是把一个消息发送到网络的子网,这与广播是不同的,后者需要网络上全部节点都进行处理。
特殊的IP地址 - 全0的主机ID表示网络本身。全1的主机表示广播。
- 以127开头的地址为环回地址。目的地址为环回地址的消息是由本地TCP/IP软件发送的,其目的在于测试TCP/IP软件是否工作正常。
IP报头的内容
每个IP数据报都以一个IP报头开始。源计算机的TCP/IP软件构造这个IP报头,目的计算机的TCP/IP软件利用IP报头中封装的信息处理数据,IP报头包含大量信息,包括源IP地址、目的IP地址、数据报长度、IP版本号、和对路由器的特殊指令。
版本:所使用的IP版本。
网际报头长度这个4位字段标识IP报头以32字为单位的长度。IP报头的最小长度是5个32比特,相应的为0101
服务类型
总长度 IP数据报总长度。
标识当传到IP层的消息太大而不能放在一个数据报里时,会把消息拆分到多个数据报,并对这些数据报排序分配相同的标识号。接收端利用这些数值重组为原始消息。
标记这个字段标识分段的可能性。第一位未使用,为0,第二位为DF(不分段),表示是否允许分段,0表示允许,1表示不允许。第三位是MF(更多分段),表示是否还有分段正在传输,设置为0表示没有或者数据报根本没有分段。
分段位移这个13位字段是一个数值,被赋予没一个连续的分段。目的设备的IP利用这个值以正确的次序重组分段。这个数值使用的单位是8字节。
生存时间
协议表示协议方式,比如00000110(6)为TCP
报头校验和
源IP地址
目的IP地址
IP选项
填充填充保证报头为32位的倍数。
IP数据载荷
IP地址的用途
网际协议(IP)
IP协议提供了一种分层的、与硬件无关的寻址系统,具有在复杂的路由式网络中传递数据所需的服务。TCP/IP网络上的每个网络适配器都有一个唯一的IP地址。
- 如果目的地址与源地址在同一个网段,源计算机就把数据包直接发送给目的计算机。IP地址被ARP解析为物理地址,数据被直接发送到目的网络适配器。
- 如果目的地址与源地址不在一个网段上,就执行如下过程:
- 直接将数据报发送到网关。网关是位于局域网段上的一个设备,能够把数据报转发到其他网段。网关地址被ARP解析为物理地址,数据被发送到网关的网络适配器。
- 数据包通过网关被路由到较高级别的网段,再次重复上述过程,如果目的地址在这个新网段里,数据就发送到目的地,否则数据报就会被发送到另一个网关。
- 数据包经过一系列网关被转发到目的地网段,目的IP地址被ARP解析为物理地址,数据被发送到目的网络适配器。