网络系列2 HTTP协议

参考:
HTTP协议详解 https://www.jianshu.com/p/dac7b8bdb682
HTTP请求方法GET和POST http://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

一.HTTP(超文本传输)协议

  • TCP/IP协议栈中应用层协议,基于TCP实现,TCP负责可靠的内容传输,HTTP负责识别内容
  • HTTP是无状态协议,每次的内容解析没有关联。TCP是有状态协议,客户端和服务器通过TCP协议通讯时需建立连接
  • HTTP包含客户端向服务器发送请求时发送的请求报文,及服务器响应客户端时发送的响应报文

二.HTTP请求报文

1.请求报文 = 请求行(request) + 请求头(header) + 请求体
  • HTTP请求消息体结构如下
Http请求消息体结构
  • HTTP请求报文实例如下
Http请求报文实例
2.HTTP请求方法
  • 请求方法
序号 方法 描述
1 GET 请求指定的页面信息,并返回实体主体
2 HEAD 类似于GET请求,但返回的响应中没有具体内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源建立和/或已有资源的修改
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容
5 DELETE 请求服务器删除指定的页面
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器
7 OPTIONS 允许客户端查看服务器的性能
8 TRACE 回显服务器收到的请求,主要用于测试和诊断
  • GET方法和POST方法比较
    1)GET用于客户端向服务器获取信息,是安全的幂等的。安全意味着GET仅用于获取信息而非修改信息;幂等意味着对同一个URL的多个请求返回同样的结果
    2)POST用于客户端向服务器提交信息,提交后可能改变服务器上已有的资源
    3)GET与POST现象层面的区别见下表
序号 内容 GET POST
1 请求数据位置 拼接在URL后 HTTP请求体中
2 请求数据长度限制 浏览器/操作系统限制 无限制
3 安全性 较低(URL明文) 较高
3.请求头参数

见下文

三.HTTP响应报文

1.响应报文=响应行+响应头+响应体
Http响应报文
2.响应行
  • 响应行包含了Http的协议版本和本次请求的状态(状态码)
  • 状态码分类
类别 原因短语
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错
  • 常见状态码
状态码 名称 含义
200 OK 服务器已成功处理请求
204 No Content 服务器已成功处理请求,但返回的响应报文不含且不允许返回任何实体的主体
206 Partial Content 服务器成功执行了客户端发送的范围请求
301 Moved Permanently 永久性重定向 请求的资源已永久被分配了新URI
302 Found 临时性重定向 请求的资源已临时被分配了新URI
303 See Other 由于对应的资源存在另一个URI,所以应使用Get方法定向获取请求的资源
304 Not Modified 客户端发送附带条件的请求时,服务器允许请求访问资源,但未满足附带条件
400 Bad Request 请求报文存在语法错误,需修改请求的内容后再次发送
401 Unauthorized 表示发送的请求需要有通过HTTP认证的认证信息
403 Forbidden 服务器拒绝请求访问服务器资源
404 Not Found 服务器上无法找到请求的资源,也可在服务器拒绝请求且不想说明理由时使用
500 Internal Server Error 服务器在执行请求时发生了错误
503 Service Unavailable 服务器处于超负载或停机维护,暂无法处理请求
  • 响应头参数
    见下文

四.HTTP报文

1.报文实例
报文
2.请求头参数
Header 解释 示例
Accept 指定客户端能够接受的内容类型 Accept:text/plain,text/html
Accept-Charset 浏览器可以接受的字符编码集 Accept-Charset:iso-8859-5
Accept-Encoding 浏览器可以支持的web服务器返回内容压缩编码类型 Accept-Encoding:compress,gzip
Accept-Language 浏览器可以接受的语言 Accept-Language:en,zh
Cache-Control 指定请求和响应遵循的缓存机制 Cache-Control:no-cache
Connection 表示是否需要持久连接 Connection:close
Cookie HTTP发送请求时,会发送保存在该请求域名下的所有cookie值 Cookie:$Version=1;Skin=new;
Content-Length 请求的内容长度 Content-Length:348
Content-Type 请求的与实体对应的MIME信息 Content-Type:application/x-www-form-urlencoded
Date 请求发送的日期和时间 Date:Tue,15 Nov 2018 08:23:53 GMT
Expect 请求的特定服务器行为 Expect: 100-continue
Host 请求的服务器域名和端口号 Host: www.zcmhi.com
Max-Forwards 限制信息通过代理和网关传送的时间 Max-Forwards:10
Range 只请求实体指定范围的一部分 Range:bytes=500-999
Referer 先前网页的地址(当前请求的来路) Referer:https://www.jianshu.com/p/dc28f2172878
User-Agent 发出请求的用户信息 User-Agent: Mozilla/5.0 (Linux; X11)
Warning 关于消息实体的警告信息 Warn: 199 Miscellaneous warning
3.响应头参数
Header 解释 示例
Accept-Ranges 服务器是否支持指定范围请求及哪种类型的范围请求 Accept-Ranges:bytes
Age 从原始服务器到代理缓存形成的估算时间(单位秒,非负) Age:12
Allow 对某网络资源的有效的请求行为,不允许请求则返回405 Allow:Get,HEAD
Cache-Control 告诉所有的缓存机制是否可以缓存及可缓存类型 Cache-Control:no-cache
Content-Encoding web服务器支持的返回内容压缩编码类型 Content-Encoding:gzip
Content-Language 响应体语言 Content-Language:en,zh
Content-Length 响应体长度 Content-Length:348
Content-Location 请求资源可替代的备用地址 Content-Location:/index.htm
Content-MD5 返回资源的MD5校验值 Content-MD5:Q2hlY2sgSW50ZWdyaXR5IQ==
Content-Range 整个返回体中本部分的字节位置 Content-Range: bytes 21010-47021/47022
Content-Type 返回内容的MIME类型 Content-Type: text/html; charset=utf-8
Date 原始服务器消息发出时间 Date: Tue, 15 Nov 2018 08:12:31 GMT
Expires 响应过期的日期和时间 Expires: Thu, 01 Dec 2010 16:00:00 GMT
Last-Modified 请求资源的最后修改时间 Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT
Location 重定向接收方到非请求URL的位置 Location:https://www.jianshu.com/p/e50f77f8244e
Proxy-Authenticate 确定认证方案和可应用到代理的该URL上的参数 Proxy-Authenticate:Basic
refresh 一定时间后重定向 Refresh: 5; url=https://www.jianshu.com/p/e50f77f8244e
Retry-After 若实体暂时不可取,通知客户端在指定时间后再试 Retry-After:120
Server web服务器软件名称 Server: Apache/1.3.27 (Unix) (Red-Hat/Linux)
Set-Cookie 设置Cookie Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1
Transfer-Encoding 文件传输编码 Transfer-Encoding:chunked
Vary 是使用缓存响应还是从原始服务器请求 Vary: *
Warning 警告实体可能存在的问题 Warning: 199 Miscellaneous warning

细想从来,断肠多处,不与今番同

你可能感兴趣的:(网络系列2 HTTP协议)