好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受.

目录

过程解说

体系介绍

域名解析

请求过程

问题解答


过程解说

先说下简要过程,基本过程是如下所列6步 :

1、使用DNS域名解析;

2、发起TCP的3次握手

3、建立TCP连接后发起http请求;

4、服务器响应http请求,浏览器得到返回response;

5、浏览器解析response,并请求其它的资源(如js、css、图片等);

6、浏览器对页面进行渲染。

体系介绍

HTTP 的整体体系是如下图所示:

比方说 : 访问一个网址的时候,例如www.google.com,具体流程如下

  • 对www.google.com这个网址进行DNS域名解析到IP

  • 通过IP,使用ARP地址解析协议,找到对应的服务器,发起TCP三次握手

  • 建立TCP请求后,发起HTTP请求(例如TOMCAT部署的springMVC程序)

  • 服务器响应HTTP请求,返回RESPONSE

  • 游览器解析response,并请求其它的资源文件(js、css等)

  • 游览器进行渲染界面

注:DNS域名解析采用的是递归查询的方式,软考时有考过,先从本地的DNS缓存中查找—>缓存中没有的话就去找根域名服务器—–>根域名服务器找不到继续找下一级,这样递归查找到再返回给游览器。

域名解析

1)首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容·和他们纳1000条缓存)   

2)如果浏览器自身的缓存里面没有找到,那么浏览器会搜索系统自身的DNS缓存

3)如果还没有找到,那么尝试从 hosts文件里面去找   

4)在前面三个过程都没获取到的情况下,就递归地去域名服务器去查找,

请求过程

在细描述如下

问题解答

Q: 为什么连接的时候是三次握手,关闭的时候却是四次握手?

A: 因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

Q: 为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态?

A: 一方面是为了等待这个客户重新连接的时候可以进行复用,另一方面必须假象网络是不可靠的,有可以最后一个ACK丢失。所以TIME_WAIT状态就是用来重发可能丢失的ACK报文。

Q: 如果TCP连接丢失了第三个ACK包怎么办?

A: 如果丢失了ACK包,SERVER端将该TCP连接的状态为SYN_RECV,并且依次等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包。如果超过设定的次数,将会断开连接。但是Client认为这个连接已经建立,如果Client端向Server写数据,Server端将以RST包响应,方能让Client感知到Server的错误。

大致的就如同上述所描述的这样,具体细节,可以去学习 《透视HTTP 协议》这本书,有更加详细的介绍!

更多信息、博文:请关注公众号: 码出精彩(codingba)

深入浅出 HTTP协议相关推荐

  1. 智能会议系统(35)---深入浅出sip协议

    深入浅出sip协议 传统电话是电磁波的通信,当电话技术发展到IP技术时代,SIP协议成为了电话通信标准协议,不仅可以通电话.还可以收发信息.视频.开会.放PPT.事实上,今天的通信业已全面采用SIP协 ...

  2. 【Network Security!】深入浅出ARP协议使用中间人截获密码

    文章目录 1 认识ARP 2 具体攻击实现 3 Kali Ettercap的使用 3.1 查下win7和win server03的ip. 3.2 打开Ettercap 3.3 在服务器中添加要使用FT ...

  3. 深入浅出HTTP协议

    http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web C ...

  4. [web面试必备]深入浅出HTTP协议

    1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web Consortium)和 ...

  5. 深入浅出TCP协议,为什么需要TCP协议?

    前面我们介绍了网络层的IP协议.ICMP协议.ARP协议,后续给大家介绍下传输层的TCP和UDP协议.今天先讲讲TCP协议. 本篇文章概要: 正文 我们知道TCP是传输层协议,用于为应用层提供服务,通 ...

  6. 深入浅出SAML协议

    SAML概述 SAML(Security Assertion Markup Language 安全断言标记语言)是一个基于XML的开源标准数据格式,为在安全域间交换身份认证和授权数据,尤其是在IDP( ...

  7. 网络协议漫游-HTTP | TCP/IP | P2P

    网络协议漫游-HTTP | TCP/IP | P2P HTTP协议入水 由三部分组成 状态行(请求行 | 响应行).首部.主体 状态行 首部 主体 HTTP 无状态协议详解 HTTP请求与响应 HTT ...

  8. 百度2015校园招聘软件开发笔试题及答案

    简单题(本题共30分) 请简述Tcp-ip的3次握手以及4次挥手过程?并解释为何关闭连接需要4次挥手(10分) 详细答案参见TCP/IP协议三次握手与四次握手流程解析 TCP三次握手.四次挥手过程如下 ...

  9. TCP的TIME_WAIT状态为什么要等待2MSL的时长

    TCP四次挥手的第四次挥手后为什么要经过TIME_WAIT状态? TIME_WAIT状态为什么是2MSL的时长?为什么不是等待其他时长? TCP第四次挥手后为什么要经过TIME_WAIT状态? 第四次 ...

  10. Android 高级面试高频知识点,flutter跳转到appstore

    Android JNI 之 Bitmap 操作 Android组件化方案及组件消息总线modular-event实战 Android 组件化最佳实践 Android中JSBridge的原理和实现 An ...

最新文章

  1. 1小时学会:最简单的iOS直播推流(八)h264/aac 软编码
  2. java和php混合_PHP和Java强强联合 集成开发详解
  3. wxWidgets:wxMediaCtr类用法
  4. setIconImage(icon);设置JFrame窗口标题图标
  5. 【Java从0到架构师】个人简历项目实战
  6. protel常用元件封装大全
  7. Java安全生态-Java加解密API详解-Java安全框架官方文档翻译:对称/非对称加密、数字签名、数字证书、安全通信、密钥库等
  8. 使用Travis CI实现C++ CMake工程多平台编译
  9. python中stop_thread_Python threading.Thread只能用私有方法self来停止.__ Thread_stop()
  10. 【Docker基本原理和常用命令】
  11. 微信支付宝H5收款码扫码转账个人通道仿原生接口带备注可回调成功率9成以上
  12. 【零基础Eviews实例】02自相关(序列相关)的检验与修正
  13. Win10连接远程桌面失败
  14. 【程序人生】跟小伙伴们聊聊我有趣的大学生活和我那两个好基友!
  15. 使用mycat实现分库分表
  16. 【佳学基因人工智能】ANACONDA下安装SCIPY
  17. 64位程序使用ado连接oracle,32位和64位C++程序使用ADO访问ORACLE注意事项和区别
  18. linux添加有效群组,linux基础命令--groupadd 创建新的群组
  19. 小程序--错误{errcode:40029,errmsg:invalid code, hints: [ req_id: weh8ka0297hc58 ]}
  20. 德国推出新冠疫情监测APP,鼓励民众上传智能手环与手表的健康数据

热门文章

  1. 软件项目成本估算的基本方法
  2. poEdit制作WordPress主题汉化,插件汉化攻略
  3. MAC配置thinkPHP的心路历程(课设vue-tpadmin商城)
  4. Rasa课程、Rasa培训、Rasa面试系列之: Rasa客户案例T-Mobile电信公司
  5. Vue使用命令创建项目
  6. TCP粘包和拆包问题
  7. python 保存为tiff文件, 图像转tiff, tif文件添加投影
  8. Linux 代码美化(二)
  9. 京瓷6525打印系统未连接到计算机,京瓷打印机安装扫描驱动后显示无法连接机器?...
  10. vue 登录页背景-粒子特效(Vue-Particles)