前言
理解IP数据包格式
理解并应用ICMP协议原理
掌握ARP协议
理解ARP攻击与欺骗的原理
5.1 IP数据包格式
IP在OSI七层中属网络层,网络层负责定义数据通过网络流动所经过的路径。它的主要功能可以总结位以下几点:
-
定义了基于IP协议的逻辑地址。(IP地址
-
连接不同的媒介类。
-
选择数据通过网络的最佳路径,完成逻辑地址寻址。
数据封装在网络层会封装头部IP地址,形成IP数据包 。 IP数据包头部格式如下:(固定部分:20byte,是每个IP数据包必须包含的部分,以及40byte的【可增加】部分——【可选项】。
-
版本号(4bit,以下省略bit比特流,8bit=1byte):指IP协议版本。版本号范围由 0000~1111,共15个,(4bit代表了4位二进制数)。并且通信双方使用的版本必须一致,目前我们使用的是IPv4,表示为0100
-
首部长度(4):决定IP数据包的包头长度(不包括数据)最小20字节,最大60字节。(比特位标识0101~1111)
-
优先级与服务类型(8):该字段用于表示数据包的优先级和服务类型。通过在数据包中划分一定的优先级,来实现服务质量的要求。服务类型定义了如何处理数据(一般没有使用
-
总长度(16):IP数据包的总长度,最长为 65535 字节,包括包头和数据。
-
标识符(16):该字段用于表示IP数据包的标识符。当IP对上层数据进行分片时,它将给所有的分片数据分配一组编号,然后将这些编号放入标识符字段中,保证分片不会被错误地重组。标识符字段用于标志一个数据包,以便接收节点可以重组被分片的数据包
-
标志(3):和标识符一起传递,指示不可以被分片或者最后一个分片是否发出(完整),“确定最后一片”
-
段偏移量(13):一个数据包需要分片,指明这个分片后数据到原始数据(第一位数据)的距离,作用重组数据
-
TTL(time to live)生命周期(8):可以防止一个数据包在网络中无限循环的转发下去,每经过一个路由器 -1,当TTL的值为0时,该数据包将被丢弃。 0-255,如从255开始递减 。
-
协议号(8):封装的上层哪个协议,ICMP:1 TCP:6 UDP:17
-
首部校验和(16):这个字段只检验数据报的首部,不包括数据部分。这是因为数据报每经过一次路由器,都要重新计算一下首部校验和(因为,一些字段如生存时间、标志、片偏移等可能发生变化)
-
源地址(32):源ip地址,表示发送端的IP地址
-
目标地址(32):目标ip地址,表示接收端的IP地址
-
可选项:选项字段根据实际情况可变长,可以和IP一起使用的选项有多个。例如,可以输入创建该数据包的时间等。在可选项之后,就是上层数据。
5.2 ICMP协议
“Internet控制消息协议”ICMP (Internet Control Message Protocol)是IP协议的辅助协议,ICMP协议用来在网络设备间传递各种差错和控制信息,对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。
ICMP的作用:主要作用是检测主机之间网络的双向连通性。以及追踪功能,追踪拓扑(排错用,排拓扑的错)
5.2.1 ICMP的主要功能
采取“错误勘测与回馈机制”,通过IP数据包封装,用来发送错误和控制消息。目的是能够掌握网络连通状况
5.2.2 ICMP的基本使用
ICMP协议基本是靠各种命令实现的,主要是ping命令和tracert命令,以下是命令使用。
1.ping命令
ping 空格 IP地址 [选项]
ping 空格 IP地址-l 字节数(如1600) ——指定数据包的大小
ping 空格 IP地址-t——长ping,会一直ping下去,按CTRL+C停止
ping 空格 IP地址-w 时间——超时等待时间
ping 空格 IP地址-n 个数(如5)——指定ping几次,指定发送几个包
以上ping里[选项]可同时叠加命令使用
ping–help ——帮助
2.tracert命令(win)/traceroute(Linux)
tracert 空格 IP ——经过几个路由设备。追踪功能
注:
排错思路,当你的服务出了问题(网络不通)
第一件事是ping(查看ICMP连通性(?)
- ping 127.0.0.1 回环 -------------------- 硬件
- ping 看双方地址是否有问题 ------------地址
- ping 看网关是否有问题------------------网关(设置)
- 防火墙策略是否有问题-------------------防火墙( 配合 找网络工程师)例:防火墙禁用了ICMP协议
具体ping ping不通⬅算网络不通的一种