Linux网络中的HTTP协议

URL

我们平时说的网址其实就是URL(统一资源定位符),在网络中唯一定位服务器上的某个资源,向指定服务器请求指定资源。
Linux网络中的HTTP协议

urlencode和urldecode

urlencode(url编码):
像?/这样一些字符已经被url做特殊意义理解了,所以就不能随便出现。如果某个参数中带有这一类字符,就要先进行转义。
转义的规则: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式
Linux网络中的HTTP协议
urldecode(url解码): urlencode的逆过程

HTTP协议格式

HTTP请求

  • 首行: [方法] + [url] + [版本]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度

HTTP响应

  • 首行: [版本号] + [状态码] + [状态码解释]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header部分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有一个Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html页面内容就是在
    body中

HTTP的方法

方法 说明 支持的HTTP协议版本
GET 获取资源 1.0、1.1
POST 传输实体主体 1.0、1.1
PUT 传输文件 1.0、1.1
HEAD 获得报文首部 1.0、1.1
DELETE 删除文件 1.0、1.1
OPTIONS 询问支持的方法 1.1
TRACE 追踪路径 1.1
CONNECT 要求用隧道协议连接代理 1.1
LINK 建立和资源之间的联系 1.0
UNLINE 断开连接关系 1.0

HTTP的状态码

类别 意义
1xx 信息性状态码 接收的请求正在处理
2xx 成功状态码 请求正常处理完毕
3xx 重定向状态码 需要进行附加操作以完成请求
4xx 客户端错误状态码 服务器无法处理请求
5xx 服务器错误状态码 服务器处理请求出错

常见状态码

  • 200 – 请求成功
  • 301 – 永久重定向,请求的资源被永久移动到新的URL中,客户端后来使用更新的URL
  • 302 – 临时重定向,请求的资源被临时移动到新的URL中,客户端继续使用原有的URL
  • 400 – 请求错误
  • 404 – 请求的资源不存在
  • 500 – 服务器内部错误
  • 502 – 代理请求失败
  • 504 – 代理请求超时

HTTP中常见的Header

  • Content-Type: 数据类型(text/html等)
  • Content-Length: Body的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上
  • User-Agent: 声明用户的操作系统和浏览器版本信息
  • referer: 当前页面是从哪个页面跳转过来的
  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能