https://www.yuque.com/qinghou/bobplatform/hz7xsc

四层七层网络结构

TCP/IP四层结构

微信图片_20211218232205.jpg

  • 第一层:链接层。负责在以太网、WIFI之类的底层网络上发送原始数据包。工作在网卡这个层级,使用MAC地址来标记网络设备。
  • 第二层:网际层,IP协议所在层。用IP地址取代MAC地址,把局域网广域网连接成虚拟的巨大网络。
  • 第三层:传输层,TCP协议所在层。保证在两点间数据可靠地传输。它还有个小伙伴叫UDP。TCP 是一个有状态的协议,需要先与对方建立连接然后才能发送数据,而且保证数据不丢失不重复。而 UDP 则比较简单,它无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方。两个协议的另一个重要区别在于数据的形式。TCP 的数据是连续的“字节流”,有先后顺序,而 UDP 则是分散的小数据包,是顺序发,乱序收。
  • 第四层:应用层,HTTP所在协议。

    OSI七层结构

    微信图片_20211218232829.jpg

  • 第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等;

  • 第二层:数据链路层,它基本相当于 TCP/IP 的链接层;
  • 第三层:网络层,相当于 TCP/IP 里的网际层;
  • 第四层:传输层,相当于 TCP/IP 里的传输层;
  • 第五层:会话层,维护网络中的连接状态,即保持会话和同步;
  • 第六层:表示层,把数据转换为合适、可理解的语法和语义;
  • 第七层:应用层,面向具体的应用传输数据。

四层负载均衡:工作在传输层上,基于 TCP/IP 协议的特性,例如 IP 地址、端口号等实现对后端服务器的负载均衡。
七层负载均衡:工作在应用层上,看到的是 HTTP 协议,解析 HTTP 报文里的 URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。

HTTP传输过程

现在要传输的内容假设是个HTML,先加一个HTTP专用附加数据,然后加TCP头,再加IP头、TCP头;到达目的地后,再反向拆包得到HTML。
HTTP 协议的传输过程就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。
接收数据则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据。
微信图片_20211218233955.jpg

其他

  1. 一般说到几层,都默认对应的是OSI七层的结构模型中的内容
  2. 有一个辨别四层和七层比较好的(但不是绝对的)小窍门,“两个凡是”:凡是由操作系统负责处理的就是四层或四层以下,否则,凡是需要由应用程序(也就是你自己写代码)负责处理的就是七层
  3. 二层转发:工作在数据链路层,设备通过查找到目标MAC地址,进行数据转发
  4. 三层路由:工作在网络层,设备解析数据包头信息,找到目标IP地址,转发数据

DNS

HTTP报文

浏览器过程

Cookie

代理

数字签名和证书

HTTPS