HTTP协议

一、HTTP协议

1、什么是协议

  • 为计算机网络中进行数据交换而建立的规则、标准或约定的集合。说的简单点,就是机器之间的“语言”

协议由三个要素组成:

  • 语义:表示要做什么
  • 语法:表示要怎么做
  • 时序:表示做的顺序

常见的应用层协议:

  • HTTP、Web Service 、TCP/IP、FTP、POP3等

2、HTTP协议

协议所在层级

  • http是基于TCPi协议之上的。在TCP/IP协议模型参考的各层对应的协议如下图,其中http是应用层http,中文名:超文本传输协议,用来实现客户端浏览器或其他程序与web服务器之间的通信,是互联网上应用最为广泛的一种网络协议。所有的www文件都必须遵守这个协议。设计http最初的目的是为了提供一种发和接收html页面的方法。

http请求模型

http工作原理

请求-->响应完整流程

  • 客户机发起一次请求的时候:客户机会将请求封装成http数据包-->封装成tcp数据包-->封装层ip数据包-->封装成数据帧-->硬件将帧转换成bit流(二进制数据)-->最后通过物理硬件(网卡芯片)发送到指定地点。
  • 服务器硬件首先收到bit流,然后转换成ip数据包。于是通过ip协议解析ip数据包,然后又发现里面是tcp数据包,就通过tcp协议解析tcp数据包,接着发现是http数据包通过http协议再解析http数据包得到数据。

http的请求与响应

http与loadrunner

  • http请求和loadrunner函数:
  • get----web_url
  • post----web_submit_data
  • 任意类型----web_custom_request
  • http请求报文格式--请求行、请求头、请求体(请求正文):

  • http响应格式--响应头、响应体(请求正文):

http请求与报文格式:

  • xml

  • json

http与报文格式

http1.0存在的问题

  • 连接无法复用,每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下比较明显,慢启动则对文件类大请求影响较大。目前的解决方案:长链接、web_secket等
  • head of line blocking(1.0/1.1缺陷),线头阻塞,导致带宽无法被充分利用,以及后续健康请求被阻塞,解决方案:pipelining管道技术(存在较大的缺陷),http1.x有个问题叫线头阻塞(head of line blocking)它是指一个连接(connection)一次只提交一个请求的效率会比较高,多了就会变慢。http1.1试过用流水线来解决这个问题,但是效果不太理想(数据量较大或者速度较慢的响应,会阻碍它后面的请求)此外,由于网络媒介和服务器不能很好的支持流水线,导致部署起来困难重重。而多路传输(Multiplexing)能很好的解决这些问题,因为它能同时处理多个消息的请求和响应;甚至可以在传输过程中将一个消息跟另外一个掺杂在一起。所以客户端只需要一个连接就能加载一个页面。

http1.1存在的问题

  • HTTP Pipelining其实是把多个http请求放到一个TCP连接中发送,而在发送过程中不需要等待服务器对前一个请求的响应;只不过,客户端还是要按照发送请求的顺序来接受响应。

http2.0

  • HTTP2.0最大的特点:不会改动HTTP1.1的语义,http方法,状态码,url及首部字段等等,这些核心概念上一如往常,保持了很好的向下兼容能力,又能致力于突破上一代标准的性能限制,改进传输性能,实现低延迟和高吞吐量。
  • 几个基础概念:
  • 帧(frame)二进制数据格式而非文本格式,比起像http1.1这样的文本协议,二进制协议解析起来更高效、线上更紧凑、更重要的错误更少。
  • 流(Stream)流是个抽象概念,是对输入输出设备的抽象,具有方向性
  • 连接共享(Connection)一个request对应一个stream并分配一个id,这样一个连接上可以有多个stream,每个stream的frame可以随机的混杂在一起,接收方可以根据stream id将frame再归属到各自不同的request里面。

http1.1VShttp2.0

http与https的区别

  • http协议传输的数据都是未加密的,于是网景公司设计了SSL(Secure Sockect Layer)协议用于对http协议传输的数据进行加密,从而就诞生了https。
  • https协议需要到ca申请证书,一般免费证书较少,因而需要某些费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;https协议是由ssl+http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

常用的http协议测试工具

  • 各浏览器的开发者工具
  • Firebug
  • HTTPWATCH
  • Fiddler
  • Wireshark
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值