网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,下面从IP数据的结构介绍,引入两个重要的协议——ICMP和ARP。
目录
前言
一、IP数据包格式
1. 图示
2. 注释
二、ICMP协议
1. 定义
2. ICMP的基本使用方法
2.1 ping
2.2 tracert
2.3 冲突域
2.4 广播域
三、ARP协议
1. 定义
2. 工作原理
四、总结
·版本号(4bit):指IP协议版本。并且通信双方使用的版本必须一致,目前我们使用的是IPv4,表示为0100十进制是4,将来或使用的IP协议——IPv4和IPv6
·首部长度(4):IP数据包头部长度,P头部范围:20~60字节
·优先级与服务类型(8) :区别数据包的优先处理级别
·总长度(16):整个数据包长度,最长为 65535 字节,包括包头和数据
·标识符(16):确定数据的分片是否来自于同一个文件
·标志(3):代表数据过小不需要分片,代表该组最后一个数据包
·段位偏移量(13):该数据分片离起点的位置坐标。以传输10G数据为例,如果分10个1G传输,在传输过程中,并非按照分片顺序依次组合,需要记录每片段位偏移量,最终与发送端保持一致
·TTL(8):生命周期,最大值255,如果为0,设备会认为该包为无效包,从而丢弃;二层交换机不会减少TTL,三层交换机会减;一般情况下:ttl>=128是Windows系统,ttl<=64是Linux系统
·协议号(8):封装的上层(传输层)的协议,ICMP:1、TCP:6、UDP:17、TCP:6。其中ICMP是特殊的测试协议号,检测网络的双向连通性
·首部校验和(16):这个字段只检验数据报的首部,不包括数据部分。这是因为数据报每经过一次路由器,都要重新计算一下首部校验和(因为,一些字段如生存时间、标志、片偏移等可能发生变化)
·源地址(32):源ip地址,表示发送端的IP地址
·可选项:根据字段根据实际情况可变长,可以和IP一起使用的选项有多个
ICMP(Internet Control Message Protocol)Internet控制协议。它是TCP/IP协议的议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。采取的是“错误侦测与回馈机制” 是通过IP数据包封装的,用来发送错误的控制信息。目的是用来掌握网络的联通状况。
① 其实是一个小巧而实用的应用程序,该应用基于ICMP协议。ping常用于探测到达目的节点的网络可达性
② ping格式:“ping 【选项】 IP地址”,ping 用来测试网络可达性
③ 部分使用方法
ping --help:显示帮助命令,Linux是man ping
ping -t ip地址:长ping地址,也可以写成ping ip地址 -t,可以ctrl+c停止长ping
ping -l ip地址: 指定包的大小,Windows以1500字节为一个单位,最大能发送65500字节,超过需要分片
ping -w ip 地址:指定等待回复的超时时间,单位是毫秒,默认4000毫秒
ping -n ip 地址:指定ping的次数
批量ping:以检测网段192.168.1.1到192.168.1.255之间的所有的ip地址为例,同时每个IP只ping一次,超时等待回复时间1000毫秒
cmd输入:“for /l %D in (1,1,255) do ping 192.168.1.%D -n 1 -w 1000 && echo 192.168.1.%D up>>D://a.txt || echo 192.168.1.%D down>>D://b.txt”
其中for循环/l表示以增量形式从开始到结束的数字序列,%d整数,初始值为1增量为1,255结束;echo是一个计算机命令,作用显示文字;&&判断是否为真,为真输入到D盘a.txt,否则输入到D盘b.txt
④ 报文重要字段:Type+Code——不同组合可以表示不同功能的ICMP报文
Type | Code | 描述 |
---|---|---|
0 | 0 | Echo Reply 回复 |
3 | 0 | 网络不可达 |
3 | 1 | 主机不可达 |
3 | 2 | 协议不可达 |
3 | 3 | 端口不可达 |
11 | 0 | 超时重定向 |
8 | 0 | Echo Request 请求 |
长ping百度抓包查看Type和Code值
① tracert用来显示到达目的主机的路径,用于跟踪数据包的转发路径,一般用于排障。它能够向目标主机发送 ICMP 请求数据包,不仅测试服务器是否可达,还会输出明确的路由信息。每当数据包到达一个路由跃点时,路由跟踪的生存时间(TTL)值就会减 1。当值为 0 时,路由器/网关就会响应一个 ICMP 回复数据包。
② 用法
① 两台设备同时发送消息时,互相干扰,那他们就处于同一个冲突域。冲突会使以太网致命故障,导致信号冲突,数据损坏、丢失、数据传输慢。
② 解决方法:分割冲突域;修改设备的接口模式为全双工模式
一台机器发送广播,能收到消息的机器都是在同一广播域,交换机的所有端口默认在同一个广播域里,路由器的每一个端口都是一个独立的广播域。
是根据IP地址获取物理mac地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。可以输入“arp -a”命令查看当前缓存列表。当配置IP地址是,可以检测地址是否有冲突。
·以PC1和PC2为例介绍
① PC1想发送数据给PC2,会先检查自己的ARP缓存表。对方IP地址已知。
② 如果发现要查找的MAC地址不在表中,就会发送一个ARP请求广播,用于发现目的MAC地址。 ARP请求消息中包括PC1的IP地址和MAC地址以及PC2的IP地址和目的MAC地址(MAC地址FF-FF-FF-FF-FF-FF为广播)
③ 交换机收到广播后做泛洪查询处理,除PC1外所有主机收到ARP请求消息,PC2以单播点对点方式发送ARP应答, 并记录PC1的IP地址和MAC地址的对应关系,而其他主机则丢弃这个ARP请求消息
④ PC1在自己的ARP表中添加PC2的IP地址和MAC地址的对应关系,以单播方式与PC2通信。
ICMP 是 TCP/IP 模型中网络层的重要成员,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息;ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。