IP数据包格式
IP 报头的最小长度为 20 字节,上图中每个字段的含义如下:
-
版本(version)
占 4 位,表示 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。目前广泛使用的IP协议版本号为 4,即 IPv4。 -
首部长度:表示IP数据包的长度,4字节,IP数据包头最短为20字节,但其长度是可变的,具体长度取决于可选项字段的长度
-
区分服务:该字段表示数据包的优先级与服务类型,8字节
-
总长度:
首部和数据之和,单位为字节。总长度字段为 16 位,因此数据报的最大长度为 2^16-1=65535 字节。 -
标识
该字段用于表示IP数据包的标识符,16字节,当IP对上层数据分片时,将所有的分片分配同一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误的重组 -
标志(flag)
占3字节,标志字段,对当前的包不能进行分片(该包从不一个以太网发送到另一个以太网时),或当一个包被分片后用以指示在一系列的分片中,最后一个分片是否已发出 -
段便宜量
占 13 位。区分同一文件分片后的顺序,保证分片序列中各分片按顺序重新组合 -
生存时间(TTL)
表示数据报在网络中的寿命,占 8 位。 生命周期,经过一个路由器TTL-1,用于防止环路。当 TTL 的值为 0 时,数据包被丢弃。 -
协议
表示该数据报文所携带的数据所使用的协议类型,占 8 位。IP数据包中封装的上层数据协议是TCP还是UDP。TCP 的协议号为 6,UDP的协议号为 17。 -
首部检验和
差错校验,防止修改,占16位,接受方和网关确认传输的数据有没有被改动过 -
源地址
表示数据报的源 IP 地址,占 32 位。 -
目的地址
表示数据报的目的 IP 地址,占 32 位。 -
可选项:
可选项字段根据实际情况可变长,可以和多个IP一起使用的选项有多个 -
数据部分
表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。
ARP协议
ARP主要功能是地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
广播与广播域
ARP工作原理
每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址。网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP响应数据包,告诉对方自己是它需要查找的MAC地址;源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
ICMP协议
ICMP属于网络层协议及工作在网络层
ICMP是一个错误侦测与回馈机制
通过IP数据包封装的
用来发送错误和控制消息来探测节点间的网络连通性
ICMP封装过程