zoukankan      html  css  js  c++  java
  • 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》)

     

  • 相关阅读:
    JAVA EE 第一阶段项目问题
    车辆管理系统之开始自己的任务(三)
    车辆管理系统之搭建框架 添加必要的数据 安装svn(二)
    车辆管理系统之分析信息建表(一)
    牛客问题
    记录---base64
    JAVA EE 第一阶段考试
    简单ssh框架整合
    Struts2拦截器
    Struts2文件上传
  • 原文地址:https://www.cnblogs.com/xingyuyu/p/15481552.html
Copyright © 2011-2022 走看看