【网络原理】一个数据包从发送到接收在网络中经历了那些过程(详细分析)

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

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

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

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

    第一次握手:建立连接时,主机A向主机A发送请求报文
    第二次握手:主机B收到请求报文后,如同意连接,则向主机A发送确认报文
    第三次握手,主机A收到主机B的确认后,再次向主机B给出确认报文,完成连接

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

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

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

数据报的结构:
在这里插入图片描述

  1. 数据到达物理层,物理层将数据报转换成光电信号或者电信号进行传输;
  2. 首先传输到下一台路由器上,路由器进行解析和分用(解析到传输层)NAT 路由选择 ,继续查路由表,把数据再次封装的,往下一个路由器设备上转发(在这里封装和分用和上边是一样的)
  3. 中间会经过若干个路由器转发的过程,最终到达目的服务器;
  4. 服务器就会进行分用。物理层把光电信号转成二进制bit流,交给数据链路层;
  5. 数据链路层从以太网数据报的首部找到MAC地址判断是否为发给自己的包,如果不是发给自己的数据则丢掉。如果是就解析出其中的IP数据报交给网络层,但是如果是无法识别的协议类型也会丢掉。
  6. 网络层收到数据报,同样进行解析判断自己是不是首部中的目标IP,如果是则接收数据包并查找上一层的协议类型,如果是TCP就交给TCP处理如果是UDP就交给UDP处理。网络层可能需要组包(取决于第4步是否分包),组包后将数据交给传输层;
  7. 传输层TCP收到数据,首先计算校验和保证数据的完整性,然后按照序号检查接收数据,检查端口号确定具体的应用程序 ,将解析出的应用层数据,交给应用程序,返回ACK(确认序号、窗口大小、延时应答、捎带应答)在这里ACK也是一个TCP数据报,也会涉及到一系列的封装和分用过程,如果没有收到ACK就会反复发送。
  8. 服务器的应用程序读取数据,解析数据获知邮件的收件人信息以及邮件内容。(应用层
  9. 主机B给发送端返回一个回执信息。
  10. 断开连接(四次挥手)
    第一次挥手:主机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 基础知识
----------------------------------------------------------------------------------
TCP协议 十大特性详解(上)
TCP协议 十大特性详解(中)
TCP协议 十大特性详解(下)

猜你喜欢

转载自blog.csdn.net/weixin_45532227/article/details/113265056