网络数据传输过程

发布时间:2024年01月21日

先验知识:OSI模型

OSI网络模型实际上是参考模型,在实际中并不使用,在网络出现问题的时候,可以从一个宏观的整体去分析和解决问题,而且搭建网络的时候并不需要划分为7层,当今互联网广泛使用的是TCP/IP网络模型(原本只有4层),随着人们不断实践后发现,划分为5层会更符合实际。

image-20240120141543587

网络传输的流程

image-20240119173111092

image-20240121003011819

1. 应用层

  • 正:应用程序发起连接,比如”我们要浏览某个网页“,我们就会对该网页发起请求;
  • 反:将段解封为报文,报文是数据在应用层中的名字;

例子:客户端要发送数据,也就是报文。

image-20240121000243263

2. 传输层

  • 正:将报文封装为段,封装时会加上端口号;
  • 反:将包解封为段,段是传输层中数据的名字;
  • 传输层管理两个节点之间的数据传输,负责可靠传输(TCP)和不可靠传输(UDP),还有一个新的叫QUIC;

例子:报文来到传输层,加上源端口号和目标端口号,封装成段。

image-20240121000223610

3.网络层

  • 正:将段封装为包,封装时会加上ip地址;
  • 反:将帧解封为包,包是网络层中数据的名字;

例子:段来到网络层,加上源IP和目标IP封装成包;

image-20240121004809448

4. 数据链路层

  • 正:将包封装为帧,在封装的时候会加上MAC地址;

  • 反:在数据链路层中,比特会被封装成帧,帧是这一层表示数据的名字;

    image-20240120155254218

    例子:数据来到数据链路层之后,理论上根据目标MAC地址可以将包和源MAC地址和目标MAC地址封装成帧。但是存在的问题是目标IP地址和源IP地址并不是在同一个网络下的,要发送到其他的网络,就需要经过默认网关,由于客户端主机并不知道默认网关的MAC地址,没有办法封装成帧,这个时候可以用ARP协议进行广播,找到网关IP对应的MAC地址。具体步骤如下:

    1. 首先,客户端将自己的MAC地址封装成帧,利用ARP协议广播出去,默认网关收到广播出去的帧之后,查看帧,可以看到客户端的MAC地址,再解封发现包里面的IP地址,然后将IP和MAC关联为一台主机;image-20240121001402501

    2. 然后默认网关将自己的IP地址放入包中,再结合自己的MAC地址封装成帧,然后将其原路返回客户端,这样客户端就知道默认网关的MAC地址了;

      image-20240121002006804

5. 物理层

  • 正:将帧封装为比特;

  • 反:比特;

  • 我们要发送出去的数据在计算机里只不过是无数的0和1(比特),物理层要把这些比特用不同的媒介传输出去,这些媒介可以是电缆、光或者其他形式的电磁波来表示和传输信号;

  • 数据从网络接口出去之后,会经过不同的网络拓扑(网络拓扑是指网络中设备如计算机、路由器、交换机之间物理或逻辑连接的布局结构,描述了设备之间的关系以及他们如何相互连接,是设计和管理计算机网络的基础),

例子:帧到了物理层封装成比特流,发送出去。

  • 然后会经过默认网关,解封为帧发现是发送给自己的,再解封为包查看目标IP地址是在另一个网络中的,然后进行路由转发,最终到达目的网络;

  • 如果目标网关知道目标IP地址和MAC地址是哪台主机,封装成帧就可以直接发送了,如果不知道的话也可以用ARP协议来广播一下获取。

  • 服务器在收到比特流之后按上面的过程倒序进行解封,就可以得到相应的请求报文。

  • 然后以同样的方式给客户端发送回应。

参考:https://www.bilibili.com/video/BV1EU4y1v7ju/?spm_id_from=333.788&vd_source=bad9fad47786fe7e9f54f99cc00b91e9

文章来源:https://blog.csdn.net/weixin_45891757/article/details/135724607
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。