美文网首页
HTTP请求全过程

HTTP请求全过程

作者: 小二郎_Ejun | 来源:发表于2019-02-22 22:00 被阅读1次

注:忘记抄的哪位大神的笔记了,忘海涵

HTTP请求全过程

第一步:浏览器生成http请求信息(第五层)

1.分解url

当用户输入网址时,浏览器会以一定的规则分解网址,

http://www.cemabenteng.com/dir/index.html 为例进行分解,

http为请求的协议名称,www.cemabenteng.com为请求的web服务器,dir/index.html为请求的资源,

(如果是静态资源,则dir为该服务器上的目录,index.html为该目录上的资源,如果是动态资源,则服务器会根据请求的资源名称动态提供资源)

2.生成http请求消息

消息格式:    <方法 URI http版本>

<消息头>

<消息体>

2.1 方法

当用户输入网址,或者点击超链接请求服务器时,使用的是GET方法

当提交form表单时,使用form页面设置的方法

2.2 URI

即上例中的dir/index.html

2.3 http版本

一般为1.1

2.4 消息头

与请求相关的一些信息,例如我们熟知的cookie,User-Agent(使用的浏览器类型及版本)等。

2.5 消息体

消息体存放请求中携带的数据,因为GET方法所携带的数据都在URL中,因此消息体没有内容。而POST方法所携带的数据就存放于此。

3.域名解析

生成消息后,浏览器会调用操作系统的DNS客户端向DNS服务器查询域名对应的IP地址。

3.1 浏览器将域名(即上例中的www.cemabenteng.com)发送给DNS服务器,

3.2 DNS客户器将域名生成域名查询消息并发送给tcpip协议驱动,

3.3 tcpip协议驱动使用网卡将消息发送给最近的DNS服务器,

3.4 最近的DNS服务器将消息发送给根服务器,然后逐级向下查询,直到查询到结果返回。

ps:DNS查询使用UDP协议,只发送一个包,而由于包大小有限,只能容下13个根服务器信息,因此世界上只有13个根服务器,国内只有根服务器镜像。

4.委托操作系统发送http请求

浏览器将IP地址和请求消息发送给操作系统,委托操作系统发送出http请求。

第二步:TCP模块发送请求(第四层)

1.创建套接字

操作系统在接到请求后,首先会申请一块用于存放一个套接字所需的内存空间,套接字是存放了一些通信相关的控制信息的集合。

然后向这个内存空间写入一些初始状态,并把该套接字的唯一标识告诉应用程序,即浏览器。

2.连接服务器

连接服务器就是通信双方交换控制信息。操作系统首先接受浏览器给出的服务器地址,然后申请数据缓存空间并创建TCP头部,通过

委托ip模块,向服务器传达开始通信的请求。服务器会返回连接成功的信息,之后会向套接字中写入服务器的ip等信息,并标识状态为已连接。

最后客户端返回接收相应成功的信息给服务器,连接就算成功完成了。当没有收到确认信息时,会重新发送,多次失败后才会向外报错。

(这就像一个快递公司,有很复杂的机制)

3.发送数据

操作系统收到数据后会将数据存放在的发送数据缓存区中,并等待接收后续数据,只有当接收的数据达到一个网络包的大小的时候,或者达到最大等待时间之后,

才会委托ip模块发送出去。浏览器数据量小、对性能要求高,一般会设置为直接发送。一般的http请求数据用一个网络包就够了,但有时提交的表单数据较大时,会拆分成

多个网络包发送。

第三步:IP模块发送请求(第三层)

1.生成IP头部

IP模块在发送数据前,会生成IP头部,再附上要发送的数据。IP头部包含IP地址等信息。

2.生成MAC头部

生成IP头部后,还会在前面加上MAC头部。它包含了MAC地址等信息。MAC地址需使用IP通过ARP协议查询。每次转发过程都会更换下一个网络设备的MAC地址。

第四步:MAC模块发送请求(第二层)

1.生成报头

mac模块会在网络包的开头加上报头和起始帧分界符。报头是一串固定频率的时钟信号,它用于确定数据每一位的读取时机。

报头后面是起始帧分界符,它的末尾序列比起报头有一点变化,用来标记报头的结束,网络包的开始。

2.生成校验序列

除了开头的报头,末尾还会加上帧校验序列,校验序列是通过整个包计算出来的,用于校验包的正误。类似身份证的校验码。

3.生成电信号

帧组装完毕后,便会转换成通用的电信号并委托PHY模块发送。

第五步:PHY模块发送请求(第一层)

最终网卡中的PHY模块会将通用电信号转换成网络传输所需的格式,通过网线发送出去。经过网络转发后,最终到达服务器。

。。。

最后,服务器反向重复上述步骤,把电信号逐步转换回http请求信息并进行处理。

相关文章

  • Spring HTTP请求过程

    1.Spring Http请求全过程 (1)浏览器的http请求,被Tomcat容器的监听器监听到 (2)请求通过...

  • 2019-03-01

    http请求全过程 第一步:浏览器生成htt...

  • HTTP请求全过程

    注:忘记抄的哪位大神的笔记了,忘海涵 HTTP请求全过程 第一步:浏览器生成http请求信息(第五层) 1.分解u...

  • (一)ASP.NET请求与处理全过程分析

    ASP.NET请求与处理全过程分析 1.用户向服务器的某IP端口发送请求,此端口通过Http.sys来管理,请求报...

  • iOS http请求全过程简单理解

    从 HTTP/1.1 起,默认都开启了 Keep-Alive,保持连接特性,简单地说,当一个请求完成后,客户端和服...

  • 简化版 http 请求全过程

    当我们在浏览器中输入 http://www.caveshao.com 并回车,会依次发生以下过程: 首先我们会根据...

  • 【HTTP】HTTP请求

    1、HTTP协议通信流程: 2、HTTP请求包含内容 一个HTTP请求报文由请求行(request line)、请...

  • 动脑学院架构篇-HTTP请求、响应报文格式

    【HTTP】HTTP请求、响应报文格式 HTTP请求报文格式: HTTP请求报文主要由请求行、请求头部、请求数据3...

  • IDEA自带http请求工具

    编辑http请求文件(文件名后缀为.http) GET请求 POST请求 执行http请求 查看http结果

  • HTTP

    HTTP简介 HTTP请求格式 HTTP规定,HTTP请求由如下3部分构成 请求方法、URI和HTTP的版本 请求...

网友评论

      本文标题:HTTP请求全过程

      本文链接:https://www.haomeiwen.com/subject/ywmyyqtx.html