余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

网络中最常见的HTTP协议,你真的够了解吗?

xiyangw 2023-10-03 16:24 35 浏览 0 评论

内容概要:

? HTTP协议

? HTTPS协议

? HTTPS和HTTP的区别

一、HTTP协议

1.1 HTTP特点

  • 无状态
  • 使用URI定义互联网资源
  • HTTP方法
  • GET:获取资源
  • POST:传输实体主体
  • PUT:传输文件
  • HEAD:获得报文首部
  • DELETE:删除文件
  • OPTIONS:询问支持的方法
  • TRACE:追踪路径
  • CONNECT:要求用隧道协议连接代理
  • 持久连接节省通信量
  • 管线化实现并行发送多个请求,而不需要一个接一个等响应

1.2 HTTP报文

用于HTTP协议交互的信息称为HTTP报文。

请求报文:

  • 报文首部
  • 请求行
  • 请求首部字段
  • 通用首部字段
  • 实体首部字段
  • 其他
  • 空行
  • 报文主体

响应报文:

  • 报文首部
  • 状态行
  • 响应首部字段
  • 通用首部字段
  • 实体首部字段
  • 其他
  • 空行
  • 报文主体

发送多种数据的多部分对象集合:

  • MIME
  • multipart/form-data

内容协商:

  • 服务器驱动协商
  • 客户端驱动协商
  • 透明协商

1.3 HTTP状态码

1XX:接收的请求正在处理

2XX:请求正常处理完毕

  • 200 OK
  • 204 NoContent
  • 206 Partial Content

3XX:需要进行附加操作以完成请求

  • 301 Moved Permanenetly
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 307 Temporary Redirect

4XX:服务器无法处理请求

  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found

5XX:服务器处理请求出错

  • 500 Internal Server Error
  • 503 Service Unavailable

1.4 HTTP1.1 和HTTP1.0的区别

可扩展性:定义Via头域,增加版本号的支持。

缓存:

  • 增加对缓存的重激活机制:使用ETag头域描述一个资源。
  • 增加Cache-Control头域支持可扩展的指令集。

带宽优化:允许请求资源的某部分,而不是整个资源。

长连接:

  • HTTP/1.0只支持浏览器与服务器保持短暂的连接,浏览器的每次请求都要建立一个新的连接。
  • 而HTTP/1.1允许在一个TCP连接上可以传送多个HTTP请求和响应。HTTP/1.1协议的持续连接有两种方式,即非流水线方式和流水线方式。
  • 非流水线方式的特点是,客户在收到前一个响应后才能发出下一个请求。
  • 流水线方式的特点是,客户在收到HTTP的响应报文之前就能接着发送新的请求报文。

1.5 Cookie与Session的区别

1、存取方式的不同

  • Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二进制数据,需求先进行编码。Cookie中也不能直接存取Java对象。若要存储略微复杂的信息,运用Cookie是比较艰难的。
  • Session中能够存取任何类型的数据,包括而不限于String、Integer、List、Map等。Session中也能够直接保管Java Bean乃至任何Java类,对象等,运用起来十分便当。能够把Session看做是一个Java容器类。

2、隐私策略的不同

  • Cookie存储在客户端阅读器中,对客户端是可见的,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容。
  • Session存储在服务器上,对客户端是透明的,不存在敏感信息泄露的风险。

3、有效期上的不同

  • Cookie的过期时间指定
  • Session依赖于名为JSESSIONID的Cookie,而Cookie JSESSIONID的过期时间默许为–1,只需关闭了浏览器该Session就会失效,因而Session不能完成信息永世有效的效果。

3、服务器压力的不同

  • Cookie保管在客户端,不占用服务器资源。假如并发阅读的用户十分多,Cookie是很好的选择。关于Google、Baidu、Sina来说,Cookie或许是唯一的选择。
  • Session是保管在服务器端的,每个用户都会产生一个Session。假如并发访问的用户十分多,会产生十分多的Session,耗费大量的内存。因而像Google、Baidu、Sina这样并发访问量极高的网站,是不太可能运用Session来追踪客户会话的。

4、浏览器支持的不同

  • Cookie是需要客户端浏览器支持的。
  • 假如客户端浏览器不支持Cookie,需要运用Session以及URL地址重写。

5、跨域支持上的不同

  • Cookie支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie。跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等。
  • Session则不会支持跨域名访问。Session仅在他所在的域名内有效。

1.6 Ping

同网段:

  1. 主机A要去Ping主机B, 主机A会封装两层报文,主机A先检查自己MAC地址中是否有B的MAC地址,如果没有就向外发送一个ARP广播包。
  2. 交换机收到这个ARP后,会检查在交换机中是否包含B的MAC地址,如果有就直接返回给A;如果没有就向所有端口发送ARP,该网段的主机的MAC如果与B的MAC地址不同就丢弃,如果主机B收到了该ARP就马上返回相同格式的ARP。
  3. 这时主机A已经有了B的MAC地址,就把B的MAC地址封装到ICMP报中,向主机B发送一个回显请求。
  4. 主机B收到该报文后,知道是主机A的一个回显请求,就会返回一个相同格式的报文。这样就完成了同一个网段的Ping的过程。

不同网段:

  1. 主机A要去Ping一个不同网段的主机C,主机A会去找网关转发
  2. 如果主机A不知道网关的MAC地址,就会发送一个ARP广播一下,这样就知道了网关的MAC地址
  3. 网关收到主机A的ICMP报文,根据上面的目的IP,会去查找路由表,找到一个出口指针,给主机C发送一个ICMP报文
  4. 如果网关不知道主机C的MAC地址,就会给网关内所有的主机发送一个ARP,从而找到主机C的MAC地址
  5. 主机C收到主机A的报文就会给主机A发送一个回显请求。这样就完成了不同网段的Ping的请求

1.7 websocket

全双工通信,特点:

  • 推送功能:支持服务器向客户端推送数据的推送功能
  • 减少通信量:一直保持连接
  • HTTP连接建立后,需要完成一次握手动作
  • 握手---请求:用到HTTP的upgrade字段告知服务器通信协议发生变化
  • 握手---响应:对于之前的请求返回状态码101 switching protocols
  • 成功握手确立WebSocket连接之后,通信不再使用HTTP的数据帧,而采用WebSocket独立的数据帧

二、HTTPS协议

HTTPS(Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

2.1 HTTP缺点

通信使用明文可能会被窃听,解决方式:

  • 通信加密。SSL和TLS组合使用
  • 内容加密

不验证通信方身份就可能遭遇伪装,解决方式:查明对手的证书

无法证明报文完整性,可能已遭篡改:数字签名,MD5并不可靠,应用HTTPS。

2.2 HTTP+加密+认证+完整性保护=HTTPS

2.3 HTTPS是身披SSL外壳的HTTP

2.4 HTTP采用混合加密机制

2.5 证明公开密钥正确性的证书

2.6 SSL协议

慢:

  • 通信慢。
  • 由于大量消耗CPU及内存等资源,导致处理速度变慢。
  • SSL必须进行加密处理。

三、HTTPS和HTTP的区别

1. https协议需要到ca申请证书,一般免费证书很少,需要交费。

2. http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

3. http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

往期精彩文章,直接点击阅读:

  1. 干货分享:Modbus 通讯数据格式及协议功能码详解!
  2. Modbus 续篇一:ASCII&RTU两种传输方式整理!
  3. Modbus续篇二:Modbus TCP、Modbus RTU及Modbus ASCII的区别
  4. 「干货」100 个通信基础知识普及(上)
  5. 「干货」100 个通信基础知识普及(下)
  6. 「干货」EMC电磁兼容技术相关知识集锦!
  7. 干货分享:RS485通信和Modbus通信协议汇总
  8. 干货分享:CAN总线工作原理及主要特点等详细解析汇总!
  9. 工业通信丨二层交换机与三层交换机区别详解!
  10. 二层交换机都有哪些安全策略?
  11. 工业通信之三层交换机
  12. 工业通信丨数据链路层学习之 LLDP协议

相关推荐

华为交换机配置命令总结

1、配置文件相关命令[Quidway]displaycurrent-configuration显示当前生效的配置[Quidway]displaysaved-configuration显示fla...

解决账户无法登录的故障
解决账户无法登录的故障

在优化系统时错误地根据网上的提示,将唯一的Administrator账户设置为禁用,导致重启后无法进入系统。类似的故障还有使用组策略限制本地账户登录,导致重启后...

2023-10-11 17:16 xiyangw

S5720交换机登录提示初始密码存在安全风险
S5720交换机登录提示初始密码存在安全风险

问题描述客户每次登录输密码时,提示初始密码不安全,现在客户嫌麻烦想要去掉:Username:huaweiPassword:Warning:Theinitia...

2023-10-11 17:15 xiyangw

Springboot,Mybatis修改登录用户的密码
Springboot,Mybatis修改登录用户的密码

一、Mybatis.xml<updateid="changePassword"parameterType="string...

2023-10-11 17:15 xiyangw

PHP理论知识之沐浴更衣重看PHP基础(二)
PHP理论知识之沐浴更衣重看PHP基础(二)

接上篇,咱们继续讲解PHP基础八、标准PHP组件和框架的数量很多,随之产生的问题就是:单独开发的框架没有考虑到与其他框架的通信。这样对开发者和框架本身都是不利的...

2023-10-11 17:15 xiyangw

新鲜出炉UCloud云主机“数据方舟”评测报告(5)— — 关其城
新鲜出炉UCloud云主机“数据方舟”评测报告(5)— — 关其城

2015年10月29日,UCloud云主机黑科技——“数据方舟”功能正式上线,首轮内测随即开放。截止至2015年12月6日,我们共收到了534位用户的评测申...

2023-10-11 17:14 xiyangw

业余无线电Q简语及英文缩语
业余无线电Q简语及英文缩语

Q简语:语音通信及CW通信通用(加粗为常用)QRA电台何台QRB电台间之距离QRG告之正确频率QRH频率是否变动QRI发送音调QRJ能否收到QRK信号之可...

2023-10-11 17:14 xiyangw

非常详细!如何理解表格存储的多版本、生命周期和有效版本偏差
非常详细!如何理解表格存储的多版本、生命周期和有效版本偏差

表格存储在8月份推出了容量型实例,直接支持了表级别最大版本号和生命周期,高性能实例也将会在9月中旬支持这两个特性。那么,最大版本号和生命周期以及特有的...

2023-10-11 17:14 xiyangw

H3C交换机恢复出厂和各种基本配置,这20个要点你知道吗?
H3C交换机恢复出厂和各种基本配置,这20个要点你知道吗?

私信“干货”二字,即可领取138G伺服与机器人专属及电控资料!H3C交换机不知道密码如何恢复出厂设置1、开机启动,Ctrl+B进入bootrom菜单,选择恢复出...

2023-10-11 17:13 xiyangw

在使用移动支付系统的时候如何保护信息安全?

移动支付的方式近年来不断被更新,使得Venmo(据嘉丰瑞德理财师了解,此为美国的“支付宝”)之类的支付方式已经可以某种意义上代替随身携带现金了。但是你必须防范那些第三方应用程序轻松地获取你的银行卡以及...

界面控件DevExpress WinForms MVVM入门指南——登录表单(下)

从本文档中,您将了解如何向应用程序添加登录表单。在本节教程中着重讨论了如何实现此任务,这基本上是附加应用程序功能的一部分。DevExpressUniversalSubscription官方最新版免...

linux基础命令(一)
linux基础命令(一)

为啥要学linux?您可能熟悉WindowsXP、Windows7、Windows10和MacOSX等操作系统。Linux就是这样一种强大的操...

2023-10-11 17:13 xiyangw

MySQL数据库密码忘记了,怎么办?

#头条创作挑战赛#MySQL数据库密码忘记了且没有其他可以修改账号密码的账户时怎么办呢?登录MySQL,密码输入错误/*密码错误,报如下错误*/[root@TESTDB~]#mysql-u...

MobaXterm忘记Session密码,如何查看已保存的密码
MobaXterm忘记Session密码,如何查看已保存的密码

MobaXterm工具登录过SSH终端后,如果存储了Session(存储后再连接ssh的时候只需要输入账号不需要输入密码就可以直接连接上ssh),则可以...

2023-10-11 17:12 xiyangw

华为交换机密码丢失修改方法
华为交换机密码丢失修改方法

华为S2300交换机找回密码设置一、目的交换机的console和telnet密码丢失,无法登录设备。交换机已进行过数据配置,要把密码恢复而数据配置不能丢失。二、...

2023-10-11 17:12 xiyangw

取消回复欢迎 发表评论: