http协议

        HTTP 是一种允许浏览器向服务器获取资源的协议
        浏览器使用HTTP协议作为应用层协议,用来封装请求的文本信息。使用 TCP/IP作为传输层协议发送到网络上
        从 浏览器输入 https://mp.csdn.net/ 发生了什么

        一.构建请求
            游览器构建请求行信息 GET /index.html HTTP1.1 ,构建好后,浏览器准备发起网络请求

        二.查找缓存
            在真正发起网络请求之前,浏览器会先在浏览器缓存中查询是否有要请求的文件。
            浏览器缓存是一种在本地保存资源副本,以供下次请求时直接使用的技术

        三.准备IP地址和端口
            DNS把域名和IP地址做一一映射关系。这套域名映射为 IP 的系统就叫做“域名系统”,简称 DNS
            在准备ip地址和端口的时候
            1.首先会请求dns返回域名对应的IP。浏览器还提供dns数据缓存服务,如果域名已解析过,则会缓存。
            2.然后会通过url获取端口号,如果未指明端口号,则默认为80端口

       四.等待TCP队列
            Chrome有个机制,同一个域名同时最多只能建立6个TCP连接(http/1.1)。
            假如同一域名下同时有10个请求发生,那么其中4个请求进入排队等待状态,直至进行中的请求完成

       五.建立TCP连接
            通过三次握手与服务器建立连接

       六.发送HTTP请求
            建立TCP连接之后,HTTP就可以传输了
            1.浏览器会向服务器发送请求行,包括了请求方法(get,post...)、请求url、HTTP协议版本号
            2.发送请求行命令之后,还会以请求头发送一些浏览器的基础信息给服务器,比如操作系统,浏览器内核,cookie
            3.如果请求行使用的是post请求方法,还需要将数据通过请求体发送给服务器

       七.服务器处理HTTP请求
            服务器处理结束会返回
            1.响应行,包括了请求方法(get,post...)、状态码、HTTP协议版本号
            2.响应头,包括了服务器生成返回数据的时间、返回的数据类型、Cookie
                -----重定向操作:响应行的状态码为301或302,浏览器就会获取响应头的Location字段中的地址,并跳转到该地址
            3.响应体(正文),包括了服务器返回给我们的数据

       八.关闭TCP连接
            通常服务器向客户端返回了请求数据之后,经过四次挥手阶段就会关闭TCP连接
            如果浏览器或者服务器在响应头设置了 Connection:Keep-Alive,那么TCP连接不会被关闭,浏览器可以继续通过这个TCP连接发送http请求。节省了建立TCP连接的时间

       为什么很多站点第二次打开会快很多?
            浏览器缓存了一些耗时的数据
            比如 DNS缓存,页面资源缓存

       页面资源缓存
            第一次访问页面:
                当第七步服务器处理HTTP请求返回响应头的 Cache-control: Max-age = 2000, 则会把这次请求的资源缓存本地
            第二次访问页面:
                当进入第二步查找缓存时
                    如果没有缓存,继续往后走 建立TCP链接,发送请求.....
                    如果有缓存, 查看缓存是否过期
                        没有过期, 直接返回 缓存的的数据,不再进行后面的步骤
                        过期了, 建立tcp连接,发送http请求,服务器处理http请求,判断响应行状态码
                            响应行状态为304,表示内容未更新,可以直接使用缓存,并刷新缓存时间
                            不为304, 服务器返回响应头,响应体。关闭tcp连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值