HTTP协议请求过程分析

步骤:用户输入URL,以www.yxh.com为例,获得主机名后,进行DNS域名解析,

首先,浏览器自身会查找自己缓存,没有的话,寻找本机的hosts文件,本机hosts没有后,查找本机域名缓存服务器,如果在缓存服务器未发现,缓存服务器会像根域发起请求,根域会给返回.com的IP地址,然后缓存服务器会请求.com服务器,.com服务器会返回yxh.com的IP地址(假设为192.168.20.20),然后缓存服务器会寻找yxh.com服务器,询问www主机所对应的的IP地址,服务器会返回www.yxh.com的IP地址,并且根据URL获得端口号,默认80,。

获取到IP地址及端口号后,客户端会开启一个随机端口(1024-65535)与其服务器(192.168.20.20)的80端口相连,建立TCP的三次握手:首先,客户端会向服务器发送一个SYN请求报文,SYN的值为1,初始序列号为x,此时,客户端处于SYN-SENT(等待服务器回应状态),服务器收到后返回一个ACK确认报文,ACK的值为1,确认序列号为x+1,同时,发送一个SYN请求连接报文,SYN的值为1,初始序列号为y+1,这时服务器处于SYN-RCVD(服务器请求确认状态),客户端收到确认号x+1后,发送一个ACK报文,ACK的值为1,确认序列号为y+1,至此,客户端与服务器完成TCP的三次握手;

然后客户端会向服务器发送一个HTTP GET请求,然后客户端会从服务器读取HTTP相应,之后浏览器会解析HTML代码,并且请求HTML代码中的资源,浏览器将内容呈现给用户;

当用户访问完成后,客户端会主动断开连接,开始进行TCP的四次挥手:客户端会发送一个FIN断开连接报文,FIN的值为1,初始序列号为u,这时客户端处于中止等待状态1(FIN-WAIT-1),服务器收到后,会给客户端发送一个ACK确认释放报文,ACK的值为1,确认序列号为u+1,同时发送一个自己的序列号v,客户端收到后确认报文后,进入FIN-WAIT-2(中止等待状态2)服务器处于CLOSE-WAIT(关闭等待状态),但是这时服务器还能继续想服务器发送数据,客户端被动接受,所以服务器会发出FIN中止连接报文,FIN的值为1,初始序列号为w,这时服务处于LAST-ACK(最后确认状态),客户端收到后会返回一个ACK确认报文,确认序列号为w+1,服务器收到后会断开自己的连接,但是这时客户端还处于TIME-WAIT(时间等待状态),等待时长为2MSL(即两倍最长报文寿命),等待结束后,客户端会进入CLOSED状态,至此TCP的四次挥手完成,客户端与服务器断开TCP连接;

至此,HTTP协议请求流程分析结束

HTTP协议请求过程的更多相关文章

  1. Http协议简单解析及web请求过程

    HTTP协议: HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统. 基于HTTP协议的客户端/服务器请求响应机制的信息交换过程包含下面几个步骤: 1)    ...

  2. 在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)

    在浏览器中输入URL后,执行的全部过程.会用到哪些协议?(一次完整的HTTP请求过程) 整个流程如下: 域名解析 为了将消息从你的PC上传到服务器上,需要用到IP协议.ARP协议和OSPF协议. 发起 ...

  3. 【转】DHCP的请求过程

    首先你得清楚DHCP的请求过程:1.client向server发送请求,发向广播地址2.server向client回应一个IP,发向单播地址3.client向server回应一个确认,发向广播地址,表 ...

  4. TOMCAT原理详解及请求过程

    Tomcat: Tomcat是一个JSP/Servlet容器.其作为Servlet容器,有三种工作模式:独立的Servlet容器.进程内的Servlet容器和进程外的Servlet容器. Tomcat ...

  5. TOMCAT原理详解及请求过程(转载)

    转自https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Ser ...

  6. 深入web的请求过程

    一.深入web的请求过程 1.1.B/S网络架构概述 · 从前端到后端,都基于应用层协议HTTP来交互数据.一个请求就对应了一个操作,完成操作之后就断开了连接.基于这样的特点可以用来满足海量的用户的操 ...

  7. http一次请求过程

    物理层:支持底层网络协议: 其中网络层支持IP协议: 传输层支持TCP协议,它是面向连接的: 应用层支持 http,ftp  tftp,SMTP,DHCP协议 一个完整的http请求过程: 1.浏览器 ...

  8. 一次完整的 HTTP 请求过程

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

  9. 《深入分析Java Web技术内幕》读书笔记 - 第1章 深入Web请求过程

    第1章 深入Web请求过程 1 1.1 B/S网络架构概述 2 基于统一的应用层协议HTTP来交互数据. 1.2 如何发起一个请求 4 HTTP连接本质是建立Socket连接.请求实现方式:工具包如H ...

随机推荐

  1. android dialog使用自定义布局 设置窗体大小位置

    AlertDialog.Builder builder = new Builder(mContext); builder.setTitle("更新进度"); final Layou ...

  2. JavaFx入门(一)

    JavaFx和Swing的对比: javaFX确实比swing好看些,但没有swing的事件按钮等写法爽快,特别是使用eclipse的matisse开发视图,托拉拽的方式.可javaFX不只是有swi ...

  3. 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_8 响应json数据之响应json格式数据

    springMvc的框架已经帮我们做好了.发过来的数据转换为javaBean对象 发过来的键值的形式,如果属性和javaBean对应的话,可以直接封装到对象中. key做额外的转换的时候,需要另外的j ...

  4. 五十三:WTForms表单验证之常用验证器

    Email:验证数据是否为邮箱EqualTo:验证此字段的数据是否和另一个字段的值相等,常用与校验密码和确认密码InputRequired:检验数据必传Length:校验数据长度NumberRange ...

  5. dbgrid中移动焦点到指定的行和列

    dbgrid是从TCustomGrid继承下来的,它有col与row属性,只不过是protected的,不能直接访问,要处理一下,可以这样:TDrawGrid(dbgrid1).row:=row;TD ...

  6. 利用netsh命令设置IP地址/DNS服务器地址

    一.设置IP地址 1. 自动获取IP地址: netsh interface ip set address [name=]"本地连接" [source=]dhcp 2. 手动设置IP ...

  7. 应用安全 - 工具 - Jmeter - 漏洞 - 汇总

    CVE-2018-1297 Date 类型 rmi 反序列化导致远程代码执行 影响范围

  8. 语言模型评价指标Perplexity

    在信息论中,perplexity(困惑度)用来度量一个概率分布或概率模型预测样本的好坏程度.它也可以用来比较两个概率分布或概率模型.(应该是比较两者在预测样本上的优劣)低困惑度的概率分布模型或概率模型 ...

  9. 浏览器渲染优化4(styles and layout)

    你已经学会了查找和解决问题.希望你的js能正常运行了,但这只是制作帧的一小部分.在这节课里,你将处理样式,也就是像开发工具里标记的那样,重新计算样式.学完这节课后,你将学会从样式计算过程中找到性能问题 ...

  10. java第一次实验总结&第三周总结

    Java第一次实验报告,java开发环境与简单的Java程序 一.实验目的 1.熟悉JDK开发环境 2.熟练掌握结构化程序设计方法 二.实验内容 打印输出所有的"水仙花数",所谓& ...