应用层和http协议

189 阅读3分钟

应用层是网络应用程序和他们的应用层协议所在之处。 应用层有许多协议,比如HTTP协议、SMTP协议和FTP协议等。

HTTP协议,我们上网时在浏览器里输入的网址前的那个http:// 就表示我们在用http协议请求和传送网页。

SMTP协议,简单邮件传输协议,在我们使用Outlook之类的邮件程序的时候就需要配置使用的电子邮件和SMTP服务器地址(也有的邮件使用POP3协议)。

FTP协议,内网上传下载文件,常常使用FTP。

而应用层的网络应用程序,对测试人员来说,我们测试的绝大部分网站、app都是这种程序。比如搜索引擎,网上购物网站,论坛等等。

举一个例子,一个搜索引擎网站,我们在浏览器里,使用HTTP协议向这个网站的服务器端发送了一个请求要求获取某个关键字的搜索结果。我们在页面里输入的内容,被按照HTTP协议把报文里的数据部分提取出来,进行处理。

像这样,我们通过浏览器里封装报文,使用应用层的HTTP协议和应用层以下的层次提供的"把报文传送到服务器端"的服务来完成报文的传输,之后服务器端再把报文解开,提取出内容,然后把搜索结果用一样的流程返回到浏览器里。稀土表示了这个过程:

image.png

那么HTTP协议里又是怎样封报文和解报文的?

HTTP协议是按照协议规定好的格式来封装报文和解报文的,比如这样: image.png 这是一个HTTP请求的三个组成部分,

  1. 请求行,包括了使用的HTTP方法(如Post,Get,Delete等),请求的URL,和协议版本。

  2. 请求头(header),包括了一些字段,这里可以放很多有业务意义的字段,比如用户名和密钥。也可以放一些很常见的通用的内容,比如日期,服务器软件名及版本,请求体长度等。

  3. 请求体(body),具体的业务数据,比如常见的resful风格的http接口里会在这个地方放一个json对象。

上面时发送的请求,下面时服务器给的响应: image.png 这里唯一的不同是响应的第一行是状态行。

状态行里可以看到状态码和短语,一些常见的状态码和短语有:

200 OK,表示请求成功 301 Moved Permanetnly表示所请求的内容已永久转移。这个响应的头部里会带上

Location这个字段,包括新的网址。而客户端会自动再次向新网址发起请求。

400 Bad Request,表示发送的请求服务器无法理解,通常就是发送了错误的请求内容。

404Not Found,请求的资源找不到。

400 InternalServerError,服务器内部错误

接口测试绝大部分都是HTTP协议的接口测试