HTTP协议的一些浅析

目录

一、什么是HTTP协议

二、HTTP协议格式

三、HTTP方法

四、HTTP的状态码

五、HTTP常见的Header报头

六、抓包工具

七、其他补充


一、什么是HTTP协议

1. http基本概念:

  • 超文本传输协议,通常运行在TCP之上,是应用层协议,规定WWW服务器与浏览器之间信息传递规范。

2.工作原理:HTTP是基于客户/服务器模式,且面向连接的。典型的HTTP事务处理有如下的过程:

  • (1)客户与服务器建立连接;
  • (2)客户向服务器提出请求;
  • (3)服务器接受请求,并根据请求返回相应的文件作为应答;
  • (4)客户与服务器关闭连接。

3. 我们平时所说的网址,实际上就是URL(统一资源定位符)

  • URL由三部分组成:资源类型、存放资源的主机域名、资源文件名。
  • 也可认为由4部分组成:协议、主机、端口、路径

4. urlencodeurldecode

(1)UrlEncode

  • 将字符串以URL编码
  • 返回值:字符串
  • 函数种类:编码处理
  • 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式。

(2)UrlDecode

  • 对字符串进行URL解码
  • 返回值:已解码的字符串
  • 函数种类:编码处理
  • 数字和字母不变,空格变为"+"号,其他被编码成"%"加上他们的ASCII的十六进制。
  • UrlDecode是UrlEncode的逆过程

二、HTTP协议格式

1. 请求格式 

  • 请求行:包括 方法+URL+版本
  • Header:包括请求的属性,是由冒号分割的键值对,每组属性用\n分割,遇到 空行 说明Header结束
  • Body:空行之后都是Body的内容,Body允许是空字符串,如果不为空,那么在Header中会有一个Content Length属性说明Body的长度

2.响应格式

  • 响应状态行:包括 版本号+状态码+状态码解释、
  • Header:包括请求的属性,是由冒号分割的键值对,每组属性用\n分割,遇到 空行 说明Header结束
  • 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

这些方法中,最常用的就是get和post,下面将对这两种方法进行对比:

 getpost
对数据长度的限制

有限制,当发送数据时,get方法向URL 添加数据,

但是URL的长度是受限制的(URL最大长度为2048个字符)

无限制
安全性

安全性较差,不如post,因为它发送的数据是URL的一部分

(发送密码或者其他敏感信息,一定不能用get!!!)

post更安全,相比get来说,因为参数不会被保存在

浏览器历史或web服务器日志中

可见性数据在URL中,对所有人均可见

数据不会显示在URL中

位置默认放在URL请求参数中请求参数可以放在URL请求参数或请求体参数中

四、HTTP的状态码

 类别原因
1XXInofrmational(信息性状态码)接受的请求正在处理
2XXSuccess(成功状态码)请求正常处理完毕
3XXRedirection(重定向状态码)需要进行附加操作以完成请求
4XXClient Error(客户端错误状态码)服务器无法处理请求
5XXServer Error(服务器错误状态码)服务器处理请求出错

 列举一些常见的状态码:

  • 200:请求成功。(其后是对GET和POST请求的应答文档)
  • 301/302/307:重定向,所请求的页面已经转移至新的url。
  • 400:客户端错误,一般是客户端的请求数据错误(数据格式或数据类型错误)。
  • 404:找不到资源,服务器无法找到被请求的页面。
  • 405:不支持的客户端请求方法,请求中指定的方法不被允许。
  • 500:服务器错误,一般是服务器后端的代码出错(抛出异常)。
  • 502:网关错误,服务器从上游服务器收到一个无效的响应。

五、HTTP常见的Header报头

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

六、抓包工具

  • Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据。下面简单的截图抓包到的数据。

  • 浏览器自带的开发者工具进行抓包

七、其他补充

1. HTTP版本(HTTP1.0和HTTP1.1的区别)

  • 时间不同。HTTP1.0最早使用是1996年;HTTP1.1在1999年才广泛应用。
  • 缓存处理。HTTP1.0使用header中的If-Modified-Since和Expires作为缓存判断的标准;HTTP1.1则引入了更多的缓存控制策略,比如:Entity tag、If-Unmodified-Since、If-Match等更多可供选择的缓存头来控制缓存策略。
  • 带宽优化及网络连接的使用。HTTP1.0存在带宽浪费情况,不支持断点续传功能;HTTP1.1在请求头中加入range头域,它允许只请求资源的某个部分,即返回码是206,这样方便开发者自由选择充分利用带宽和连接。
  • 错误通知的管理。HTTP1.1中新添了24个错误状态响应码。
  • Host头处理。HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此URL中没有传递主机名,随着虚拟主机技术发展,一个物理机上可以有多个不同的虚拟主机,且共享一个IP地址;HTTP1.1的请求和响应信息都支持Host头域,且请求消息中不存在的话就会报错404。
  • 长连接。HTTP1.1支持长连接,在一个TCP连接上可以传递多个HTTP请求和响应,减少了建立和关闭连接的消耗与延迟,且默认开启Connection:keep-alive,弥补了HTTP1.0每次请求都要创建连接的缺点。

2. HTTP和HTTPS的区别

  • HTTPS协议需要申请CA证书。
  • HTTPS可以有效地防止运营商劫持,解决了防劫持的问题。
  • HTTP运行在TCP之上,所有传输的内容都是明文;HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP上,所有传输内容都是加密的。
  • HTTP用的端口是80;HTTPS用的端口是443;两者用的是完全不同的连接方式。

3. 市场上常见的Http服务器

  • Tomcat(web 应用服务器)
  • Nginx
  • Apache
  • Lighttpd

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值