学习之路,任重而道远 小柴Prog.|

小柴Prog

园龄:7年粉丝:4关注:5

从一个HTTP请求来研究网络分层原理

1.HTTP请求过程


从两台主机,往往是通过非常多的网络设备连到一起的,经过这么多的网络设备肯定会发生很多的问题吧,例如数据丢包数据重复等等等等,所以在网络的传输中是有非常多的问题需要解决的


2.网络分层有两种结构:

  • OSI:开放系统互联参考模型
  • TCP/IP 协议族

为了简化网络的复杂度,网络通信的不同方面被分解为多层次结构

3.一个HTTP请求的分层解析流程

分析:

1.首先我们在服务器部署了一个静态页面
2.这时候我们需用通过公网来访问服务器,既然要访问服务器,浏览器就要通过你的域名来解析,看看浏览器里面有没有域名对应的DNS相关信息的缓存,如果有就能直接拿到服务端的IP地址,没有的话要去你本地host文件的配置,若你没有配置的话就会发起相应的DNS请求,用来获取你服务器的IP地址
为什么要解析域名呢?

  • 因为客户端和服务端进行数据交互的时候是通过IP地址来

3.这时候应用层会构造一个DNS的请求报文,然后应用层会去调用传输层的接口(DNS是使用UDP来实现数据的传输)

  • 大白话就是说:应用层会调用传输层的API,然后再DNS的请求报文基础上加上一个UDP的请求头

4.然后传输层会把数据交给网络层,网络层一样会在UDP的请求报文上加一个IP的请求头
5.这时候数据回到数据链路层,数据链路层会实现一个二层的寻址,数据链路层会把自己的MAC头加上,并且会把你的请求报文会交给下一个机器的MAC地址也加上(MAC也就是常说的机器码)

6.再通过物理介质传出去,通常传到路由器上

  • 路由器是一个三层的设备只有网络层,数据链路层,还有物理层

7.传到路由器要先通过物理层,然后再由物理层到数据链路层,数据链路层会看看MAC地址是不是给我的,如果是给我的那就解析,如果不是给我的那就丢弃
8.然后数据会再网上进行传输到网络层,网络层会看一下把数据传到下一个路由器的地址是多少
9.然后会把数据传到运营商的服务器上(运营商的服务器非常复杂)

  • 然后如果是运营商本地的会找到对应的IP地址(再由路由器到服务器)(原路返回的样子参考)
  • 如果是不同的运营商的话,运营商会用他们对应的专线进行连接

10.然后到了对方服务器,然后也会一样,一层一层的解析,最后会到应用层解析你的HTTP的请求报文,解析完以后会去构造一个HTTP的响应报文,然后响应报文再原路返回到客户端

  • (数据链路层和网络层一般会解析IP地址)
  • (到传输层一般会解析TPC的端口)

(个人理解,仅供参考)

本文作者:小柴Prog

本文链接:https://www.cnblogs.com/progweb/p/14470059.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   小柴Prog  阅读(186)  评论(0)    收藏  举报
编辑推荐:
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 从零实现富文本编辑器#3-基于Delta的线性数据结构模型
· 记一次 .NET某旅行社酒店管理系统 卡死分析
· 长文讲解 MCP 和案例实战
· Hangfire Redis 实现秒级定时任务,使用 CQRS 实现动态执行代码
阅读排行:
· 使用TypeScript开发微信小程序(云开发)-入门篇
· 没几个人需要了解的JDK知识,我却花了3天时间研究
· C#高性能开发之类型系统:从 C# 7.0 到 C# 14 的类型系统演进全景
· 管理100个小程序-很难吗
· 在SqlSugar的开发框架中增加对低代码EAV模型(实体-属性-值)的WebAPI实现支持
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 La La La Chris Webby
La La La - Chris Webby
00:00 / 00:00
An audio error has occurred.