1 IP数据包格式
IP数据包格式(分为20字节的固定部分,表示每个ip数据包必须包含的部分,和40字节的可变长部分)
版本号(4bit):指IP协议版本。并且通信双方使用的版本必须一致,目前我们使用的是IPv4,表示为0100 十进制 是4
首部长度(4):IP数据包的包头长度(不包括数据)
优先级与服务类型(8):该字段用于表示数据包的优先级和服务类型。通过在数据包中划分一定的优先级,服务类型定义了如何处理数据一般没有使用
总长度(16):IP数据包的总长度,最长为 65535 字节,包括包头和数据。
标识符(16):该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片数据分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包
标志(3):和标识符一起传递,指示不可以被分片或者最后一个分片是否发出(完整)
段偏移量(13):一个数据包需要分片,指明这个分片举例原始数据开始的位置,作用重组数据
TTL(time to live)生命周期(8):可以防止一个数据包在网络中无限循环的转发下去,每经过一个路由器 -1,当TTL的值为0时,该数据包将被丢弃 0-255
协议号(8):封装的上层哪个协议,ICMP:1 TCP:6 UDP:17
首部校验和(16):这个字段只检验数据报的首部,不包括数据部分。这是因为数据报每经过一次路由器,都要重新计算一下首部校验和(因为,一些字段如生存时间、标志、片偏移等可能发生变化)
源地址(32):源ip地址,表示发送端的IP地址
目标地址(32):目标ip地址,表示接收端的IP地址
可选项:选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后,就是上层数据
注:根据实际情况可变长,例如创建时间等 上层数据
tip:通过 TTL的 返回值确定你的系统类型:win 128 左右 linux 64 左右
2 icmp协议(Internet控制消息协议)
icmp协议:
ICMP是一个“错误侦测与回馈机制”
通过IP数据包封装
用来发送错误和控制消息
icmp协议的作用:
检测网络的双向联通性
Icmp协议的基本使用:
ping格式
在windows系统中ping的常用参数:
参数 | 作用 |
-l | 指定数据包的 大小 |
-t | 长ping 一直ping 下去 ctrl+c 停止 |
-w | 超时等待时间 |
-n | 指定ping 几次 |
在linux系统中ping常用参数:
参数 | 作用 |
-s | 参数可以设定Ping包的大小 |
-c | 指定发送包的个数 |
小结:
功能:Ping Ping是网络设备、Windows、Unix和Linux平台上的一个命令,其实是一个小巧而实用的应用程序,该应用基于ICMP协议。 Ping常用于探测到达目的节点的网络可达性。
tips:
当你的网络出现问题时排错思路:
1 ping 自己 127.0.0.1 硬件
2 看双方地址是否有问题
3 看网关是否有问题
4 防火墙策略是否有问题( 配合找网络工程师)
3 arp协议
arp协议:
ARP(Address Resolution Protocol,地址解析协议)的基本功能是负责将一个已知的IP地址解析成MAC地址。
arp工作原理:
1 如果PC3要发送数据给PC4,会先检查本机的arp缓存表,如果有就直接发送
2 如果检查到没有,就会发送广播来寻找目的mac地址
3 交换机收到广播后就会泛洪,同一网段的所有机器都会收到,当目的PC4收到广播时,发现是自己的信息,并以单播的形式回复。
4 PC3会收到PC4的回复,数据包里面会携带PC2 的 MAC地址 ,通过ARP协议知道 mac地址后,进行数据帧的封装。
windows系统中arp的常用参数:
命令 | 作用 |
arp -a | 查看ARP缓存表 |
arp -d [IP] | 清理ARP缓存 |
arp -s IP MAC | ARP 静态绑定 |
arp攻击与欺骗:
ARP攻击 ARP攻击发送的是ARP应答,但是ARP应答中的MAC地址为虚假地址,所以在其他主机想要进行通信时,会将目的MAC地址设置成此虚假MAC地址导致无法正常通信。
ARP欺骗的原理和ARP攻击基本相同,但是效果不一样。ARP攻击最终的结果是导致网络中断,而ARP欺骗的最终结果是使得流量通过自身达到监控或控制的目的。