目录
一,协议模型
二,物理层
三,链路层
四,网络层
五,Wireshark
一,协议模型
1,三种模型
- 七层模型:由
ISO
(国际标准化组织)制定的参考模型 - 四层模型:实际应用最广泛的模型
- 五层模型:为学习网络原理而设计的模型
2,请求过程
- 客户端的应用层将数据向下传递给物理层,每一层都会在数据的头部或尾部添加一些信息
- 客户端的物理层将数据发送给服务器的物理层
- 服务器的物理层将数据向上传递给应用层,每一层都会解析数据的头部或尾部信息
3,常见协议和数据类型
二,物理层
1,基本知识
- 传输介质(比如网线)不属于该层
- 该层的主要作用:定义数据是如何在传输介质上进行传输的,比如传输速率、传输方式等
- 在该层工作的设备:调制解调器,集线器
2,模拟信号和数字信号
- 模拟信号
1>连续的信号,适合长距离传输
2>抗干扰能力差,受到干扰时波形变形很难纠正
- 数字信号
1>离散的信号,不适合长距离传输
2>抗干扰能力强,受到干扰时波形失真容易修复
3,通信模型
- 说明
1>网线传输的是数字信号,电话线传输的是模拟信号,光纤传输的是光信号
2>调制解调器用来转换数字信号和模拟信号
3>光电转换器用来转换数字信号和光信号
4>网线不适合长距离传输,电话线和光纤适合长距离传输
- 局域网
- 广域网
4,信道
- 介绍
1>信息传输的通道
2>一条传输介质上(比如网线)上可以有多条信道
- 单工通信
1>信号只能往一个方向传输,任何时候都不能改变信号的传输方向
2>比如无线电广播
- 半双工通信
1>信号可以双向传输,但必须交替进行,同一时间只能往一个方向传输
2>比如对讲机
- 全双工通信
1>信号可以同时双向传输
2>比如电话
三,链路层
1,基本知识
- 链路就是某个节点到相邻节点的物理线路,中间没有其他交换节点
1>下面红色框代表一个链路
2>集线器没有智商,不算交换节点
- 在链路上需要有对应的通信协议来控制数据的传输,不同的链路所用的通信协议也是不同的
1>广播信道:
CSMA/CD
协议(比如用集线器连接的信道)
2>点对点信道:PPP
协议(比如两个路由器之间的信道)⚠️注意⚠️:信道改变 -> 协议改变 -> 帧首部和帧尾部改变
- 该层的主要作用:封装成帧、透明传输、差错检验
- 在该层工作的设备:网桥、交换机、网卡
2,封装成帧
- 帧的数据部分就是网络层传递下来的数据包
-
MTU
(Maximum Transfer Unit
)表示最大传输单元 - 每一种链路层协议都会规定
MTU
,一般为1500个字节
3,透明传输
- 问题
1>
SOH
(Start Of Header
)为帧开始符
2>EOT
(End Of Transmission
)为帧结束符
- 解决
将数据中出现的特殊字符进行转义
4,差错检验
-
FCS
(Frame Check Sequence
)表示帧校验序列,存储于帧的尾部 -
FCS
是根据帧的数据部分和首部计算得出的 - 接收端会重新计算一次,然后与
FCS
进行对比
5,网卡
- 网卡会对帧进行差错检验
- 检验通过就接收,否则就丢弃
- 检验通过后网卡会将
FCS
去掉
6,CSMA/CD协议
- 介绍
1>
CSMA/CD
(Carrier Sense Multiple Access/Collision Detection
)表示载波侦听多路访问/冲突检测协议
2>使用CSMA/CD
协议的网络被称为以太网(Ethernet
),传输的是以太网帧,以太网帧的常用格式为Ethernet V2
3>集线器是半双工通信,需要使用CSMA/CD
协议;交换机是全双工通信,不需要使用CSMA/CD
协议
4>以太网是一种计算机局域网技术
- 说明
1>载波侦听:在发送消息之前,先侦听信道是否空闲,如果空闲就发送,否则就等待
2>冲突检测:在发送信息之后,会检测消息是否产生冲突,如果有就取消发送
3>冲突检测的前提条件:帧长度至少64个字节
- 格式
1>数据部分长度范围:
46 ~ 1500
(字节),帧长度范围:64 ~ 1518
(字节)
2>曼彻斯特编码技术会自动识别帧的开始与结束,所以没有帧开始符和帧结束符
3>帧首部包括:目标MAC地址、源MAC地址、协议类型(IPv4
或IPv6
)⚠️注意⚠️:插入的8个字节是物理层首部
- 填充
1>如果数据部分的长度小于46个字节,链路层会在数据后面填充一些字节
2>接收端会将填充的字节去掉
7,PPP协议
- 介绍
PPP
(Point to Point Protocol
)表示点对点协议
- 格式
1>
F
:帧开始符和帧结束符,固定值为0x7E
2>A
(Address
,地址域):用不上,点到点信道不需要源MAC地址和目标MAC地址,固定值为0xFF
3>C
(Control
,控制域):作为保留,固定值为0x03
4>协议域:内部用到的协议类型
- 转义
1>将
0x7E
转换为0x7D5E
2>将0x7D
转换为0x7D5D
四,网络层
1,基本知识
- 数据包包括首部和数据部分
- 首部包括固定部分(20个字节)和可变部分(40个字节)
- 数据部分是传输层传递下来的数据段
- 该层的主要作用:分片与重组、路由与寻址
- 在该层工作的设备:路由器
2,版本、首部长度、区分服务、总长度
- 版本
1>占4位
2>值为0b0100
(十进制为4)表示版本为IPv4
3>值为0b0110
(十进制为6)表示版本为IPv6
- 首部长度
1>占4位
2>值为0b0101
(十进制为5)表示长度为20个字节(可变部分不用)
3>值为0b1111
(十进制为15)表示长度为60个字节(可变部分全用)
4>十进制 = 长度 / 4 (4位存储的数值有限)
5>可变部分一般不用,所以长度一般为20个字节
- 区分服务
1>占8位
2>用于提高网络的服务质量
3>值默认为0,设置值可以让数据包在网络中优先传输
- 总长度
1>占16位
2>总长度 = 首部长度 + 数据长度,最大值为65535
(16位都为1)个字节
3>由于帧的数据部分不能超过1500个字节,所以过大的数据包需要分成片传输给链路层
4>每一片都有自己的网络层首部
3,标识、标志、片偏移
- 标识
1>占16位
2>标识代表数据包的ID,同一个数据包所有片的标识都是相同的
3>有一个计数器专门管理数据包的ID,每发出一个数据包,ID就加1
4>ID最大为65535
(16位都为1),一旦超过就重新从0开始计算
- 标志
1>占3位
2>第1位(Reserved bit
):保留位
3>第2位(Don't fragment
):0表示允许分片,1表示不允许分片
4>第3位(More fragments
):0表示是最后一片,1表示不是最后一片
- 片偏移
1>占13位
2>片偏移 = 字节偏移 / 8(13位存储的数值有限)
3>每一片的长度一定是8的整数倍
4,生存时间、协议、首部检验和
- 生存时间
1>占8位
2>每个路由器在转发之前会将TTL
减1,一旦发现TTL
为0,路由器会停止转发并返回错误信息
3>可以防止数据包在网络中不停的被转发
- 协议
1>占8位
2>表示数据部分使用的是哪种协议(传输层协议)
- 首部检验和
1>占16位
2>是将首部根据某种算法计算得出的
3>接收端会重新计算一次,然后与之进行对比
5,常用协议
-
IP
(Internet Protocol
):网际协议,根据源主机和目标主机的地址来传递数据,有IPv4
和IPv6
两个版本 -
ARP
(Address Resolution Protocol
):地址解析协议,根据IP地址获取MAC地址 -
ICMP
(Internet Control Message Protocol
):互联网控制消息协议,如果在通信过程中出现了问题,它会将错误信息返回给发送者
6,IPv6
- 基本介绍
1>
IPv4
是IP
协议的4.0版本;IPv6
是IP
协议的6.0版本
2>IPv4
的IP地址长度为4个字节(32位),可以容纳2^32
个IP地址;IPv6
的IP地址长度为16个字节(128位),可以容纳2^128
个IP地址
3>IPv4
的IP地址一般用十进制来表示,每个字节之间用.
隔开;IPv6
的IP地址一般用十六进制来表示,每两个字节之间用:
隔开
4>由于IPv4
的IP地址不够用了,所以才推出IPv6
- 地址格式
1>可以省略每组前面连续的0
2>可以用双冒号“::
”表示一组或多组连续的0,但只能出现一次,否则会造成歧义
3>::1
=0:0:0:0:0:0:0:1
=0000:0000:0000:0000:0000:0000:0000:0001
- 首部格式
固定首部占40个字节
1>Version
(占4位):版本,值为0b0110
2>Traffic Class
(占8位):数据包的优先级,路由器会根据优先级来处理数据包
3>Flow Label
(占20位):标识该数据包属于哪一个数据流
4>Payload Length
(占16位):扩展首部的长度 + 上层(传输层)数据的长度,最大值为65535
个字节(16位都为1)
5>Next Header
(占8位):下面详细介绍
6>Hop Limit
(占8位):与IPv4
的生存时间相同
7>Source Address
(占128位):源IP地址
8>Destination Address
(占128位):目标IP地址
- 扩展首部
1>如果存在下一个扩展首部,那么
Next Header
存储的就是下一个扩展首部的类型
2>如果不存在下一个扩展首部,那么Next Header
存储的就是上层(传输层)数据的协议类型(例如TCP
、UDP
等)
五,Wireshark
1,链路层
- 首部
1>
Ethernet II
:Ethernet V2
2>Destination
:目标MAC地址
3>Source
:源MAC地址
4>Type
:协议类型(IPv4
或IPv6
)
- 尾部
1>
Ethernet V2
格式的尾部只有FCS
2>Wireshark
抓到的都是差错检验通过的帧
3>网卡会将差错检验通过的帧的FCS
去掉
4>所以在Wireshark
中看不到帧的尾部
2,网络层
- 首部
1>
Internet Protocol Version 4
:IPv4
2>Version
:版本
3>Header Length
:首部长度
4>Differentiated Services Field
:区分服务
5>Total Length
:总长度
6>Identification
:标识
7>Flags
:标志
8>Fragment offset
:片偏移
9>Time to live
(TTL
):生存时间
10>Protocol
:协议
11>Header checksum
:首部检验和
12>Source
:源IP地址
13>Destination
:目标IP地址
- 分片
1>向
www.qq.com
服务器发送一个4000字节的数据包
2>网络层会将数据包分成3片(上面3片是请求的,下面3片是响应的)
3>第1片
4>第2片
5>第3片