精华内容
下载资源
问答
  • 2018-01-05 16:44:52

    从地址栏输入http://www.gaxis.cn这个URL之后,直到我的个人主页加载完成,中间到底发生了什么呢?
    大概经历了以下过程:
    1. 分析域名(gaxis)
    2. TCP三次握手(嘿,我能连你吗?/完全OjbK啊。/那我连了啊。)
    3. 建立TCP连接
    4. 浏览器发起HTTP请求
    5. 服务器响应请求(哇兄弟你找我了,我收拾一下给你的数据和应答码——这里可以展开讲服务器如何响应)
    6. 浏览器解析html代码并请求html中的js/css/图片等资源
    7. 浏览器进行页面渲染呈现给用户

    更多相关内容
  • 一次完整的http请求过程

    千次阅读 2022-04-22 18:13:22
    一个完整的 HTTP 请求需要经历 DNS 查找,TCP 握手,浏览器发出 HTTP 请求,服务器接收请求,服务器...(1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SE

    一个完整的 HTTP 请求需要经历 DNS 查找,TCP 握手,浏览器发出 HTTP 请求,服务器接收请求,服务器处理请求并发回响应,浏览器接收响应等过程:

    • 首先请求dns服务器(会首先在浏览缓存中获取,找不到就会去host文件中获取,最后才会dns获取),对www.xxx.com进行域名解析,获取ip等信息

    • 根据拿到的服务器的地址信息,发起发起TCP的3次握手
      (1)第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
      (2)第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
      (3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

    • 建立TCP连接后,向服务器发起http请求

    • 服务器响应http请求,向浏览器发送html代码

    • 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)

    • 浏览器对页面进行渲染呈现给用户

    • 关闭TCP连接
      接下来看下例子帮助大家理解一下
      在这里插入图片描述

      名词解释:

    • Queueing: 在请求队列中的时间。

    • Stalled: 从TCP 连接建立完成,到真正可以传输数据之间的时间差,此时间包括代理协商时间。

    • Proxy negotiation: 与代理服务器连接进行协商所花费的时间。

    • DNS Lookup: 执行DNS查找所花费的时间,页面上的每个不同的域都需要进行DNS查找。

    • Initial Connection / Connecting: 建立连接所花费的时间,包括TCP握手/重试和协商SSL

    • SSL: 完成SSL握手所花费的时间。

    • Request sent: 发出网络请求所花费的时间,通常为一毫秒的时间。

    • Waiting(TFFB): TFFB 是发出页面请求到接收到应答数据第一个字节的时间。

    • Content Download: 接收响应数据所花费的时间。

    欢迎加入前端群,一起学习讨论,永久有效:
    在这里插入图片描述

    展开全文
  • 一次完整的HTTP网络请求过程详解

    千次阅读 2018-05-22 15:06:04
    简单地回答这个问题,大概是经历了域名解析、TCP的三握手、建立TCP连接后发起HTTP请求、服务器响应HTTP请求、浏览器解析html代码,同时请求html代码中的资源(如js、css、图片等)、最后浏览器对页面进行渲染并...

    0.  前言

    从我们在浏览器的地址栏输入http://blog.csdn.net/seu_calvin后回车,到我们看到该博客的主页,这中间经历了什么呢?简单地回答这个问题,大概是经历了域名解析、TCP的三次握手、建立TCP连接后发起HTTP请求、服务器响应HTTP请求、浏览器解析html代码,同时请求html代码中的资源(如jscss、图片等)、最后浏览器对页面进行渲染并呈现给用户。下面分别介绍一下每个过程。

     

    1.  域名解析

    Chrome浏览器为例,Chrome会解析域名对应的IP地址

    1Chrome浏览器会首先搜索浏览器自身的DNS缓存(可以使用 chrome://net-internals/#dns 来进行查看),浏览器自身的DNS缓存有效期比较短,且容纳有限,大概是1000条。如果自身的缓存中存在blog.csdn.net 对应的IP地址并且没有过期,则解析成功。

    2)如果(1)中未找到,那么Chrome会搜索操作系统自身的DNS缓存(可以在命令行下使用 ipconfig /displaydns 查看)。如果找到且没有过期则成功。

    3)如果(2)中未找到,那么尝试读取位于C:\Windows\System32\drivers\etc下的hosts文件,如果找到对应的IP地址则解析成功。

    4)如果(3)中未找到,浏览器首先会找TCP/IP参数中设置的本地DNS服务器,如果要查询的域名包含在本地配置的区域资源中,则完成域名解析,否则根据本地DNS服务器会请求根DNS服务器

    5)本地DNS会把请求发至13台根DNS,根DNS服务器收到请求后会返回负责这个域名(.net)的服务器的一个IP,本地DNS服务器使用该IP信息联系负责.net域的这台服务器。这台负责.net域的服务器收到请求后,如果自己无法解析,会返回.net域的下一级DNS服务器地址(blog.csdn.net)给本地DNS服务器。以此类推,直至找到。

     

    2.  TCP的三次握手

    这个部分正好之前整理过,可以参考NetWork——关于TCP协议的三次握手和四次挥手

     

    3.  建立TCP连接后发起HTTP请求

    TCP三次握手建立连接成功后,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个具有标准格式的HTTP响应给客户端。

     

    3.1  HTTP请求格式

    HTTP请求格式如下所示四部分组成,分别是请求行、请求头、空行、消息体,每部分内容占一行。

    [java]  view plain  copy
    1. <request-line>  
    2. <general-headers>  
    3. <request-headers>  
    4. <entity-headers>  
    5. <empty-line>  
    6. [<message-body>]  
    请求行 :由三部分组成:分别是请求方法( GET/POST/DELETE/PUT/HEAD )、 URI 路径、 HTTP 版本号。

    请求头:缓存相关信息(Cache-ControlIf-Modified-Since)、客户端身份信息(User-Agent)等键值对信息。

    空行

    主体:客户端发给服务端的请求数据,这部分数据并不是每个请求必须的。

    常用的GETPOSTPUTDELETE四种请求方式中:

    1)关于GETDELETE将要处理的资源信息直接放在了URL。通过"?<键值对>&<键值对>“的形式追加。但是URL最大长度为1024字节。

    2)关于POSTPUT的请求参数存储在报文的主体中。每一个参数都以”--boundary值“+"属性信息"+”空行“+"参数值"的数据结构存储。请求数据的最后以”--boundary--“的格式结尾。

     

    3. 2  服务器响应HTTP请求

    服务器接收处理完请求后返回一个HTTP响应消息给客户端。HTTP响应消息的格式包括:状态行、响应头、空行、消息体。每部分内容占一行。

    [java]  view plain  copy
    1. <status-line>  
    2. <general-headers>  
    3. <response-headers>  
    4. <entity-headers>  
    5. <empty-line>  
    6. [<message-body>]  
    状态行 :有 HTTP 协议版本号, 状态码 和状态说明三部分构成。

    响应头:用于说明数据的一些信息,比如数据类型、内容长度等键值对。

    空行

    消息体:服务端返回给客户端的HTML文本内容。或者其他格式的数据,比如:视频流、图片或者音频数据。

     

    4  浏览器解析html代码,并请求html代码中的资源

    浏览器拿到html文件后,就开始解析其中的html代码,遇到js/css/image等静态资源时,向服务器端发起一个HTTP请求,如果服务器端返回304状态码(告诉浏览器服务器端没有修改该资源),那么浏览器会直接读取本地的该资源的缓存文件。否则开启新线程向服务器端去请求下载。(这个时候就用上keep-alive特性了,建立一次HTTP连接,可以请求多个资源。)

    最后,浏览器利用自己内部的工作机制,把请求到的静态资源和html代码进行渲染,再呈现给用户。


    展开全文
  • NetWork——描述一次完整的网络请求过程

    万次阅读 多人点赞 2017-01-10 18:53:05
    简单地回答这个问题,大概是经历了域名解析、TCP的三握手、建立TCP连接后发起HTTP请求、服务器响应HTTP请求、浏览器解析html代码,同时请求html代码中的资源(如js、css、图片等)、最后浏览器对页面进行渲染并...

    0.  前言

    从我们在浏览器的地址栏输入http://blog.csdn.net/seu_calvin后回车,到我们看到该博客的主页,这中间经历了什么呢?简单地回答这个问题,大概是经历了域名解析、TCP的三次握手、建立TCP连接后发起HTTP请求、服务器响应HTTP请求、浏览器解析html代码,同时请求html代码中的资源(如jscss、图片等)、最后浏览器对页面进行渲染并呈现给用户。下面分别介绍一下每个过程。

     

    1.  域名解析

    Chrome浏览器为例,Chrome会解析域名对应的IP地址

    1Chrome浏览器会首先搜索浏览器自身的DNS缓存(可以使用 chrome://net-internals/#dns 来进行查看),浏览器自身的DNS缓存有效期比较短,且容纳有限,大概是1000条。如果自身的缓存中存在blog.csdn.net 对应的IP地址并且没有过期,则解析成功。

    2)如果(1)中未找到,那么Chrome会搜索操作系统自身的DNS缓存(可以在命令行下使用 ipconfig /displaydns 查看)。如果找到且没有过期则成功。

    3)如果(2)中未找到,那么尝试读取位于C:\Windows\System32\drivers\etc下的hosts文件,如果找到对应的IP地址则解析成功。

    4)如果(3)中未找到,浏览器首先会找TCP/IP参数中设置的本地DNS服务器,并请求LDNS服务器来解析这个域名,这台服务器一般在你的城市的某个角落,距离你不会很远,并且这台服务器的性能都很好,一般都会缓存域名解析结果,大约80%的域名解析到这里就完成了。否则本地DNS服务器会请求根DNS服务器

    5)本地DNS会把请求发至13台根DNS,根DNS服务器会返回所查询域的主域名服务器的地址(.net),本地DNS服务器使用该IP信息联系负责.net域的这台服务器。这台负责.net域的服务器收到请求后,会返回.net域的下一级DNS服务器地址(blog.csdn.net)给本地DNS服务器。以此类推,直至找到。

     

    2.  TCP的三次握手

    这个部分正好之前整理过,可以参考NetWork——关于TCP协议的三次握手和四次挥手

     

    3.  建立TCP连接后发起HTTP请求

    TCP三次握手建立连接成功后,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个具有标准格式的HTTP响应给客户端。

     

    3.1  HTTP请求格式

    HTTP请求格式如下所示四部分组成,分别是请求行、请求头、空行、消息体,每部分内容占一行。

    <request-line>
    <general-headers>
    <request-headers>
    <entity-headers>
    <empty-line>
    [<message-body>]

    请求行:由三部分组成:分别是请求方法(GET/POST/DELETE/PUT/HEAD)、URI路径、HTTP版本号。

    请求头:缓存相关信息(Cache-ControlIf-Modified-Since)、客户端身份信息(User-Agent)、是否支持gzip压缩,等键值对信息。

    空行

    主体:客户端发给服务端的请求数据,这部分数据并不是每个请求必须的。

    常用的GETPOSTPUTDELETE四种请求方式中:

    1)关于GETDELETE将要处理的资源信息直接放在了URL。通过"?<键值对>&<键值对>“的形式追加。HTTP RFC规范中并没有规定GET请求的URL长度,只是说明如果server无法处理太长的URI,可以通过返回414状态码。但是大多数浏览器会讲其限制在2k-8k之间。

    2)关于POSTPUT的请求参数存储在报文的主体中。每一个参数都以”--boundary值“+"属性信息"+”空行“+"参数值"的数据结构存储。请求数据的最后以”--boundary--“的格式结尾。

     

    3. 2  服务器响应HTTP请求

    服务器接收处理完请求后返回一个HTTP响应消息给客户端。HTTP响应消息的格式包括:状态行、响应头、空行、消息体。每部分内容占一行。

    <status-line>
    <general-headers>
    <response-headers>
    <entity-headers>
    <empty-line>
    [<message-body>]

    状态行:有HTTP协议版本号,状态码和状态说明三部分构成。

    响应头:用于说明数据的一些信息,比如数据类型、内容长度等键值对。

    空行

    消息体:服务端返回给客户端的HTML文本内容。或者其他格式的数据,比如:视频流、图片或者音频数据。

     

    4  浏览器解析html代码,并请求html代码中的资源

    浏览器拿到html文件后,就开始解析其中的html代码,遇到js/css/image等静态资源时,向服务器端发起一个HTTP请求,如果服务器端返回304状态码(告诉浏览器服务器端没有修改该资源),那么浏览器会直接读取本地的该资源的缓存文件。否则开启新线程向服务器端去请求下载。(这个时候就用上keep-alive特性了,建立一次HTTP连接,可以请求多个资源。)

    最后,浏览器利用自己内部的工作机制,把请求到的静态资源和html代码进行渲染,再呈现给用户。

    展开全文
  • go语言:发起http网络通信请求 操作 对百度发起get请求 func main() { r,_:=http.Get("http://www.baidu.com") b,_ := ioutil.ReadAll(r.Body) fmt.Println(string(b)) r.Body.Close() } 完整的...
  • HTTP协议简介HTTP协议工作原理和流程浏览器在使用...为了更快地处理大量事务,确保协议的可伸缩性,HTTP协议被设计成了种无状态协议,不保留之前一切的请求或响应报文的信息。HTTP协议也是万维网(WWW,World Wide W
  • 个HTTP请求的完整过程

    千次阅读 2022-04-04 23:31:15
    网络分层模型 当A主机和B主机通信时,在网络中会存在数据丢包、数据重复、数据完整性校验、数字转换模拟信号(无线转光纤等)等问题,为了简化网络的复杂性,因此网络通信的不同方面被分解为多层次结构,不同层次...
  • 一次完整的HTTP请求过程(深入分析)

    千次阅读 多人点赞 2019-08-22 11:09:58
    段时间,面试问到了这个问题,感觉自己回答的不是很好, 当时我的回答是 1.域名解析(这个说了一下域名解析的过程) ,解析出对应IP地址 2.解析成功之后,发起TCP三握手建立连接 3.建立连接后发起HTTPS请求 4....
  • 个完整的HTTP请求过程详细

    万次阅读 多人点赞 2018-05-29 14:41:54
    个完整的HTTP请求过程 整个流程 域名解析 —&gt; 与服务器建立连接 —&gt; 发起HTTP请求 —&gt; 服务器响应HTTP请求,浏览器得到html代码 —&gt; 浏览器解析html代码,并请求html代码中的资源...
  • 一次 HTTP 请求的完整过程——协议篇 一、大致流程 根据域名和 DNS 解析到服务器的IP地址 (DNS + CDN) 通过ARP协议获得IP地址对应的物理机器的MAC地址 浏览器对服务器发起 TCP 3 次握手 建立 TCP 连接后发起 HTTP ...
  • HTTPS请求的整个过程详细分析

    万次阅读 多人点赞 2019-05-09 11:23:27
    、基础知识 二、HTTPS进行的流程 三、HTTPS和HTTP的区别 、基础知识 (1)HTTPS的介绍 HTTPS是种应用层协议,本质上来说它是HTTP协议的种变种。HTTPS比HTTP协议安全,因为HTTP是明文传输,而HTTPS是...
  • 一次完整的HTTP请求过程

    万次阅读 多人点赞 2017-10-10 16:06:50
    、 HTTP请求和响应步骤 图片来自:理解Http请求与响应 以上完整表示了HTTP...TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了系列构成互联网基础的网络协议,是Internet的...
  • HTTP请求的完全过程

    万次阅读 多人点赞 2019-05-27 11:22:45
    HTTP请求的完全过程 1.1 浏览器根据域名解析IP地址 浏览器根据访问的域名找到其IP地址。DNS查找过程如下: 浏览器缓存:首先搜索浏览器自身的DNS缓存(缓存的时间比较短,大概只有1分钟,且只能容纳1000条缓存)...
  • 详细的"Web页面请求过程"之旅

    千次阅读 多人点赞 2018-07-30 19:44:13
    前言:web页面请求的整体过程 、为主机申请IP:DHCP动态主机配置协议 二、查找默认网关路由器的MAC地址:ARP地址转换协议 三、查找目的域名的IP:DNS域名系统 四、TCP三握手(及为什么要进行第三握手)
  • Vue总结第七天~Promise网络请求和axios 网络模块
  • 一般来说,Fiddler只需要按说明配置好代理和证书就可以拦截应用内的请求,但是我在开发个小程序的过程中用它抓包却没有成功,于是通过微信小程序的开发者控制台查看了一下错误,提示ssl证书有问题,这应该是微信的...
  • HTTP请求过程和原理

    千次阅读 2022-03-14 13:48:32
    HTTP请求过程和原理-面试回答
  • 很久没有写博客,最近在做项目的时候遇到了个很迷的网络请求的坑,在添加header的时候总是401,但是postman请求结果却没有问题。 搞了两天,查了很多都没找到解决方法,最后解决了但是还是没有很懂具体的原因,...
  • 由此我认为响应时间久与代码逻辑没有关系,可能是跟网络传输有关系,所以我在宿主机服务器使用curl去访问看看响应需要多少时间 结果耗时还是需要十秒左右 于是我开始认为与代码无关的想法又有点动摇了,我决定...
  • 、前言 从输入个 URL,然后按下回车到显示页面,中间发生了什么?这是一道经典的面试题,不光前端面试会问到,后端面试也...其实,这个问题可以拆解成两个过程: 用户输入 URL,客户端(浏览器)拿到服务端的数
  • HTTP与HTTPS请求过程

    千次阅读 2019-02-26 21:34:04
    HTTP与HTTPS请求过程 1、HTTP请求过程 HTTP协议处于网络协议的应用层,...第一次握手:客户端发送SYN报文和客户端初始序列号X,等待服务器确认。 第二次握手:服务器收到报文返回SYN+Ack报文和初始序列号Y 第三次握...
  • 一次完整的HTTP请求所经历的7个步骤 HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,...
  • 不错,大致过程确实如此,可终究“眼见为实”,此篇文章重点在于亲自实践,通过WireShark抓包来图解探索网络请求的整个过程,通过实践来更透彻的认识网络模型、三握手、滑动窗口协议等理论知识在实际
  • )从输入网址到获得页面的网络请求过程 (1)域名解析,其实就是根据用户输入的网址去寻找它对应的IP地址,比如输入www.baidu.com的网址就会经历以下过程 1.先从浏览器缓存里找IP,因为浏览器会缓存DNS记录...
  • 一个数据包从发送到接收在网络中...第一次握手:建立连接时,主机A向主机A发送请求报文 第二次握手:主机B收到请求报文后,如同意连接,则向主机A发送确认报文 第三次握手,主机A收到主机B的确认后,再次向主机B给出
  • 上图是请求的整个过程,然后我们可以看到,其中有个是我们经常看到的问题,就是option 的预请求,那么图中并没有说明什么是简单的请求,所以下面的链接是解释了什么是简单的请求,也就是个简单的请求的标准...
  • Android网络请求超时处理

    千次阅读 2018-04-17 13:48:18
    转自:http://www.cnblogs.com/tony-yang-flutter/p/androidtimeout.html以用户登录为例介绍用户访问网络时的请求超时处理的两种方法:. 使用android提供的工具类AsyncTask类,此类提供了个AsyncTask.execute()....
  • 前言 在Android应用中,执行一些耗时操作的时候,弹出个表示加载中Dialog是非常常见的功能。
  • 个http请求发送到后端的详细过程

    万次阅读 多人点赞 2016-06-13 11:30:34
    DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS,这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 556,844
精华内容 222,737
关键字:

一次网络请求的详细过程