• HTTP协议 学习笔记一


      在我们简单了解WEB的发展历史之后,发现整个WEB的都在围绕着各种网络协议。其中比较突出的应该属HTTP 协议。

    一、什么是HTTP协议

      HTTP协议的全称为超文本传输协议(HyperText Transfer Protocol),它最早是由CERN(欧洲核子研究组织)的蒂姆 • 伯纳斯 - 李(Tim BernersLee)博士提出的,目的是为了能让远隔两地的人们能进行信息交流(超文本也就是HTML)。

     

    二、HTTP协议的发展历史

    各阶段的区别:

      http/0.9:比较简单只能传输html,仅支持get请求,也没有响应码和响应消息。

      http/1.0:短连接(每一个请求建立一个TCP连接,请求完成后立马断开连接。这将会导致2个问题:连接无法复用,head of line blocking连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。head of line blocking会导致带宽无法被充分利用,以及后续健康请求被阻塞。)

      http/1.1:增加了长连接(通过http pipelining实现。多个http 请求可以复用一个TCP连接,服务器端按照FIFO原则来处理不同的Request);增加connection header(该header用来说明客户端与服务器端TCP的连接方式,若connection为close则使用短连接,若connection为keep-alive则使用长连接);增加身份认证;增加状态管理;增加Cache缓存等机制相关的请求头和响应头;增加Host header。

      http/2.0:增加多路复用,服务器推送。

    三、通过TCP/IP协议族来了解HTTP

      HTTP是TCP/IP协议族的子集,想要理解HTTP协议应该先了解TCP/IP协议族。TCP/IP协议族是网络传输过程中各种协议的集合。

    TCP/IP协议族采用分层管理,可以分为四层:应用层、传输层、网络层、链路层。利用 TCP/IP 协议族进行网络通信时,会通过分层顺序与对方进行通信。客户端从应用层往下走,服务器则往链路层往上走。(图片来源于《图解http》)

     

      以HTTP协议通信为例:首先,我们打开一个想看web应用,浏览器通过HTTP协议发送请求,传输层将应用层传递下来的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP 协议),增加作为通信目的地的 MAC 地址后转发给链路层。服务器在链路层接收到数据,按序往上层发送,一直到应用层,然后我们的浏览器就能接收到响应的信息。

      客户端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,服务器端在层与层传输数据时,每经过一层时会把对应的首部消去。(图片来源于《图解http》)

     

      HTTP协议之所以能够准确无误进行信息传递,是依靠传输层的TCP协议。客户端和服务器通过TCP协议三次握手进行连接,四次挥手断开连接。发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表“握手”结束。 (图片来源于《图解http》)

     

  • 相关阅读:
    Winform 控件开发,数据项重复
    input 价格自动补全 vue项目中的实际运用
    vue + element ui 的form表单中动态rules的设置
    整理全网文档管理系统,持续更新
    分享SpringBoot优秀教程、资源、仓库等
    分享SpringCloud的教程、资源、笔记
    整理全网最全K8S集群管理工具、平台
    git在本地忽略文件
    Python实现图片转字符画
    Pythonargparse用法
  • 原文地址:https://www.cnblogs.com/xingyuyu/p/15481552.html
Copyright © 2020-2023  润新知