精华内容
下载资源
问答
  • 一次完整的网络请求过程

    千次阅读 2018-01-05 16:44:52
    大概经历了以下过程: 1. 分析域名(gaxis) 2. TCP三握手(嘿,我能连你吗?/完全OjbK啊。/那我连了啊。) 3. 建立TCP连接 4. 浏览器发起HTTP请求 5. 服务器响应请求(哇兄弟你找我了,我收拾一下给你...

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

    展开全文
  • Android网络编程(一次网络请求)

    千次阅读 2018-07-30 15:39:14
    先来描述一次网络请求过程: 域名解析 TCP三次握手 建立连接后发起Http请求 服务器响应请求 浏览器解析Html代码,同时请求资源 浏览器渲染 TCP四次挥手 接下来一步一步分析 域名解析 一张图搞定 三次握手...

    先来描述一次网络请求过程:

    1. 域名解析
    2. TCP三次握手
    3. 建立连接后发起Http请求
    4. 服务器响应请求
    5. 浏览器解析Html代码,同时请求资源
    6. 浏览器渲染
    7. TCP四次挥手
      接下来一步一步分析

    域名解析

    一张图搞定
    这里写图片描述

    三次握手

    我把握手挥手的过程,比作网络上跟帖或表示赞同的“1”或者“+1”,模拟一个对话

    有点事想找一下隔壁办公室的阿冰。
    我:“阿冰,在吗?”
    冰:“1”
    我:“来一下”
    冰:“1”

    和握手过程很相似

    C:“S,我想连接你。”     //在网络中发送的就是SYN=1(代表这个请求),seq=x(生成了个随机数x,代表C自己,可以想象成QQ号)
    S收到消息,看了看SYN=1:“哎呀,有人想连我,谁啊?”//SYN=1(确认消息中途没改变,表示有人想连接)
    S又看到了seq=x:“哦,昵称是x的这个家伙要连我”
    S明白了C的意图:“+1//所以他发送了ACK=1(代表这个回复),seq=y(生成了个随机数y,代表S自己),ack=x+1(代表确实回复的x的那条消息)
    C收到消息,看了看ACK=1,明白了S收到了自己发的消息并同意连接:“+1//SYN=1(确认消息中途没改变),seq=y+1(代表确实回复的y的那条消息))
    S收到消息,看了看SYN=1,吐了口烟:“这消息没人修改过,打开连接连他”

    这下再对照着看流程图
    这里写图片描述

    是不是就看懂了

    发送请求,响应请求

    TCP三次握手建立连接成功后,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个具有标准格式的HTTP响应给客户端。
    关于这部分在上一篇Android网络编程(Http协议篇)中已经讲过了,所以没看过上一篇的可以点进去看一下,这里就不再写了。

    解析代码,请求资源

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

    四次挥手

    和前面三次握手一样,模拟一段对话

    C:“S,没啥话说了挂了吧。”     //他发了一个FIN=u,u为随机数代表自己,想象成C的QQ号
    S收到消息:“+1,你等一会我看看还有没有为其他事”     //他发了一个ack=u+1回复客户端收到消息
    过一会,S:“OjbK了,可以挂了,你还有事吗”     //S发了FIN=v,v为随机数代表S自己,想象成S的QQ号
    C收到:“没事了,挂了吧”      //发送了ACK=1代表这条消息,ack=v+1代表确实是回复的v的那条消息
    这时候C抽了根烟冷静了一会(一会=2MSL,也就是消息传输一次的最长时间*2),发现S没回复,这就证明S确实没事了挂了,这时候C也就挂了。

    这里注意2MSL这东西是两倍的报文最大生存时间,也就是C发一条消息再收到回复的最长时间,也就是说2MSL没收到消息等价于服务器不会再回复了,所以此时断开连接。

    这里写图片描述

    上面就是一次Http请求的过程,Java也好C也好,都是人类发明的机器语言,所以这门语言的思想还是人的一般思考方式,所以理解东西多转化成自己的语言,这样更容易帮助自己消化知识,还有我写东西特别喜欢画流程图,就觉得写几万字也不如一张几百个字的图看着透彻。

    好了,今天这篇文章就到这里,下次继续了解关于Android网络的事。

    展开全文
  • 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代码进行渲染,再呈现给用户。

     

    展开全文
  • 一次完整的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代码进行渲染,再呈现给用户。


    展开全文
  • 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请求过程

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

    万次阅读 多人点赞 2018-05-29 14:41:54
    个完整的HTTP请求过程 整个流程 域名解析 —&gt; 与服务器建立连接 —&gt; 发起HTTP请求 —&gt; 服务器响应HTTP请求,浏览器得到html代码 —&gt; 浏览器解析html代码,并请求html代码中的资源...
  • 相信看完这张图后大家对一次请求也有了大致的了解了,当前其中还有很多细节小编没有画出来,然后我们来看看部分过程的细节 所以其流程大致如下: ①:DNS解析域名得到IP地址 ②:客户端与服务器建立连接(TCP三次...
  • 【Java面试题】一次完整的Http请求过程(非常详细
  • 一般来说,Fiddler只需要按说明配置好代理和证书就可以拦截应用内的请求,但是我在开发个小程序的过程中用它抓包却没有成功,于是通过微信小程序的开发者控制台查看了一下错误,提示ssl证书有问题,这应该是微信的...
  • 浏览器个HTTP请求过程

    千次阅读 2018-02-14 20:28:03
    浏览器请求过程 当我们在浏览器地址栏输入 www.xx.com ,然后回车, 这个请求背后经历了什么?以下是个人理解,如有偏差,请纠正! 首先重新温习下网络模型: 七层结构(至顶向下):应用层、表示层、...
  • 一次完整的http请求过程

    千次阅读 2014-07-23 09:32:00
    个超时就是客户端等待请求消息返回信息的最长时间。 HTTP协议的请求和响应消息如果没有发送并传递成功的话,不保存任何已传递的信息。比如,单击“提交”按牛,如果表单没有发出去,则浏览器
  • 很久没有写博客,最近在做项目的时候遇到了个很迷的网络请求的坑,在添加header的时候总是401,但是postman请求结果却没有问题。 搞了两天,查了很多都没找到解决方法,最后解决了但是还是没有很懂具体的原因,...
  • 一次 HTTP 请求的完整过程——协议篇 一、大致流程 根据域名和 DNS 解析到服务器的IP地址 (DNS + CDN) 通过ARP协议获得IP地址对应的物理机器的MAC地址 浏览器对服务器发起 TCP 3 次握手 建立 TCP 连接后发起 HTTP ...
  • 由此我认为响应时间久与代码逻辑没有关系,可能是跟网络传输有关系,所以我在宿主机服务器使用curl去访问看看响应需要多少时间 结果耗时还是需要十秒左右 于是我开始认为与代码无关的想法又有点动摇了,我决定...
  • 不错,大致过程确实如此,可终究“眼见为实”,此篇文章重点在于亲自实践,通过WireShark抓包来图解探索网络请求的整个过程,通过实践来更透彻的认识网络模型、三握手、滑动窗口协议等理论知识在实际
  • 段时间,面试问到了这个问题,感觉自己回答的不是很好, 当时我的回答是 1.域名解析(这个说了一下域名解析的过程) ,解析出对应IP地址 2.解析成功之后,发起TCP三握手建立连接 3.建立连接后发起HTTPS请求 4....
  • Tomcat源码分析--一次HTTP请求过程

    千次阅读 2016-05-08 20:37:45
    前两篇我们分析了Tomcat服务的启动过程和Connector(连接器)。现在让我们看看一次Tomcat服务器是怎么提供HTTP服务的。 上文我们说到endpoint是底层处理I/O具体实现类,那么一次HTTP首先也要从这个类中开始。还是以...
  • http一次请求和响应的全过程

    千次阅读 2018-09-10 17:30:13
    、什么是HTTP协议 http协议是Hyper Text Transfer Protocol(超文本传输协议),是用于万维网服务器传输超文本到本地浏览器的传输协议,http协议是基于TCP/IP通信协议来传送数据。http协议工作于B/S架构的系统时...
  • )从输入网址到获得页面的网络请求过程 (1)域名解析,其实就是根据用户输入的网址去寻找它对应的IP地址,比如输入www.baidu.com的网址就会经历以下过程 1.先从浏览器缓存里找IP,因为浏览器会缓存DNS记录...
  • HTTP请求的完全过程

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

    千次阅读 2018-10-21 15:44:06
    发起网络通信,建立连接:三握手 发送报文,到服务器然后服务器解析 web服务器将请求转到servlet容器,web服务器将请求转到servlet容器 servlet容器查找sertvlet实例,若没有,则实例化、...
  • 域名解析-&amp;amp;gt;域名 -&amp;amp;gt;缓存-&amp;amp;gt;根域dns-&amp;amp;gt;顶级域dns-&amp;amp;gt;...4.浏览器发起个DNS的系统调用 域名解析 5.客户端通过随机端口使
  • 整个流程如下: 域名解析 为了将消息从你的PC上传到服务器 上.需要用到1P协议、ARP协议和0SPF协议 发起TCP的3握手 建立TCP连接后发起http请求 ...、域名解析的详细内部过程 例如,要查询www.baidu.com...
  • 一次网页请求背后的连接

    千次阅读 2016-12-07 10:55:39
    本文使用WireShark抓包工具,对一次网页请求背后的TCP连接、HTTP请求进行了详细的展示。对网页请求中浏览器使用的并行连接、持久连接以及TCP连接建立关闭的过程均有所分析讨论,对HTTP如何封装在TCP中进行数据请求...
  • 一次完整的HTTP请求所经历的7个步骤 HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1. 建立TCP连接 在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立连接,...
  • 通过HTTP网络请求过程中的TCP协议

    千次阅读 2018-07-03 13:33:07
    面对互联网的技术日新月异,所要掌握的东西也越来越多。1.关于网络领域的知识(掌握和了解) a) 协议:tcp、... 个http请求,在整个网络中的请求过程 TCP 总共有四层模型:传输层、网络层、数据链路层、物理层...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 494,146
精华内容 197,658
关键字:

一次网络请求的详细过程