一个HTTP请求的完整过程

一、网络分层模型

当A主机和B主机通信时,在网络中会存在数据丢包、数据重复、数据完整性校验、数字转换模拟信号(无线转光纤等)等问题,为了简化网络的复杂性,因此网络通信的不同方面被分解为多层次结构,不同层次结构中定义标准的接口,并且每一层只与紧挨着的上层或者下层进行通信,将网络分层,这样就可以修改替换某一层的软件,只要层与层之间的接口保持不变,就不会影响其它层。

  • OSI(Open System InterConnetion Reference Model):开放系统互联参考模型
  • TCP/IP协议族

二、HTTP请求过程

1.如图有个静态的html在右上角的服务器上,当客户端进行请求访问服务器时
2.首先把域名解析成ip地址,先去浏览器中查看有没有DNS解析该域名的缓存,如下可以查看谷歌浏览器中域名IP的解析

chrome://net-internals/#events

3.如果没有则去本地域名解析文件hosts中查看
4.如果没有接着发起一个DNS服务的请求到最近的DNS服务器,最近的DNS服务器没有就会继续发送给上层DNS服务器,最终会发送到根DNS服务器上处理,返回时各个DNS服务器也会保存对应配置,以便下次解析
5.得到服务器ip后,客户端发起请求与服务器进行三次握手
6.三次握手后会组装http请求报文发送给服务器,服务器收到请求报文之后进行解析处理,生成并返回响应数据
7.客户端得到响应数据后渲染出页面
8.四次挥手关闭连接

  • 发送HTTP/DNS请求过程:应用层构造一个HTTP请求报文,然后应用层调用传输层的接口(一个socket API),传输层在HTTP报文基础上添加一个TCP请求头,再发送给网络层,网络层也在TCP请求报文基础上添加一个IP的请求头后发送给数据链路层,数据链路层把ARP协议获得服务器的MAC地址和自己的MAC地址加到请求报文上,最终通过物理层传输出去。
  • 解析HTTP/DNS请求过程:物理层获得HTTP请求后,会发送到数据链路层,数据链路层会判断该请求中包含的服务器MAC地址是不是自己的,如果是再解析并发送到网络层,网络层判断对应IP是不是自己,然后解析发送给传输层,传输层会解析对应端口,最后把请求报文发送给端口对应的应用程序。

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个完整HTTP请求包括以下几个部分: 1. 起始行:起始行包括请求方法、请求的URL和使用的协议版本。例如,GET /index.html HTTP/1.1。 2. 头部信息:头部信息包括一系列的键值对,用来传递请求的附加信息。常见的头部信息包括User-Agent(用户代理,用于标识浏览器或客户端)、Host(请求的主机名)、Content-Type(请求体的类型)等。 3. 空行:空行用于分隔头部信息和请求体。 4. 请求体:请求体包含了请求的具体内容,例如表单数据或上传的文件。 综上所述,一个完整HTTP请求的格式为: 起始行 头部信息 空行 请求体 引用\[1\] #### 引用[.reference_title] - *1* *3* [一完整的HTTP事务是怎样的过程](https://blog.csdn.net/wang35235966/article/details/77863455)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [一次完整http请求过程](https://blog.csdn.net/weixin_48520816/article/details/125406258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值