Linux网络:网络传输的流程

目录

一、数据的封装、分用和解包

1.1数据的封装

1.2协议的解包与分用

二、网络中的地址管理

三、局域网通信

四、跨网段通信


一、数据的封装、分用和解包

1.1数据的封装

不同的协议层对数据包有不同的称谓,
在用户要发送一个数据时,数据自顶向下进行层层封装打包
在应用层提出一个request加上协议报头后向下派发
传输层叫做 数据段 (segment),
网络层叫做 数据报 (datagram),
链路层叫做 数据帧 (frame).
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation).
首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部, 根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理。
报文=协议报头+有效载荷
报文就是我们需要通信传输的内容,而我们传输内容的顺序一定是由应用层到传输层到网络层最后到数据链路层,通过这种自顶向下的顺序层层添加每一层的协议报头,最后经过物理层的物理设备将报文发送到网络中。
而报文不断自顶向下不断进行交付的过程,要添加每一层的协议报头,就叫做封装。

1.2协议的解包与分用

数据经过层层封装后经由物理设备通过网络由一个主机发送给另一个主机,而另一个主机拿到报文之后就要对其进行解包与分用。

解包:将报头和有效载荷进行分离

分用:将自己的有效载荷交付给上一层的那个协议

由于每一层可能存在很多种协议,所以接收方拿到的报头中也包含了上一层的协议是谁。

链路层解包以后将自己的有效载荷交给网络层,网络层再重复这个动作交给传输层,传输层再经过操作后交给服务器,最后服务器再将原本我们要传输的数据交给某一个进程让用户看到。

经过此过程我们可以从逻辑上得出一个结论:

同层协议,都可以认为自己在和对方直接通信

二、网络中的地址管理

在了解通讯之前,首先要了解以下两个概念:

1、Mac地址:MAC 地址是数据链路的地址,用来识别同一链路中的不同计算机

MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可
能会冲突; 也有些网卡支持用户配置mac地址)

2、IP地址:IP 地址,是网络层中的地址,用来识别计算机网路中互连的主机和路由器

IP协议有两个版本, IPv4和IPv6. 我们整个的课程, 凡是提到IP协议, 没有特殊说明的, 默认都是指IPv4
IP地址是在IP协议中, 用来标识网络中不同主机的地址;
对于IPv4来说, IP地址是一个4字节, 32位的整数;
我们通常也使用 "点分十进制" 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个
字节, 范围是 0 - 255;

简单通俗的理解,mac地址用来在同一链路即局域网中表示某一具体计算机,在局域网中具有唯一性,而IP地址则是在整个网络中具有唯一性,每一个主机都有自己独一无二的IP地址

所以网络层在进行封装报头时就会包含本主机的IP地址和目标主机的IP地址,而数据链路层则是要包含主机的MAC地址和目标主机的MAC地址。这样我们才能在发送报文时让物理设备知道该往哪里发送,该发送给谁。

三、局域网通信

而局域网,我们也可以将其理解为所谓的以太网,在局域网中,往往通过MAC地址就可以确定一台具体的主机,每台主机都有一个自己的MAC地址,报文经过层层封装后由一台主机发出,经过链路层封装的报头中存在着发出MAC地址和目标MAC地址,局域网中的其他主机则会分别对比目标MAC地址是否和自己一致,如果一致就接收,如果不一致就不接收。

但如此以来也会存在一个问题,当多台主机同时发送大量消息时,就会导致大量数据存在于局域网之中,从而发生数据碰撞,所以在局域网通信过程中,任何时刻只允许一台主机在局域网中发送消息,结合Linux操作系统,局域网的本质就是一个临界资源。而网络层和传输层的实现都是在操作系统内部进行实现的,所以在解决此问题时,我们就可以考虑用锁的思想进行解决。

四、跨网段通信

  跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器  
而路由器一般至少要横跨两个子网,所以一个路由器要有两张网卡即两个MAC地址这里为了方便理解我们将其成为MAC left和MAC right,报文在经过层层封装后传输到路由器,此时报文中起始MAC地址为主机,目标MAC地址为路由器left。路由器先对其进行解包,然后进行再次封装将原本起始地址换做right目标地址换做另一个子网所连接主机的MAC地址,此时就完成了跨子网的通信。
所以,在日常通信时,报文中一般稳定存在两套地址:
1、IP起始和目标地址,这两个地址一般是不会变化的,因为IP地址在整个网络中具有唯一性。
2、MAC起始和目标地址,这两个地址一般是随着报文所在子网的变化而动态变化的。
  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C+五条

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值