【网络】理解TCP/IP通信过程-封装、分用(E-Mail示例)

本文以通信双方发送E-Mali为示例,强化理解TCP/IP通信协议族的全部过程。

一、数据包首部

上篇文章有提到,数据包在传输的过程中,每经过一层都会增加相应的首部(有时会有尾部)的数据报,通常为协议提供的信息为包首部,所以要发送的内容为数据。

在这里插入图片描述

要理解数据包首部信息,其实也很简单,他就相当与是协议的脸。网络中传输的数据包主要由两个部分组成:1、协议所要用到的首部;2、上层传过来的数据。在数据包的首部明确的标明了协议该如何读取数据。

区分几个小概念(包、帧、数据报、段、消息)

  1. 包:是一个全能型的术语;
  2. 帧:用于表示数据链路层中包的单位;
  3. 数据报:IP和TCP等网络层以上的分层中包的单位;
  4. 段:表示TCP数据流中的信息;
  5. 消息:应用协议中数据的单位;

本文中所要用到的示例整体流程图如下:

在这里插入图片描述

二、发送数据包(Server)

1、应用程序处理(应用层)

首先在应用程序中会进行编码处理,这些编码的过程相当于OSI七层参考模型的中的表示层功能。编码转化后,会考虑何时建立通信连接、何时发送数据的管理功能,这就相当于是参考模型的会话层的功能。

应用则在发送邮件的那一刻建立TCP连接,从而利用这个TCP连接发送数据。它的过程首先是将应用的数据发送给下一层TCP,再做实际的转发处理。

2、TCP模块处理(传输层)

TCP模块根据应用层传来的数据,负责建立连接、发送数据以及断开连接。TCP提供应用层发来的数据顺利发送至对端的可靠传输。

同时在这一层,TCP会在应用层数据的前端附加一个首部信息,其主要包括:源端口号、目的端口号、序号以及校验和。

3、IP模块处理(网络层)

IP将TCP传过来的TCP首部和TCP数据结合起来当作自己的数据,并在TCP首部的前端加上自己的IP首部信息,其包括发送端的IP地址、接收端的IP地址、以及传输层的通信协议是TCP还是UDP。

IP数据包生成后,参考路由控制表决定接收此IP数据包的路由或者主机,随后IP数据包将被发送给丽娜姐这些路由器或者主机网络接口的驱动程序,以实现真正的发送数据。

4、网络接口(以太网驱动)的处理(数据链路层)

从IP传过来的IP数据包,其实也就是数据而已,在本层会给它添加上以太网的首部并进行发送处理。以太网的首部中包含接收端的MAC地址,发送端MAC地址以及标志以太网类型的以太网数据的协议。最后根据最终产生的以太网数据包通过物理层传输给接收端。

其中FCS(帧校验序列,帧尾)由硬件进行计算,添加到数据包的最后,目的是为了判断数据包是否由于噪声而被破坏。

分层中数据包的结构图

在这里插入图片描述

三、接收数据包(Client)

1、网络接口(以太网驱动)的处理

主机接收到以太网的包后,首先从以太网的包首部获取MAC地址,并进行判断是否是发给自己的,如果不是则会将其丢弃。

如果确定是发给自己的包,就查找以太网首部中的类型域从而确定以太网协议所传输过来的数据类型。同时在栈中去掉其首部信息,并将剩下的数据发送给IP模块进行处理。

2、IP模块的处理

IP模块收到IP包首部及后面的数据部分以后,进行判断。如果判断出首部的IP地址与自己的IP地址匹配,则可以接收数据并从中查找上一层的协议,如果上一层是TCP协议就将栈中的IP首部信息去除后将给TCP进行处理。

对于有路由器的情况下,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送达的主机或者路由器以后再转发数据。

3、TCP模块的处理

再TCP模块中,首先会计算一下校验和,判断数据是否被破坏,然后检查是否按照序号接收数据。最后检查端口号,确定对应的应用程序。

数据接收完毕之后,接收端会发送一个“确认回执”给发送端,如果未能成功发给发送端,则发送端会认为接收端没有接收到数据,而一直循环发送。

数据全部处理完毕后,会传给相应的端口的应用程序。

4、应用程序的处理

接收端应用程序会直接接收发送端所发送的数据,通过解析数据可以获知邮件的收件人是谁的地址。

【注】:文中图片均剪切自《图解TCP/IP(第五版)》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_ClivenZ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值