HTTP是一个基于TCP/IP通信协议来传递数据(超文本传输协议)

好久木来更新文章了~我又回归了,此刻鼓掌。。。。。。



今天就来分享下http协议的小知识,在接口测试中我们最常接触的HTTP协议,那么今天就来畅谈下HTTP的小世界~O(∩_∩)O~

一、工作原理



浏览器(ps:一切基于http协议的发起的http请求的工具)向web服务器发出请求,Web服务器根据接收到的请求后,向客户端发送响应信息。

web服务器:

默认端口号:80

  • Apache服务器
  • Nginx服务器
  • IIS服务器

HTTP三点注意事项:

  • HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
  • HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

二、HTTP报文结构

(一)请求报文

  • 请求行

    请求方法 、 请求URL 、 协议版本

    常见的请求方法:

    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

    HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
  • 请求头部

    常见的头部key/value:

    Host: 请求的主机名

    User-Agent:生成请求的浏览器类型

    Accept:客户端可识别的响应内容类型列表

    Accept-Language: 客户端可接受的自然语言

    Accept-Encoding: 客户端可接受的编码压缩格式

    Accept-Charset: 可接受的字符集

    Cookie: 存储在客户端的扩展字段

    connection:连接方式(close或keeplive)

    对于请求端来讲:

    close是告诉服务端,断开连接,不用等待后续的求请了。keeplive则是告诉服务端,在完成本次请求的响应后,保持连接,等待本次连接后的后续请求。
  • 空行

    通过一个空行,告诉服务器请求头部到此为止
  • 请求数据

    若方法字段是GET,则此项为空,没有数据

    若方法字段是POST,则通常来说此处放置的就是要提交的数据

    (fiddler中可以查看textview)

(二)响应报文

  • 状态行

    HTTP协议版本、状态码、状态码描述三部分构成

    常见的HTTP状态码:

    200 - 请求成功

    301 - 资源(网页等)被永久转移到其它URL

    404 - 请求的资源(网页等)不存在

    500 - 内部服务器错误



    常见状态码说明:

    200 OK: 表示客户端请求成功

    400 Bad Request: 表示客户端请求有语法错误,不能被服务器端解析

    401 Unauthonzed: 表示请求未经授权,该状态码必须与WWW-Authenticate报文头一起使用

    404 Not Found:请求的资源不存在,例如输入了错误的url

    500 Internal Server Error: 表示服务器发生了不可预期的错误,导致无法完成客户端的请求

    503 Service Unavailable:表示服务器当前不能处理客户端的请求,在一段时间后服务器可能恢复正常
  • 响应头部

    常见的响应头字段:

    Location:     这个头配合302状态码使用,用于告诉客户找谁。

    Server:      服务器通过这个头告诉浏览器服务器的类型。

    Content-Encoding: 服务器通过这个头告诉浏览器数据的压缩格式。

    Content-Length:  服务器通过这个头告诉浏览器回送数据的长度

    Content-Type:   服务器通过这个头告诉浏览器回送数据的类型

    Last-Modified:   告诉浏览器当前资源的最后缓存时间

    Refresh:     告诉浏览器隔多久刷新一次

    Content-Disposition:告诉浏览器以下载方式打开数据

    Transfer-Encoding: 告诉浏览器数据的传送格式

    ETag:       缓存相关的头
  • 空行

    通过一个空行,告诉请求端响应内容到此为止
  • 响应内容

    服务端返回给浏览器的文本信息

三、案例分析

此处以伟大的百度为案例吧~~~

此处BZ使用的是chrome的检查工具,Firefox的检查工具和第三方抓包工具都是可以的哦~

关于http协议今天就小小介绍到这里咯,网络上有许多的学习资料观看↖(^ω^)↗~

资料链接:

Http协议---Hyper Text Transfer Protocol的更多相关文章

  1. Hyper Text Transfer Protocol(超文本传输协议)

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  2. http(Hyper Text Transfer Protocol)

    一.定义    http(Hyper Text Transfer Protocol):超文本传输协议二.作用    数据传输三.概念    HTTP消息:        1.客户端发向服务器的请求消息 ...

  3. TFTP(Trivial File Transfer Protocol,简单文件传输协议)

    TFTP(Trivial File Transfer Protocol,简单文件传输协议),是 TCP/IP 协议族中用来在客户机和服务器之间进行简单文件传输的协议,开销很小.这时候有人可能会纳闷,既 ...

  4. Simple Mail Transfer Protocol --- SMTP协议

    https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol   Simple Mail Transfer Protocol

  5. HTML:Hyper Text Markup Language 超文本标记语言

    1.HTML是什么? *Hyper Text Markup Language 超文本标记语言 *Hyper Text:超链接.把不同空间的资源,整合在一起,形成逻辑上的网状结构. *Markup La ...

  6. Simple Mail Transfer Protocol

    https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol https://zh.wikipedia.org/wiki/简单邮件传输协议 & ...

  7. FTP(File Transfer Protocol)是什么?

    文件传输协议 FTP(File Transfer Protocol),是文件传输协议的简称.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).用户可以通过 ...

  8. arp:地址解析协议(Address Resolution Protocol)(来自维基百科)

    地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...

  9. HTML (Hyper Text Markup Language) 常用标签

    HTML是什么?  英文全称:Hyper Text Markup Language  中文全称:超文本标记语言  网页主要由 机构  表现 行为  组成 什么是标签?    < > 里的叫 ...

随机推荐

  1. UITextField输入限制/小数/首位等

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS ...

  2. iOS性能之HTTP2.0

    在移动互联网领域蓬勃发展的今天,APP的性能也成为各大公司重点关注的方向,该系列文章主要针对iOS的性能的几个方面做一些研究. 什么是HTTP2.0? 网上很容易搜到关于HTTP2.0的概念的文章,这 ...

  3. mysql命令[转]

    来自:http://www.cnblogs.com/zhangzhu/archive/2013/07/04/3172486.html 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录my ...

  4. WPF: 在 MVVM 设计中实现对 ListViewItem 双击事件的响应

    ListView 控件最常用的事件是 SelectionChanged:如果采用 MVVM 模式来设计 WPF 应用,通常,我们可以使用行为(如 InvokeCommandAction)并结合命令来实 ...

  5. UWP--数据绑定的几种方式

    1.后台代码:   2.后台定义属性,前台XAML 中绑定:     3.XAML 中定义资源并应用(资源中自定义对象):       4.用元素值绑定:

  6. gzip 与 gunzip 语法与示例

    gzip 与 gunzip 语法与示例 语法: gunzip -c 被压缩的文件 > 已解压的文件示例: 将 catalina.out.gz 文件解压到 catalina.out 文件中: gu ...

  7. node.js 基础知识之 querystring.stringify querystring.escape

    序列化   1.  querystring.stringify({name:'chenshuai',ago:21,job:"web"})    'name=chenshuai&am ...

  8. requireJS 从概念到实战

    requireJS 可以很轻易的将一个项目中的JavaScript代码分割成若干个模块(module).并且requireJS推荐一个模块就是一个文件,所以,你将获得一些零碎的具有互相依赖关系的JS文 ...

  9. Sublime安装Package Control插件

    一.简易安装 打开Sublime text的console.打开console的快捷时ctrl+,或者在菜单栏点击View->Show Sonsole`.打开后将下面的代码复制到console中 ...

  10. WebService从服务端到客户端的用例

    1.首先编写Wsdl(基于契约优先的方式),要注意的是命名空间(若是使用include或import)最好使用一致的,代码如下: <?xml version="1.0" en ...