基础概念
网络层(Network Layer)是OSI模型中的第三层。它主要负责将数据包从源主机传输到目标主机中的正确位置。
该层的主要功能包括:
- 寻址和路由:确定数据包的目的地,并选择最佳路径来传输数据。
- 分组:将数据分割成较小的包以便进行更有效的传输。
- 连接服务:提供多种服务类型,如无连接服务和面向连接服务等。
在TCP/IP协议栈中,网络层使用IP协议进行通信。IP协议是一种无连接协议,它没有建立一个持久的连接,而是每个数据包都独立传输。IPv4是当前广泛使用的版本,但随着IPv4地址空间的枯竭,IPv6正在逐渐被采用。
常见协议有:IPv4、IPv6、ICMP、IGMP等
IP协议
IP:Internet Protocol,因特网协议,TCP/IP协议簇中最核心的协议
IPv4报文结构
数据包分片与重组
MTU是Maximum Transmission Unit(最大传输单元)的缩写,它是指在一次网络通信中可以通过的最大数据包大小,也就是以太网以上所有的载荷,以太网的MTU为1500字节。
如果发送方要发送比MTU更大的数据包,则必须将其分割成较小的片段,并在接收方重新组装,这个过程称为分片和重组。
ICMP演示
正常ping
可用空间:
1500 - 20(IP报头)- 8(ICMP报头)= 1472字节
注意:
ICMP是IP协议上层数据包,使用ICMP时,不需要通过端口号等进行TCP/UDP通信,对方只要回复ICMP_reply就可以,所以无法通过抓取TCP/UDP数据包查看ICMP。
超出MTU
设置ping发送的数据包大小:
ping -l 数据包大小
- IP头部每次分片都会重新填充
- ICMP的8字节只有在第一个分片中存在
TTL
TTL:Time to Live,生存时间
- 防止IP数据包在网络内无休止地传输(产生环路)
- 每经过一次路由TTL值就会减1
- 当TTL=0时,丢弃数据包
设置TTL值
ping -i 1 ip
- 终端中看到的TTL数值是对方回来的TTL,不是自己发送的TTL
- 自己发送的TTL可以通过抓包查看发送的数据包里的值
- 可以根据TTL特性进行路由跟踪
tracert
- tracert 每次会发送三个数据包,来确保尽可能成功获得结果
- tracert是通过逐渐增加TTL值来确定节点的
- 如果tracert返回*,也就是无结果,有可能是超时,也有可能是对方设置不返回结果
协议号
- 用于标识上层协议