博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP协议基础-1-HTTP简介
阅读量:4302 次
发布时间:2019-05-27

本文共 1733 字,大约阅读时间需要 5 分钟。

之前一直不重视HTTP协议,很多概念是半懂不懂的,加上我快学习完了Java web开发中的servlet部分,逐渐对HTTP中的请求和响应以及其他部分有了一点了解。现在开始准备梳理下接口自动化测试,博客里以及完成单元测试框架的梳理(Junit和TestNG), 在做接口测试梳理之前,我还是有必要系统地学习和复习下HTTP协议。

其实我们经常说,接口测试很简单,比功能自动化测试还要简单。这种简单是建立在你熟悉HTTP协议地基础上,你了解了请求和响应交互过程,以及请求头和响应头,cookies和session这些,你才可以说接口测试很简单。等你会了接口测试,你会这么说,接口测试很简单,就是发送请求和拿到响应去处理,例如判断,很简单。

 

1.HTTP简介

HTTP(Hypertext Transfer Protocol,超文本传输协议)是一个应用层协议,从1990年开始,http是万维网中不同机器之间数据通讯的基础。HTTP是一种通用的无状态的协议,使用请求和错误状态码和头可以用于其他目的。

基本上可以这么理解,HTTP是基于TCP/IP的一种通信协议,主要用来万维网之间数据交互,默认的端口是TCP 80,当然80端口其他协议也可以使用。HTTP为计算机相互通信提供了标准化方法。HTTP规范指定如何构造客户端的请求数据并将其发送到服务器,以及服务器如何响应这些请求。

 

2.基本功能

以下三个特征使得HTTP简单但是功能强大的一种协议。

HTTP是无连接的
在HTTP客户端,例如一个浏览器发起HTTP请求,请求发出后,等待服务器给回的响应内容。服务器处理请求并发回响应,然后客户端断开连接。因此,客户端和服务器仅在当前请求和响应期间相互了解。对客户端和服务器之类的新连接的进一步请求是彼此新的。

HTTP与媒体无关

这意味着,只要客户端和服务器都知道如何处理数据内容,就可以通过HTTP发送任何类型的数据。 客户端和服务器都需要使用适当的MIME类型指定内容类型。

HTTP是无状态的

如上所述,HTTP是无连接的,它是HTTP作为无状态协议的直接结果。 服务器和客户端仅在当前请求期间相互了解。 之后,他们两个都忘记了彼此。 由于协议的这种性质,客户端和浏览器都不能在跨网页的不同请求之间保留信息。

 

3.HTTP/1.0和HTTP/1.1的区别

当前我们都是使用HTTP/1.1,最大区别就是在HTTP/1.0中,为每一个请求和响应创建新连接,而在HTTP/1.1中,一个连接可用于一个或多个请求/响应交换。
怎么理解一个请求可用于多个请求/响应交换。在Servlet技术中,有一个概念叫请求转发。生活中请求转发的例子是,例如,你去一个当地行政办公中心,你到了一个窗口,你告诉柜台你要办什么事情,这个就是请求。这个柜台人说,你要办的事情,他这办不了,但是他可以转给他同事(不在同一个窗口)办。由于你好不容易排队才排上这个窗口,为了避免再次排队,他找他同事办好了,这个过程就是转发请求,办好了,他同事给他,然后他给你,整个过程就产生了多次请求和响应,但是只有一次排队过程,这个排队过程就是一个新的连接。

 

4.基础架构

下图显示了Web应用程序的一个非常基本的体系结构,并描述了HTTP的位置:

HTTP协议就在Client和Server之间的一层。主要用来传输请求和响应的数据。先来理解下面两个概念,以后经常说到。

客户端:
HTTP客户端以请求方法,URI和协议版本的形式向服务器发送请求,然后是类似MIME的消息,其中包含请求修饰符,客户端信息以及TCP / IP连接上的可能正文内容。客户端在电脑PC端一般指就是浏览器,手机中app也是浏览器。

服务端:

HTTP服务器以状态行响应,包括消息的协议版本和成功或错误代码,然后是包含服务器信息,实体元信息和可能的实体主体内容的类似MIME的消息。

以上出现的一些概念,例如URI,协议版本,MIME,请求修饰符,正文,状态响应码,元信息和主体,这些名词现在不懂,没关系,这个系列文章就会带你慢慢读懂这些概念的常见的操作。

 

重点概念:HTTP全称,HTTP/1.1协议,HTTP是无连接,HTTP是无状态

 

转载地址:http://kjows.baihongyu.com/

你可能感兴趣的文章
MFC 操作配置文件INI的方法
查看>>
MFC创建及读写ini文件操作(转)
查看>>
MFC 获取当前工作路径和可执行文件路径
查看>>
MFC对话框中处理Enter或Esc按键事件方法
查看>>
MFC获取键盘光标和鼠标光标所在控件的ID
查看>>
MFC中动态获取/设置按钮的文字
查看>>
MFC中CString和int的转换
查看>>
退出MFC应用程序的方法集
查看>>
C/C++中如何获取数组的长度?
查看>>
VS2010 MFC中控件、对话框等背景颜色动态修改的方法
查看>>
MFC启动和关闭线程
查看>>
MFC绘制动态曲线,用双缓冲绘图技术防闪烁
查看>>
MFC SetWindowPos
查看>>
C++虚函数表,虚表指针,内存分布
查看>>
c++中.dll与.lib文件的生成与使用的详解
查看>>
CyAPI.lib(CyAPI.obj) : error LNK2019: 无法解析的外部符号...
查看>>
在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h"”?
查看>>
DeleteDC() 与 ReleaseDC() 的区别 [转]
查看>>
WinHand.cpp Line 199 错误 WinHand.cpp Line 218 错误
查看>>
GDI对象和CDC的使用方法(防止资源泄漏)
查看>>