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. 设置debian的静态IP

    欲设置的信息: IP地址:198.9.146.131 子网掩码:255.255.255.0 网关:198.9.146.254 DNS:198.9.9.1 198.9.9.2 首先编辑/etc/netw ...

  2. ansj 2.0.7 错误例子分析

    我在做一个solr的项目,分词选定了ansj分词. 选择ansj的原因: 1)身边若干朋友的念叨,说是效果不错 2)网上看了若干评论,说是不错 3)自己尝试了一些case,觉得确实不错. 好了,项目中 ...

  3. HTML5微数据

    本篇文章是一个纯搬运贴,原博主是在是做的太详细了 原贴地址:http://www.zhangxinxu.com/wordpress/2011/12/html5扩展-微数据-丰富网页摘要/ 一.微数据是 ...

  4. keepalived工作原理

    keepalived是一个类似于Layer2,4,7交换机制的软件.是Linux集群管理中保证集群高可用的一个服务软件,其功能是用来防止单点故障.   keepalived的工作原理:         ...

  5. C++枚举类型详解

    原创作品,转载请注明来源:http://www.cnblogs.com/shrimp-can/p/5171110.html  一.枚举类型的定义 enum 类型名 {枚举值表}: 类型名是变量名,指定 ...

  6. Ubuntu14.04上安装openGL

    安装命令:sudo apt-get install build-essential sudo apt-get install libgl1-mesa-dev sudo apt-get install ...

  7. 求一个int型整数的两种递减数之和(java)--2015华为机试题

    题目描述: 给出一个整数(负数使用其绝对值),输出这个整数中的两种递减数(1.最大递减数:2.递减数中各位数之和最大的数)之和. 递减数:一个数字的递减数是指相邻的数位从大到小排列的数字,不包含相邻的 ...

  8. 当git上文件大小写重命名的修改时(git大小写敏感/默认不敏感),如何提交

    git默认是大小写不敏感!!! 加了感叹号是什么意思呢,意思就是这本身就是一个坑,本人使用的IDE是idea(网上说Eclipse可以避开问题),这个IDE本身就集成了git,但是如果要在termin ...

  9. node.js下mongoose简单操作实例

    Mongoose API : http://mongoosejs.com/docs/api.html // mongoose 链接var mongoose = require('mongoose'); ...

  10. java安装1335错误解决办法(亲测)

    心血来潮想了解一下java,结果一开始就碰到了让心"恶心"的1335错误. 废话不多说,直接看下面: 你可以先尝试在这个链接下载java.exe文件 http://www.orac ...