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协议请求流程分析结束

最新文章

  1. xml解析技术
  2. UWP学习记录6-设计和UI之控件和模式3
  3. DataTable 的使用
  4. MarkDown插入图片
  5. SharePoint 2013 术语和术语集介绍
  6. 微信微博分享注意事项(sharesdk)
  7. new 动态分配数组空间
  8. cojs QAQ的序列 解题报告
  9. Asp.Net 之 使用Form认证实现用户登录 (LoginView的使用)
  10. 到底该不该熟悉掌握struts2的ONGL呢?
  11. android中使用setVideoURI()播放视频
  12. 解决Nginx的connect() to 127.0.0.1:8080 failed (13: Permission denied) while connect
  13. python2.7生成exe可执行文件
  14. Java基础IO流(一)
  15. java最小公倍数与最大公约数
  16. docker基础之镜像
  17. mysqlclient and mysql-python安装出错方法
  18. 【Python】zip文件密码破解
  19. [Unity算法]斜抛运动
  20. Android中实现activity的页面跳转并传值

热门文章

  1. 网络通信框架之okHttpUtils
  2. 依赖注入框架之androidannotations
  3. 机器学习之SVM算法
  4. oracle 导出关键字说明
  5. stegsolve---图片隐写查看器
  6. jdk 1.8中的list排序
  7. Linux :linux磁盘分区(普通分区2T以内),安装免安装版mysql(tar.gz)
  8. Python爬虫学习==>第十章:使用Requests+正则表达式爬取猫眼电影
  9. CentOS 7 分区
  10. Jenkins中shell-script执行报错sh: line 2: npm: command not found