HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web)服务器传输超文本到本地浏览器的传送协议。HTTP工作在TCP协议的80端口上。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML文件,图片文件,查询结果等),HTTP协议是基于TCP的80端口进行工作。
超文本传输协议(HTTP,Hyper Text Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。RFC2616定义了HTTP1.1,最新为HTTP2.0。
HTTP协议特点:
基于TCP协议:面向连接,安全。
TCP是一种面向连接的(建立连接之前是需要经过三次握手)、可靠的、基于字节流的传输层通信协议,在数据传输方面更安全。
基于请求-响应模型的:一次请求对应一次响应。
请求和响应是一一对应关系。
HTTP协议是无状态协议:对于事务处理没有记忆能力。每次请求响应都是独立的。
特点是哑服务器
HTTP 请求由请求行、请求头、请求体/请求正文三个部分组成。
HTTP 报文的第?行,由空格字符分成三部分。
请求方法:GET / POST / PUT / DELETE /…
资源路径/请求的URL:HTTP 协议使用 URI 定位互联网上的资源。
http://www.baidu.com/path/to/myfile.html?key1=value1&key2=value2
。协议/版本:表示报文使用的 HTTP 协议版本。
从请求报文第?行开始到第?个空行为止之间的内容。
字段 | 含义 |
---|---|
Host | 主要用于指定被请求资源的服务器地址和端口号。 |
User-Agent | 客户端浏览器信息,表示浏览器或者操作系统的属性。(如果是恶意流量,在UA的头的位置会有nmap等字样) |
Referer | 包含一个URL,代表当前URL的上一个URL。表示这个页面是从哪个页面跳转过来的。 |
Cookie | 记录请求者的身份认证信息 |
Accept-Charset | 用于指定浏览器接收的字符集 |
Content-Type | 用于向接收方(浏览器或服务器)指示实体的介质类型(数据类型格式,MME) |
Content-Length | 用于指明实体正文的长度,以字节方式存储的十进制数字来表示 |
Last-Modified | 用于指示资源的最后修改时间 |
GET和POST两个请求之间的区别:
GET请求的请求参数在请求行中,没有请求体,POST请求的参数在请求体中。
GET请求的请求参数大小有限制,POST没有。
响应报文由状态行、响应报头、响应正文三部分组成。
响应报文从第?个空行开始到最后的所有内容。 服务器返回资源的内容,即浏览器接收到的HTML代码。
响应报文的第?行
响应码:
状态代码 | 类型 |
---|---|
1XX | 信息性状态码 |
2XX | 200:成功状态码 |
3XX | 301:永久重定向状态码 302:暂时重定向状态码 |
4XX | 客户端错误状态码 401:客户端错误状态响应代码 403:服务器理解请求但拒绝授权 404:服务器找不到请求的资源 405:服务器已知请求方法,但已被禁用且无法使用。 |
5XX | 服务器错误状态码 500:服务器错误 |
响应报文第二行开始到第?个空行为止的所有内容,其中包含了关于HTTP响应的重要字段。
字段 | 含义 |
---|---|
Data | 时间和日期 |
Server | 服务器标头包含有关原始服务器用来处理请求的软件的信息。 |
Last-Modified | 服务器通过这个头信息告诉浏览器,资源的最后修改时间 |
Content-Length | 响应正文的长度 |
Content-Type | 响应正文的类型 |
Set-Cookie | 向浏览器端写入Cookie信息 |
Location | 用于重定向,指示新的资源位置。 |
Refresh | 服务器通过Refresh头告诉浏览器定时刷新浏览器 |
HTTP 协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。
HTTP 协议采用了请求/响应模型:
注意:请求报头会由于使用的HTTP客户端浏览器或者客户端浏览器配置选择的不同而不同。
Request数据包
Response数据包
Request数据包
Response数据包
Request请求包
Response响应包
为什么在浏览器输入t.cn会转向访问到weibo.com?
因为在访问t.cn的时候是GET请求方式,服务器响应了一个301状态码,而301状态码是永久重定向状态响应代码,指示所请求的资源已被重定向到Location
标题给定的URL 。