分享

UC头条:[网络原理]一个数据包从发送到接收在网络中经历了那些过程(详细分析)

 TangMouXiong 2021-01-30

一个数据包从发送到接收在网络中经历了那些过程

假设学生给老师发送电子邮件,内容为:“老师您好!”。从计算机A向另一台计算机B发送电子邮件,站在网络原理的角度来分析整个过程。

启动应用程序新建邮件,将收件人邮箱和邮件内容填写好,应用程序进行编码处理。(应用层)

应用在发送邮件那一刻建立TCP连接(三次握手),将数据交给传输层。

第一次握手:建立连接时,主机A向主机A发送请求报文

第二次握手:主机B收到请求报文后,如同意连接,则向主机A发送确认报文

第三次握手,主机A收到主机B的确认后,再次向主机B给出确认报文,完成连接

TCP 就会把这个数据构成一个TCP数据报(附加上TCP首部包括源端口号和目标端口号(用以识别发送主机跟接收主机上的应用)、序号(标明发送的包那部分是数据)以及校验和(判断数据是否被更改)),然后将该数据报交给IP协议(网络层)。

IP协议就会构造一个IP数据报(IP会将TCP传过来的数据报当作自己的数据,加上IP首部包含接收端IP地址以及发送端的IP地址),此处要根据数据报的长度,以及MTU的限制,考虑是否进行分包,查路由表决定从哪一个端口转发,将数据交给数据链路层;

数据链路层将数据构造一个以太网数据帧,其中以太网首部包含接收端MAC地址、发送端MAC地址以及标志以太网类型的以太网数据的协议。源mac就是本机mac,目的mac根据上面IP确定的转发端口来决定(基于mac学习完成,ARP查找)

数据报的结构:

点击加载图片

数据到达物理层,物理层将数据报转换成光电信号或者电信号进行传输;

首先传输到下一台路由器上,路由器进行解析和分用(解析到传输层)NAT 路由选择 ,继续查路由表,把数据再次封装的,往下一个路由器设备上转发(在这里封装和分用和上边是一样的)

中间会经过若干个路由器转发的过程,最终到达目的服务器;

服务器就会进行分用。物理层把光电信号转成二进制bit流,交给数据链路层;

数据链路层从以太网数据报的首部找到MAC地址判断是否为发给自己的包,如果不是发给自己的数据则丢掉。如果是就解析出其中的IP数据报交给网络层,但是如果是无法识别的协议类型也会丢掉。

网络层收到数据报,同样进行解析判断自己是不是首部中的目标IP,如果是则接收数据包并查找上一层的协议类型,如果是TCP就交给TCP处理如果是UDP就交给UDP处理。网络层可能需要组包(取决于第4步是否分包),组包后将数据交给传输层;

传输层TCP收到数据,首先计算校验和保证数据的完整性,然后按照序号检查接收数据,检查端口号确定具体的应用程序 ,将解析出的应用层数据,交给应用程序,返回ACK(确认序号、窗口大小、延时应答、捎带应答)在这里ACK也是一个TCP数据报,也会涉及到一系列的封装和分用过程,如果没有收到ACK就会反复发送。

服务器的应用程序读取数据,解析数据获知邮件的收件人信息以及邮件内容。(应用层)

主机B给发送端返回一个回执信息。

断开连接(四次挥手)

第一次挥手:主机A想分手,发送消息给主机B

第二次挥手:主机B通知主机A已经接受到分手请求,但还没做好分手准备

第三次回收:主机B已经做好分手准备,通知主机A

第四次挥手:主机A发送消息给主机B,确定分手,主机B关闭连接

基本上就是这样一个过程,我在慢慢在细化每一个过程。

参考文献

[图解HTTP读书笔记]第一章:了解Web及网络基础

[图解HTTP读书笔记]第二章:简单的HTTP协议

[图解HTTP读书笔记]第三章:HTTP报文内的HTTP信息

[图解HTTP读书笔记]第四章:返回结果的HTTP状态码

[图解HTTP读书笔记]第五章:与HTTP协作的Web服务器

[图解HTTP读书笔记]第六章:HTTP首部

[图解HTTP读书笔记]第七章:确保Web安全的HTTPS

[图解HTTP读书笔记]第八章:Session 和 Cookie工作原理

[图解TCP_IP读书笔记]第一章:网络基础知识

[图解TCP_IP读书笔记]第二章:TCP/IP 基础知识

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多