网络层提供的服务
网络层负责在不同网络之间尽力转发数据包,基于数据包的IP地址转发
不负责丢失重传,也不负责传输顺序
网络层如何转发数据包
数据通信前的准备:
应用层提供数据
传输层 反段并编号
网络层加上IP地址
数据链路层加上 FCS 和 MAC地址
两种情况 使用自己的子网掩码,判断自己在哪个网段
如果是同一个网段,则ARP协议广播解析目标IP
如果不是同一个网段,就到网关
物理层成为bit stream
途中交换机接收到数据:
交换机转换bit stream 随后查看mac地址,随后选择出口。
途中路由器接受到数据:
根据比特流 随后查看IP地址 根据IP地址选择路径
网络层协议
ARP协议
ARP协议为IP协议提供服务
ARP 将IP地址通过广播 目标MAC地址是FF-FF-FF-FF-FF-FF 解析目标IP地址的MAC地址 (本网段)
详情参考 :https://blog.csdn.net/ever_peng/article/details/80008638
ARP欺骗
当IP4想与M1通信的时候,通过ARP协议广播,此时M1返回自己的MAC地址,M2在他之后返回并告诉IP4机器自己才是目标机器,数据就会发送到M1。
IP协议
RIP
OSPF
网际控制报文协议ICMP协议
ICMP用来测试网络层是否畅通,依赖于IP协议
PING(Packet Internet Grope),因特网包探索器,用于测试网络连接量的程序。Ping发送一个ICMP回声请求消息给目的地并报告是否收到所希望的ICMP回声应答。
time查看延迟
TTL数据包生存时间 过一个路由器TTL -1 当值为0的时候,数据包自动销毁
常见的TLL:
Linux 64
Windows 128
unix 255
ping -t 10.1.1.1 欧拉欧拉ping
ping -l 200 10.1.1.1 指定数据包大小
ping -i 2 10.1.1.1 指定TLL值
Internet组播管理协议 IGMP
IP数据报格式
IP数据包由首部和数据两部分组成
- 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的。
- 在首部的固定部分的后面是一些可选字段,其长度是可变的。
如图所示:
图片上方的数字代表bit,所以是4个字节,共5行,故20个字节。
版本:表示TCP/IP是那个版本的协议 IPV4 IPV6
首部长度:说明这个报文首部有多少字节
区分服务:优先级 车票军人优先 —- 语音数据包 QOS
总长度: 2 16次方 - 1 = 65535字节(网络层最大)
标识:通过标识来重组数据包 分片
标志:标记是否是一个数据包的分片还是完整的数据包
3bit,目前只有2位有意义,最低位是MF(more Flagment)。MF = 1表示后面“还有分片”。MF=0表示最后一个分片。标志字段中间的一位是DF(Don’t Fragment)。只有当DF=0时才允许分块传输。
一个不分片的数据包 010
一个分片的数据包 (第一个 所以片偏移量为0)
片偏移:
不分片的数据包片偏移量都为0
第一个分片的字节是整个数据包的第1480个字节
TTL:数据包的生存时间
协议:协议
ICMP 协议号 1
IGMP 协议号 2
TCP 6
UDP 17 hex
IPV6 41
OSPF 89
首部校验和:首部校验和(16位)字段只检验数据报的首部,不检验数据部分 这里不采用CRC检验码而采用简单的计算方法。
如果传输的过程中出现了错误的话,good = false bad = ture
可选部分:实在是太少见, 内容规范十分丰富。 IPV6没有这个字段
填充 :为可变部分填充