HTTP协议请求过程
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协议请求过程的更多相关文章
- Http协议简单解析及web请求过程
HTTP协议: HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统. 基于HTTP协议的客户端/服务器请求响应机制的信息交换过程包含下面几个步骤: 1) ...
- 在浏览器中输入URL后,执行的全部过程。会用到哪些协议?(一次完整的HTTP请求过程)
在浏览器中输入URL后,执行的全部过程.会用到哪些协议?(一次完整的HTTP请求过程) 整个流程如下: 域名解析 为了将消息从你的PC上传到服务器上,需要用到IP协议.ARP协议和OSPF协议. 发起 ...
- 【转】DHCP的请求过程
首先你得清楚DHCP的请求过程:1.client向server发送请求,发向广播地址2.server向client回应一个IP,发向单播地址3.client向server回应一个确认,发向广播地址,表 ...
- TOMCAT原理详解及请求过程
Tomcat: Tomcat是一个JSP/Servlet容器.其作为Servlet容器,有三种工作模式:独立的Servlet容器.进程内的Servlet容器和进程外的Servlet容器. Tomcat ...
- TOMCAT原理详解及请求过程(转载)
转自https://www.cnblogs.com/hggen/p/6264475.html TOMCAT原理详解及请求过程 Tomcat: Tomcat是一个JSP/Servlet容器.其作为Ser ...
- 深入web的请求过程
一.深入web的请求过程 1.1.B/S网络架构概述 · 从前端到后端,都基于应用层协议HTTP来交互数据.一个请求就对应了一个操作,完成操作之后就断开了连接.基于这样的特点可以用来满足海量的用户的操 ...
- http一次请求过程
物理层:支持底层网络协议: 其中网络层支持IP协议: 传输层支持TCP协议,它是面向连接的: 应用层支持 http,ftp tftp,SMTP,DHCP协议 一个完整的http请求过程: 1.浏览器 ...
- 一次完整的 HTTP 请求过程
一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HTTP的响应给客户端, ...
- 《深入分析Java Web技术内幕》读书笔记 - 第1章 深入Web请求过程
第1章 深入Web请求过程 1 1.1 B/S网络架构概述 2 基于统一的应用层协议HTTP来交互数据. 1.2 如何发起一个请求 4 HTTP连接本质是建立Socket连接.请求实现方式:工具包如H ...
随机推荐
- Element Children
The childNodes property contains all of the immediate children of the element. There is a significan ...
- Golang- import 导入包的几种方式:点,别名与下划线
包的导入语法 在写Go代码的时候经常用到import这个命令用来导入包文件,看到的方式参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用 fmt.Pr ...
- python基础知识(元组)
元组 不能更改内容 元组 (元素1,元素2) 元组的创建和删除 使用赋值运算符直接创建元组 元组名 = (元素1,元素2........) 只创建一个元素的元组 元组名 = (元素1,) 创建空 ...
- monkey详解
Monkey是Android系统自带的一个命令行工具,用户主要是通过adb命令来启动Monkey,Monkey在运行时,会根据命令行参数的配置,生成伪随机事件流,并在Android设备上执行对应的测试 ...
- java-字符
注意第16行处理方式.
- leveldb Arena源码分析
前言 对于一个高性能的服务器程序来说,内存的使用非常重要.C++提供new/delete来管理内存的申请和释放,但是对于小对象来说,直接使用new/delete代价比较大,要付出额外的空间和时间,性价 ...
- [转帖]深入浅出全面解析RDMA
深入浅出全面解析RDMA 置顶 2018年06月04日 11:36:54 MasterT-J 阅读数 17193更多 所属专栏: RDMA RDMA(RemoteDirect Memory Acc ...
- HanLP-分类模块的分词器介绍
最近发现一个很勤快的大神在分享他的一些实操经验,看了一些他自己关于hanlp方面的文章,写的挺好的!转载过来分享给大家!以下为分享原文(无意义的内容已经做了删除) 如下图所示,HanLP的分类模块中单 ...
- ORA-00911: invalid character解决方法
今天在搭建VLS系统后,登录系统测试时发现点击菜单提示错误“ORA-00911:???”.网上很多是因为语句中带分号导致的,但是这次是点开菜单就报错,怀疑是字符集设置的问题. 参考网上的解决方案,添加 ...
- round函数——银行家舍入算法
在处理四舍五入时,相信大部分人会使用math.round函数(不同的语言应该都有).有没有考虑过,这个函数是不是自己所需要的? po主碰到的问题是用来计算平均分.有个顶真的学生反映,明明是86.5,怎 ...