数据如何在网络中传输?
1.网络通信协议
追根溯源,要说到网络通信协议的形成。
本质上就是互联网要开始商用了,但彼此之间都使用自己的解码编码方式,无法交流,没有统一的语言来解析处理数据,于是国际组织出面建立了统一的标准。
下面讲最主流的网络通信协议——OSI以及TCP/IP通信协议
- OSI
其处理与传输数据的方式大致有七层结构,被称为开放互连参考模型。
OSI模型由ISO组织制定
分层 | 设备 | 数据 | 功能 |
---|---|---|---|
7-应用层 | —— | 为应用程序提供网络服务 | |
6-表示层 | —— | 据格式化,加密、解密 | |
5-会话层 | —— | 会话连接 | |
4-传输层 | —— | segment段 | 端到端连接 |
3-网络层 | 路由器、三层交换机等 | packet包 | IP寻址和路由选择 |
2-数据链路层 | switch交换机、网桥Bridges等 | Frame 帧 | 编帧,识别帧(控制网络层与物理层之间通信) |
1-物理层 | modem信号放大器、hub集线器等等 | bit比特 | 比特流传输 |
- TCP/IP
4-应用层
3-传输层
2-网络层
1-网络接口层
2.数据封装
bit-frame-packet-segment-上层PDU
应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。如上层数据在传输层添加TCP报头后得到的PDU被称为Segment(数据段);数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);最后,帧被转换为比特,通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装。
3.帧格式
以太网技术使用两种标准帧格式
1.Ethernet II
D.MAC--S.MAC--Type--Data--FCS
D.MAC(Destination MAC):目的MAC地址,标识帧的接收者。
S.MAC(Source MAC):源MAC地址,标识帧的发送者。
类型字段Type:标识数据字段中包含的高层协议。
例如取值为0x0800的帧代表IP协议帧;类型字段取值为0x0806的帧代表ARP协议帧。
数据字段Data:上层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节
FCS:提供了一种错误检测机制。
2.IEEE 802.3
IEEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。
D.MAC--S.MAC--Length--LLC--SNAP--Data--FCS
Length:定义了Data字段包含的字节数
逻辑链路控制LLC(Logical Link Control)=DSAP-SSAP-Control
DSAP(Destination Service Access Point):目的服务访问点
SSAP(Source Service Access Point):源服务访问点
Control:
SNAP=Org Code-Type
Org Code:机构代码,三个字节都为0。
IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
1)当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。
2)当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多种协议。
3)DSAP和SSAP其他取值均为纯IEEE802.3帧。
4.帧的发送方式(局域网)
- 单播;
单一的源端发送到单一的目的端
- 广播
单一的源发送到共享以太网上的所有主机
目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF
tips:广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。
当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式。
- 组播
组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧
tips:组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0
5.帧的发送与接收过程
MAC地址由两部分组成,前24位代表该供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配
- 帧中,这个帧可能到达多个主机。主机检查从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址,也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧。
- 的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。本例中,Type字段的值为0x0800,表明该帧需要发送到IP协议上处理。在发送给IP协议之前,帧的头部和尾部会被剥掉。