您的位置:首页 > 理论基础 > 计算机网络

HTTP协议---应用层协议,web核心

2019-08-14 23:01 1101 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_44376490/article/details/99617782

HTTP协议—应用层协议,web核心

超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。默认端口号80;
http特点:

  1. 传输的过程是明文传输,就导致他安全性比较差;
  2. 是一种无状态的协议,在浏览器和服务器之间交互,单纯的http是无法保存某次登录的状态的,在下次登录时,依然会要求登录
  3. 是一种应用层协议

测试使用的工具:HTTPwatch
HTTP协议主要是请求和响应,协议的头和正文

认识URL

俗称网址:http://(协议方案名)user:pass(登录认证信息)@www.example.jp(服务器地址/域名):80(服务器端口号)/dir/index.htm(带层次的文件路径)?uid=1(查询字符串)#ch1(片段标识符)

urldecode:编码:url中特殊字符都有特殊含义,因此用户提交数据中若存在特殊字符,则需要转码(每个字节转换为16进制数字的字符串–为了表明数据经过了转码,因此在转码的数据前加上%)
urlencode:解码:在用户提交的数据中遇到%时,则对紧跟在其后的两个字符转换为数字,并且第一个数字左移4位加上第二个数字。

HTTP请求报文的格式:
使用fiddler工具来抓包,抓包就是在程序运行过程中截取一段内容方便我们解析和调试。
在启用抓包工具后,浏览器向服务器发送请求过程变成浏览器先向fiddler发送请求,工具再转发给服务器,服务器接收请求后返回也先返回给fiddler,再转发给浏览器。扮演了代理的角色。

  1. 首行:方法(GET/POST)+url+版本号(HTTP/(0.9/1.0/1.1/2))\r\n
  2. 协议头部header:请求的属性,‘:’分割的键值对,每组属性之间用\r\n进行间隔。
  3. 空行:\r\n; 协议头的结束标记
  4. 正文(body):空行后面的内容都是body,body允许为空字符串,如果body存在,通常会在header中有一个 Content-Length的属性来记录body的长度;通常情况下GET方法对应的请求没有body
    POST方法对应的请求有body

HTTP响应报文的格式:

  1. 响应首行:协议版本号+响应状态码(以1开头/以2开头/…3/…4/…5)—(200/302/400/404/502/500)+状态码解释
  2. 协议头部header:请求的属性,‘:’分割的键值对,每组属性之间用\r\n进行间隔。
  3. 空行:\r\n; 协议头的结束标记
  4. 正文(body):空行后面的内容都是body,body允许为空字符串,如果body存在,通常会在header中有一个 Content-Length的属性来记录body的长度;如果服务器返回了一个HTML页面,那么HTML页面的内容就在body中。
状态码 解释 常用状态码
1xx 信息提供状态码 接收的请求正在处理
2xx 肯定应请求答状态码 200:成功处理了请求
3xx 重定向状态码(需要附加操作来完成请求) 302:(临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求
4xx 客户端错误状态码–404(页面不存在) 400:服务器不理解请求的语法 404:服务器找不到请求的网页
5xx 服务器错误状态码 500:(服务器内部错误) 服务器遇到错误,无法完成请求 502:(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。

HTTP方法:

方法 说明 支持的HTTP协议版本(常用版本有两个:1.0/1.1)
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
UNLINK 断开连接关系 1.0

HTTP请求:

  • 常用请求: GET请求,获取由Request-URL所标识的资源
  • POST请求,在Request-URL所标识的资源后附加新的数据

HTTP常见 Header:

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

HTTP-Session:
Session ID:一个会话的id号,32位长度的16进制的编码,一共有16^32次方个组合

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: