http协议请求流程分析

用户输入URL(地址链接)(http://www.baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先找自身的缓存,如果有解析结束,如果没有客户端会去找host文件,如果host文件没有的话,客户端会去找本地的DNS缓存服务器,本地的DNS缓存服务器没有的话,缓存服务器会去找根域,根域没有,会返回一个.com.然后本地缓存服务器会去找顶级域,顶级域没有的话会返回baidu.com.,然后本地缓存服务器会去找二级域,二级域解析完后会返回客户端。

客户端解析到IP地址后会通过TCP的三次握手与服务器建立连接,首先客户端向服务器发送请求连接报文,SYN=1初始序号seq为x,这时客户端进入SYN-SENT状态,服务器确认请求报文ACK=1,SYN=1,确认序号ACK=X+1,服务器产生的初始序号seq=y,回复客户端确认连接,此时服务器进入SYN-RCVD状态,客户端接受后确认报文ACK=1,ACK=y+1,客户端又重组序号为x+1。TCP连接已经建立,客户端进入ESTABLISHED 状态,当服务器收到客户端的确认后,也会进入 ESTABLISHED 状态。客户端连接到IP地址,发送httpGET的请求,从服务器读取http响应。

之后断开连接时,需要通过TCP的四次挥手完成,客户端向服务器发送断开连接请求报文,FIN=1,ACK=1,序号为u,客户端处于FIN—WAIT-1(终止等待1)状态,服务器确认报文ACK=1,确认序号为ACK=u+1,服务器的序号为v,回复客户端,服务器服务端处于CLOSE—WAIT(关闭等待)状态,客户端接受确认报文ACK=1,确认序号ACK=v+1,客户端重组序号为seq=u+1,客户端处于FIN—WAIT-2(终止等待2)状态,然后服务器也想让客户端断开连接,就发送了断开连接请求,FIN=1,ACK=1,服务器重组序号为w,服务器服务端处于LAST—ACK(最后确认)状态,客户端接受后确认报文ACK=1.确认序号为ACK=w+1,客户端序号为u+1,客户端进入CLOSED(时间等待)状态,等待最长报文段寿命2*MSL,服务器确认后,立即进入关闭状态。然后进行关闭连接。

http协议请求流程分析的更多相关文章

  1. PPTP协议握手流程分析

    一  PPTP概述 PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网,可 ...

  2. PPTP协议握手流程分析--转载

    一  PPTP概述   PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网 ...

  3. DRF之REST规范介绍及View请求流程分析

    编程是数据结构和算法的结合,而在Web类型的App中,我们对于数据的操作请求是通过url来承载的,本文详细介绍了REST规范和CBV请求流程. 编程是数据结构和算法的结合,小程序如简单的计算器,我们输 ...

  4. go http请求流程分析

    前言 golang作为常驻进程, 请求第三方服务或者资源(http, mysql, redis等)完毕后, 需要手动关闭连接, 否则连接会一直存在; 连接池是用来管理连接的, 请求之前从连接池里获取连 ...

  5. Action请求流程分析

    Strut2流程分析-----从请求到Action方法() 首先请求会调用strutsPrepareAndExcuteFliter----(这个就是我们在web.xml文件中所配置的那个拦截器吧,所有 ...

  6. Chromium源码--网络请求流程分析

    转载请注明出处:http://www.cnblogs.com/fangkm/p/3784660.html 本文探讨一下chromium中加载URL的流程,具体来说是从地址栏输入URL地址到通过URLR ...

  7. HTTP协议请求过程

    HTTP协议请求过程分析 步骤:用户输入URL,以www.yxh.com为例,获得主机名后,进行DNS域名解析, 首先,浏览器自身会查找自己缓存,没有的话,寻找本机的hosts文件,本机hosts没有 ...

  8. javaweb学习总结十九(http协议概述以及http请求信息分析)

    一:http协议概述 1:http协议定义 2:使用telnet程序连接web服务器,获取资源 3:http协议:超文本传输协议,它是基于tcp/ip协议,就是建立在tcp/ip之上工作的, http ...

  9. okhttp异步请求流程和源码分析

    在上一次[http://www.cnblogs.com/webor2006/p/8023967.html]中对同步请求进行了详细分析,这次来分析一下异步请求,而关于异步请求和同步请求其使用方式基本上差 ...

随机推荐

  1. B. The Monster and the Squirrel

    B. The Monster and the Squirrel Ari the monster always wakes up very early with the first ray of the ...

  2. 力软敏捷框架 jfGrid 使用例子之一

    百度了下关于力软敏捷框架 jfGrid的教程,基本没有,出来的全是jqGrid.好吧看来只能自己上手了 今天来讲讲列设置属性里数据格式化事件(formatter)的使用 常规的使用方式如上图所示. 先 ...

  3. STM32CubeMX的使用

    1.STM32CubeMX简介 STM32CubeMx软件是ST公司为STM32系列单片机快速建立工程,并快速初始化使用到的外设.GPIO等,大大缩短了我们的开发时间.同时,软件不仅能配置STM32外 ...

  4. 在vue+elementUI项目中使用分页功能

    HTML: <div class="mRttt">         <!-- 分页 -->          <el-pagination       ...

  5. Scratch 第2课淘气男孩儿

    素材及视频下载 链接:https://pan.baidu.com/s/1qX0T2B_zczcLaCCpiRrsnA提取码:xfp8

  6. Linux利器:使用 gcc 编程C程序

    文章更新于:2020-03-23 文章目录 一.手动编译链接单个C源文件 1.创建C源文件 2.编译源文件 3.生成可执行文件 二.手动编译链接多个C源文件 1.创建两个C源文件 2.编译两个源文件 ...

  7. 下载SVN项目代码

    1. 到SVN根目录右键选中SVN Checkout...

  8. 多角度让你彻底明白yield语法糖的用法和原理及在C#函数式编程中的作用

    如果大家读过dapper源码,你会发现这内部有很多方法都用到了yield关键词,那yield到底是用来干嘛的,能不能拿掉,拿掉与不拿掉有多大的差别,首先上一段dapper中精简后的Query方法,先让 ...

  9. spark sql error mismatched input 'union' expecting { <EOF>,''................................

    给union的前后sql加括号就可以解决

  10. 02-css3之2D转换

    一.CSS3 -2D转换 转换(transform)可以实现元素的位移.旋转.缩放等效果.可以理解为变形. 1. 2D转换之移动translate 可以改变元素的页面中的位置,类似于定位. 1.1语法 ...