跟大师兄学测试系列-HTTP协议与TCP协议

2017-08-23 分类:跟大师兄学测试 阅读(2506) 评论(0)

HTTP协议

HTTP协议的发展史

HTTP(HyperText Transfer Protocol)协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务端的数据传输格式。

1.HTTP 0.9版本  1991年

这个版本就是最初用来向客户端传输HTML页面的,所以只有一个GET命令,然后服务器返回客户端一个HTML页面,不能是其他格式。利用这个版本完全可以构建一个简单的静态网站了。

2.HTTP 1.0版本  1996年

1.0版本是改变比较大的,奠定了现在HTTP协议的基础。这个版本的协议不仅可以传输HTML的文本页面,还可以传输其他二进制文件,例如图片、视频。而且还增加了现在常用的POST和HEAD命令。请求消息和响应消息也不是单一的了,规定了一些元数据字段。例如字符集、编码、状态响应码等。

3.HTTP 1.1版本  1997年

实际上是在1.0版本之后半年时间又发布了一个版本,这个版本在1.0版本的基础上更加完善了。这个版本增加了持久连接,就是说之前版本的协议一次请求就是一次TCP连接,请求完成后这个连接就关闭掉了。众所周知TCP协议是可靠的,建立连接需要3次握手,断开连接需要4次挥手,并且TCP有流量控制和拥塞控制,有慢开始机制,刚建立连接时传输比较慢,这是比较耗费资源的。一个丰富的页面会有许多图片、表单和超链接。这样的话就会有多次的HTTP请求,所以在这个版本上默认不关闭TCP连接也不用声明Connection: keep-alive字段。如果确实要关闭可以指定Connection: close字段。还引入了管道机制,就是说在一个TCP连接里可以同时发送多个HTTP请求,而不必等待上一个请求响应成功再发送。还增加了PUT、PATCH、HEAD、 OPTIONS、DELETE等命令,丰富了客户端和服务端交互动作。还增加了Host字段。

4.HTTP 2版本  2015年

这个版本也是随着互联网的发展,有了新的需求制定了新的功能还有对上一个版本的完善。1.1版本有了管道机制,但是正在服务端还是要对请求进行排队处理。这个版本可以多工的处理。还有了头信息压缩和服务器的主动推送。

5.HTTPS

HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。

HTTP协议的特点

1、基于TCP协议

  HTTP协议目的是规定客户端和服务端数据传输的格式和数据交互行为,并不负责数据传输的细节。底层是基于TCP实现的。1.1版本以后的http协议是默认持久连接的,也就是多次HTTP请求使用一个TCP连接。

2、1.1版本以后的http协议支持管道机制,在一个TCP连接中可以发送多个http请求

HTTP报文

HTTP分为两种报文一种是请求报文、一种是响应报文

  1. HTTP请求报文 就是在PC端浏览器内输如www.imdsx.cn 回车时所发送的报文。
  2. HTTP响应报文 服务端返回的报文称为响应报文,也就是我们看到的大师兄的首页。

请求报文与响应报文都是由请求头和请求体组成

HTTP方法

HTTP状态码

HTTP常用状态码

TCP协议(Transmission Control Protocol 传输控制协议)

1、提供IP环境下的数据可靠传输,有效流控,全双工操作(数据在两个方向上能同时传递),多路复用服务,是面向连接,端到端的传输;

2、面向连接:正式通信前必须要与对方建立连接。事先为所发送的数据开辟出连接好的通道,然后再进行数据发送,像打电话。(三次握手与四次挥手)

3、TCP支持的应用协议:Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、HTTP(超文本传输协议)。TCP用于传输数据量大,可靠性要求高的应用。

TCP一般用于文件传输(FTP HTTP 对数据准确性要求高,速度可以相对慢),发送或接收邮件(POP IMAP SMTP 对数据准确性要求高,非紧急应用),远程登录(TELNET SSH 对数据准确性有一定要求,有连接的概念);

HTTP协议是基于TCP协议(传输层)的应用层协议,那么我们也需要了解下HTTP请求之前,和HTTP请求之后TCP协议都做了什么事情。

HTTP请求前

TCP协议客户端发起三次握手创建连接通道。

HTTP请求后

TCP协议四次握手关闭链接通道,可以由任意一端发起第一次握手。

UDP协议(用户数据报协议,User Datagram Protocol)

面向非连接的(正式通信前不必与对方建立连接,不管对方状态就直接发送,像短信,QQ),不能提供可靠性、流控、差错恢复功能。UDP用于一次只传送少量数据,可靠性要求低、传输经济等应用。

UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快),在线视频(RTSP 速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的)。

您可能也喜欢:

Python-代理-mitmproxy

我们在做接口测试时,常常使用到Fiddler和Charles这两款代理工具,进行请求数据的修改、返回数据的修改。其实python的mitmproxy模块也可以实现这两款工具的功能,使用起来也很简单。如下: 安装 ...

more

跟大师兄学测试系列-探秘Cookie与Session

揭秘Cookie 为什么要用Cookie? 在HTTP请求中,每个HTTP请求都是独立,没有办法做上下文关联,但是在真正的应用中,很多场景是需要用到这种关联的。最经典也是最常见到使用Cookie的就是登录操作,登录成功后,我们可以在同一浏览器下的不同Tab页面都能访问我们需要登录才可以看到的页面。这...

more

欢迎新朋友你的到来!
还没有人抢沙发呢~
昵称

登录

忘记密码 ?

切换登录

注册