5-网络初识——封装和分用

目录

1.数据封装的过程

2.数据分用的过程

PS:网络数据传输的基本流程(以QQ为例,A给B发送一个hello):

一、发送方:

二、接收方:


  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。
  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装 (Encapsulation)。
  • 首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中 的 "上层协议字段" 将数据交给对应的上层协议处理。

1.数据封装的过程

5-网络初识——封装和分用_第1张图片

2.数据分用的过程

5-网络初识——封装和分用_第2张图片

PS:网络数据传输的基本流程(以QQ为例,A给B发送一个hello):

一、发送方:

用户A在输入框中输入hello这个字符串,qq这个应用程序,就把这个字符串构造成一个应用层数据报。

  • ①应用层:

所谓的应用层数据报,本质上就是一个遵守了约定格式的字符串。

应用层数据报具体的数据格式,咱们不清楚,每个应用程序都不一定一样,只有开发qq的程序员才知道。

一个假设的应用层协议格式:"发送方qq号;发送时间;接收方qq号;消息内容"

程序要调用操作系统的API,把这个应用层数据,交给传输层。

  • ②传输层(进入系统内核了):

在传输层中,要把上述应用层数据,构造成传输层数据。

传输层最知名的协议就是UDP协议和TCP协议。

此处是使用UDP,就需要构造出UDP数据报(在应用层数据基础上,加个UDP报头)。

5-网络初识——封装和分用_第3张图片

这是另外一个特定格式的字符串(这里涉及到源端口和目的端口),此处就像字符串拼接一样,把这个报头和后面的数据拼到一起。

所谓的报头就是一个标签,通过标签表示出当前要把这个消息怎样进行传输。

为啥要往上拼报头?就像商家发货,要套上包装,不止一层。

  1. 防止里边的货物损坏。
  2. 可以在包装上贴上标签,用来写一些信息,如:发件人地址、发件人姓名、收件人地址、收件人姓名、货物名称等。

传输层把这个UDP数据报,交给网络层。

  • ③网络层:

网络层最知名的协议就是IP协议。

IP协议要基于上述数据,打包成一个IP数据报。

IP报头也相当于是一个字符串,包含了另外一组信息(最核心的信息:源IP和目的IP)

网络层数据报准备好,还需要进一步交给数据链路层。

  • ④数据链路层:

数据链路层最知名的协议是以太网。

基于上述数据,还要打包成一个"以太网数据帧"。

接下来这个数据继续往下传输,交给物理层。

  • ⑤物理层:

物理层把上述二进制数据转换成电信号/光信号,此时就真正把数据给发出去了。

上述过程,从应用层到物理层,层层加码,这个过程称为"封装"。

此处省略中间的转发过程,只考虑B的接收。

5-网络初识——封装和分用_第4张图片

二、接收方:

  • ①物理层:

网卡接收到的是光信号和电信号,是在物理层,把这个光电信号转换回二进制的数据。

转换回的数据,其实是一个以太网数据帧。

  • ②数据链路层:

 数据链路层需要去掉帧头帧尾,取出中间的载荷,交给上层的网络层IP协议。

以太网数据帧帧头里也会记录这个载荷是不是一个IP数据报。

  • ③网络层:

IP协议针对这里进行解析,解析出IP报头,取出IP协议的载荷,把这里得到的传输层数据报交给上层传输。

IP报头里会记录,载荷是UDP还是TCP。

  • ④传输层:

UDP再进行解析,取出报头,取出载荷,再把这个载荷交给对应的应用层程序。

5-网络初识——封装和分用_第5张图片

UDP报头里有一个重要的字段,"目的端口",目的端口是一个具体的应用程序,关联在一起的,因此就可以根据这个端口来把数据交给应用程序了。

  • ⑤应用层:

qq应用程序,qq就会针对应用层协议进行解析,显示到界面上。

5-网络初识——封装和分用_第6张图片

上述,从下到上层层解析,就是"分用"。

表示一个网络传输的数据单位:

  • 包(package)
  • 报(datagram)
  • 帧(frame)
  • 段(segment)

你可能感兴趣的:(计算机网络,网络)