当前位置:网站首页>网络协议04 - 物理层和数据链路层
网络协议04 - 物理层和数据链路层
2022-07-30 05:48:00 【大黄_黄】
网络分层模型
为了更好地促进互联网络的研究和发展,国际标准化组织 ISO 在 1985 年制定了网络互连模型,OSI 参考模型(Open System Interconnect Reference Model),具有 7 层结构。然而OSI参考模型仅仅是理论模型,真正应用过程中用得最多的其实是TCP/IP 协议模型,而学习研究时通常则是五层
这五层结构每一层都有一套处理数据包的机制,其处理方式和对应的协议则大致如下图所示:

物理层
模拟信号和数字信号
在物理层,数据是以信号的方式被传输,根据网络范围分为模拟信号和数字信号
模拟信号:连续的信号,适合长距离传输,抗干扰能力差,受到干扰时波形变形很难纠正

数字信号:离散的信号,不适合长距离传输,抗干扰能力强,受到干扰时波形失真可以修复

数据通信模型
在不同的网络通信范围内,对应的网络通信模型如下:
- 局域网通信模型

- 广域网通信模型


信道(Channel)
信道就是信息传输的通道,由发射端传输到接收端所经过的传输媒质所构成,在同一条传输介质(如网线)上可以有多条信道(例如计算机0可以发送数据给计算机1,计算机1也可以发送数据给计算机0)
- 单工通信:信号只能往一个方向传输,任何时候都不能改变信号的传输方向(如无线电广播、有线电视广播)
- 半双工通信:信号可以双向传输,但必须是交替进行,同一时间只能往一个方向传输(如对讲机)
- 全双工通信:信号可以同时双向传输(比如手机打电话,听和说同时进行)
数据链路层
基本概念
从1个节点到相邻节点的一段物理连接(有线或无线),且中间没有其他交换节点,被称之为链路。在一条链路上传输数据时,需要有对应的通信协议来控制数据的传输,而不同类型的数据链路,所用的通信协议可能是不同的。
常见的有:
- 广播信道:CSMA/CD协议,例如同轴电缆、集线器等组成的网络
- 点对点信道:PPP协议,例如两个路由器之间的信道
接下来看如下例图:
从图中可以看出,圈出来的每一部分就代表着一段数据链路
- 计算机0到路由器0,是一段链路,因为中间的集线器可以直接看做是一根网线
- 路由器0到路由器1、路由器1到路由器2,一共两段链路,其分别传输的数据也不太一样,例如源地址和目标地址是会发生改变的
- 路由器2到交换机0,交换机0到计算机1,也是两端链路,但是这两端链路传输的数据是一样的,因为交换机只负责考虑传给谁(暂不考虑三层以上交换机)
数据链路层特点
数据链路层有三个特点:
封装成帧

该特点就是将IP层传下来的数据包加上首部和尾部,封装成帧,而首部和尾部中又包含帧开始符和帧结束符,同时帧的数据部分(IP层数据包)有一个最大值MTU(Maximum Transfer Unit)限制,不能超过这个值。通常在我们日常用的以太网(采用CSMA/CD协议)中的MTU为1500个字节透明传输

在将IP层数据包封装成帧时,帧开始符用SOH代表,帧结束符用EOT代表,然而当数据部分也出现两个符号时,就会出现问题。因此解决方式就是将数据中的特殊符号进行转义
差错校验

数据链路层的帧由帧首部、帧尾部、帧数据三个部分组成,而帧首部中又包含数据链路层首部和帧开始符,帧尾部包含FCS和帧结束符。其中FCS是根据数据链层首部和帧的数据部分算出来的,接受方需要对这个值进行校验,目的是为了防止数据在传输过程中出现变动,一旦发现数据对不上,网卡会直接把数据给丢弃
以上三个特点不管走的什么协议,都会去实现。接下来就看一下每个协议的具体实现
CSMA/CD协议
CSMA/CD协议全称是Carrier Sense Multiple Access with Collision Detection(载波侦听多路访问/冲突检测),字面意思解释就是
- 载波侦听:对信道进行监听,判断是否空闲,是的话才会发送数据,反之则不发
- 多路访问:多个信道上的计算机可以同时发送数据
- 冲突检测:当多个信道上在同时传输数据时,会发生冲突,这里需要检测出是冲突数据还是需要正常接受的数据
使用了CSMA/CD协议的网络可以称为是以太网,其传输的是以太网帧,以太网帧的格式有Ethernet V2标准、IEEE的802.3标准,通常使用最多的是Ethernet V2标准。同时为了检测正在发送的帧是否发生了冲突,以太网的帧最少需要64个字节(可以参考这个回答)
需要注意的是,用交换机组成的网络已经支持全双工通信,不需要再使用CSMA/CD协议,但它传输的帧依旧是以太网帧
Ethernet V2帧的格式
下面图就是以太网帧的格式
从图中可以看出,首部是由目标MAC地址、源MAC地址、类型组成,MAC帧则是由首部、数据、FCS组成。由于MAC帧至少是64字节,因此数据部分至少要46字节(64-6-6-2-4),当数据部分的长度小于46字节时,数据链路层会在数据的后面加入一些字节填充,到接收端时会将添加的字节去掉。当在物理层时,以太网MAC帧前面还会加上8个字节的数据(7个字节的前同步码和一个字节的帧开始符)
在上图中会发现MAC帧没有前面所说的帧结束符,这是因为以太网使用曼彻斯特编码,在传送帧时,各帧之间必须有一定的间隙,接收端只要找到帧开始定界符,其后面连续到达的比特流就都属于同一个MAC帧

因此可以看出以太网帧的数据长度是46 ~ 1500字节,而以太网帧的长度是64 ~ 1518字节
PPP协议(Point to Point Protocol)
下图就是PPP帧的格式
- F:帧开始和帧结束符,值为0x7E
- A:Address字段,值为0xFF,该字段没有什么用,因为点对点信道不需要像上面以太网帧中用到源MAC和目标MAC地址
- C:Control字段,值为0x03,也没有什么用
- Protocol字段:内部用的协议类型
Wireshark抓到的帧没有FCS?
Wireshark是一款用来抓包的工具,在通过抓包对帧格式分析后,会发现Wireshark抓到的Ethernet V2帧没有FCS字段
其实这是因为网卡的原因,网卡在接受到一个帧时,首先会进行差错校验,如果校验通过则被接受,否则丢弃。而Wireshark抓到的就是差错校验通过的帧(帧尾的FCS会被去掉)。
以下是网卡在物理层和数据链路层的具体功能
边栏推荐
- 【JVM】线上应用故障排查
- 一种新的DNA生物素系统Biotin LC hydrazide|CAS:109276-34-8|(+)-生物素酰胺基己酸肼
- STM32F103连接L9110S电机驱动控制小水泵
- This beta version of Typora is expired, please download and install a newer;解决方法
- 【无标题】
- 【部分项目展示】
- 基于THREEJS场景中模型局部辉光效果
- C language, usage of qsort in library function, and explanation
- 51数码管显示
- 比尔·盖茨买百万亩农地成美“头号地主”,图扑数字孪生农场
猜你喜欢

Unity Shader 空间坐标系

基于STM32F103的消防系统之火焰传感器

Azide-SS-biotin|CAS:1620523-64-9|生物素-二硫键-叠氮可降解 (cleavable) 的 ADC linke

Biotin-NHS LC(72040-63-2)生物素接头|站点特定探针

Biotin-PEG4-SS-Alkyne_1260247-54-8_生物素-PEG4-SS-炔烃

Cas 80750-24-9,去硫代生物素 N-羟基琥珀酰亚胺,淡黄色固体

this的指向问题

VsCode打开终端的方法

阿里京东“喜提”国电投,顶流互联网和能源大厂为何合作?

QT serial 4: LORA test platform based on QT and STM32H750 (3)
随机推荐
NS3报错 fatal error: ns3/opengym-module.h: No such file or directory
【动态规划】LeetCode刷题清单及思路记录
VsCode打开终端的方法
快速排序学习记录
ssh script space character conversion
Desthiobiotin-PEG4-Acid|脱硫生物素-PEG4-酸| 供应商和制造商
Word使用中常用的快捷键
mysql数据库怎么设置手动提交
THREEJS辉光与景深特效
ParseException line 8:13 mismatched input ‘(‘ expecting ) near ‘int‘ in create table statement
SQL并列排序问题
力扣题解7.27
基于粒子(Points)模拟雨雪天气效果
Comparison of advantages and disadvantages of VsCode and Sublime editors
Cannnot download sources不能下载源码百分百超详细解决方案
How to open terminal in VsCode
memset()函数的使用总结和细节
xxx is not in the sudoers file.This incident will be reported error
用于标记蛋白质和抗体的Biotin-LC-Sulfo-NHS|CAS:191671-46-2
二、1稀疏sparsearray数组