5分钟轻松知识-计算机网络-数据帧传输-easy

数据如何传输

今天要讲的主题是,位于计算机网络的低层-数据链路层

数据是如何通过网络进行传输的?

下面看一下两个主机通过互联网进行通信时,数据如何传输

图1(a)表示用户主机H1发送数据给H2,中间经过三个路由器(R1,R2和R3)连接到远程主机H2。所经过的网络可以是多种的,如电话网、局域网和广域网。

简化点理解:主机通过多种网络传输,路由器转发最终发送到目的主机H2,图1(b)则是数据流向图

从数据链路层来看,数据传输如下:

(主机)H1的链路层→(路由器)R1的链路层→(路由器)R2的链路层→(路由器)R3的链路层→(主机)H2的链路层。

这里扩展一下,为什么路由器只需要三层协议栈。当数据进入路由器后要先从物理层上到网络层,网络层中的转发表会记录下一跳的地址,最后通过物理层将数据转发出去。

链路层如何处理数据

数据在链路层传输传输的数据有个必须记住的名词:数据帧或者帧

数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。如下图2(a)

数据链路层在进行通信时的主要步骤如下:

(1) 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧

(2) 结点A把封装好的帧发送给结点B的数据链路层,这里忽略了物理层的处理,物理层其实也比较简单就是传输0101的数据流。

(3) 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报上交给上面的网络层;否则丢弃这个帧。

**链路层的实现其实会忽略物理层的比特数据处理,所以这里我还可以更简化一下链路层传输,如下图2b,**好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方

总结

1.链路层会将网络层下发的数据报,添加首部和尾部封装成帧进行传输

2.数据传输会经过多层协议栈,但协议栈之间互不影响,如数据帧只会在链路层进行封装和拆解。

后续追问

1.链路层如何将网络层下发的数据封装成帧的?

2.链路层是如何做到忽略物理层影响,完成"透明传输"?

3.如何保证链路层帧无差错传输?

涉及知识点:最大传送单元(MTU)、帧定界符、ASCII码、转义符、循环冗余检验CRC

摸鱼也算学习!!

相关推荐
AY呀2 小时前
# 🌟 JavaScript原型与原型链终极指南:从Function到Object的完整闭环解析 ,深入理解JavaScript原型系统核心
前端·javascript·面试
豆苗学前端2 小时前
HTML + CSS 终极面试全攻略(八股文 + 场景题 + 工程落地)
前端·javascript·面试
南山安4 小时前
Vue学习:ref响应式数据、v-指令、computed
javascript·vue.js·面试
LYFlied4 小时前
Webpack 深度解析:从原理到工程实践
前端·面试·webpack·vite·编译原理·打包·工程化
老王熬夜敲代码5 小时前
C++中的mutex、condition_val
c++·笔记·面试
玩具猴_wjh5 小时前
慧科讯业面试复盘
面试·职场和发展
小明的小名叫小明6 小时前
区块链核心知识点梳理(面试高频考点1)-BTC UTXO 账户模型
面试·区块链·utxo
小明的小名叫小明7 小时前
区块链核心知识点梳理(面试高频考点2)-BTC vs ETH vs Solana 账户模型对比
面试·区块链
想用offer打牌7 小时前
JDK动态代理为什么基于接口而不基于类?
java·后端·面试
愤怒的代码7 小时前
第 4 篇:HashMap 深度解析(JDK1.7 vs JDK1.8、红黑树、扩容逻辑)(5 题)
java·面试