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 ...
随机推荐
- Jdbc中大文本类型的处理
Oracle中大文本数据类型, Clob 长文本类型 (MySQL中不支持,使用的是text) Blob 二进制类型 MySQL数据库, Text 长文本类型 Blob 二 ...
- javascript之Number对象
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- flutter shared_preferences 异步变同步
前言 在开发原生iOS或Native应用时,一般有判断上一次安装的版本和当前版本是否是同一个版本,如果不是同一个版本,则要显示引导页,这个过程是把版本号持久化存储起来,在每一次启动时进行判断,这个过程 ...
- NGUI中UILabel使用url标签的一个bug
在NGUI里,UILabel控件可以支持一些简单功能的标签,使文本显示更丰富及实现类似超链接的功能.但是在使用的时候发现了NGUI3.5.9版本里存在着一个bug.不过还好修复这个bug也很简单. 在 ...
- oracle 查看表空间使用比
select b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes / / 大小M, (b.bytes - sum(nvl(a.bytes, ))) / ...
- FTP文件上传和下载(JAVA)
前文 1.使用FTP的方式进行文件的上传和下载(非SFTP) 2.本人手打,亲测,代码是最简单的,清晰易懂,需要的同学请结合自己的实际添加业务逻辑 2.第三方的jar包:import org.apac ...
- Tomcat 8.5 配置 域名绑定
1.修改Tomcat的Server.xml两处地方即可: a) b)
- 1.Spring项目启动时,加载相关初始化配置
Spring项目启动时,会加载一些常用的配置: 1.加载spring上下文 SpringApplicationContextUtils.initApplicationContext(event.get ...
- JS事件中级 --- 拖拽
http://bbs.zhinengshe.com/thread-1200-1-1.html 要求:实现div块的拖拽 原理:拖拽过程中鼠标点和div块的相对位置保持不变. 需要理解三点: 1. 为什 ...
- class文件访问标志
class文件中用两个字节共16位代表访问标志(access flags),用于表明该类或接口被访问时能提供的一些信息: 标志名称 标志值 含义 ACC_PUBLIC 0x00 01 是否为Publi ...