计算机基础-网络协议-HTTP

1.HTTP请求报文和响应报文的具体组成,能理解常见请求头的含义,有几种请求方式,区别是什么

![在这里插入图片描述](https://img-blog.csdnimg.cn/ed4a02c8e0c144ff9ef8e581e4108c89.jpg?x-oss-process=image/wa请添加图片描述

具体组成
  • 请求行:包括用于请求的方法,请求url和http版本
  • 状态行:包含表明响应结果的状态码,原因短语和http版本
  • 首部字段:包含表示请求和响应的各种条件和属性的各类首部(通用首部、请求首部、响应首部、实体首部)
  • 通用首部字段:请求报文和响应报文两方都会使用的首部
  • 请求首部字段: 从客户端向服务端发送请求报文时使用的首部。补充啦请求的附加内容,客户端信息、响应内容相关优先级等信息。
  • 响应首部字段: 从服务端向客户端返回响应报文时使用的首部。补充啦响应的附加内容、也会要求客户端附加额外的内容信息。
  • 实体首部字段: 针对请求报文和响应报文的实体部分使用的首部。补充啦资源内容的更新时间等与实体有关的信息。
常见请求头
  • Accept:text/html,image/*[告诉服务器,浏览器可以接受文本,网页图片]
  • Accept-Charaset:ISO-8859-1 [接受字符编码:iso-8859-1]
  • Accept-Encoding:gzip,compress[可以接受 gzip,compress压缩后数据]
  • Accept-Language:zh-cn[浏览器支持的语言]
  • Host:localhost:8080[浏览器要找的主机]
  • IF-MODIFIED-Since:Tue,11Jul 2000 18:23:51[告诉服务器这缓存中有这个文件,该文件的时间是…]
  • Referer:http://localhost:8080/test/abc.html[告诉服务器来自哪里]
  • User-Agent:Nozilla/4.0(Com…)[告诉服务器浏览器内核]
  • Cookie:[HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。]
  • Connection:close/Keep-Alive [保持链接,发完数据后,不关闭链接]
  • Date:[浏览器发送数据的请求时间]
请求方式
  • get:获取资源
  • post:传输实体主体
  • put:传输文件
  • head:获取报文首部
  • delete: 删除文件
  • options: 询问支持的方法
  • trace: 追踪路径
2.HTTP所有状态码的具体含义,看到异常状态码能快速定位问题
类别原因短语
1**信息性状态接收的请求正在处理
2**成功状态码请求正常处理完毕
3**重定向状态码需要进行附加操作以完成请求
4**客户端错误状态码服务器无法处理请求
5**服务器错误状态码服务器处理请求出错
  • 200 ok 请求成功

  • 204 no content 请求成功没有资源返回

  • 206 partial content 客户端请求只要一部分

  • 301 永久性重定向 该状态码请求的资源被分配啦新的url

  • 302 临时性重定向 该状态码表示请求的资源已被分配了新的url,希望用户能使用新的url访问

  • 303 see other 表示请求对应的资源存在另外一个url,应使用get定向获取请求的资源

  • 400 bad request 该状态码表示请求报文中存在语法错误

  • 401 认证失败,登陆账户密码错误

  • 403 请求被服务器拒绝 ,没有权限

  • 404 找不到请求资源

  • 500 服务器内部出现错误

  • 503 服务器繁忙

3.HTTP1、HTTP1.1、HTTP2.0带来的改变
  • HTTP1.0 无状态、无连接
  • HTTP1.1
  1. 持久连接
  2. 请求管道化
  3. 增加缓存处理(新的字段如cache-control)
  4. 增加Host字段、支持断点传输等
  • HTTP2.0
  1. 二进制分帧
  2. 多路复用(或连接共享)
  3. 头部压缩
  4. 服务器推送
4. HTTPS与HTTP的一些区别
  • http + 加密 + 认证 + 完整性保护 = https
  • HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
  • HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
  • HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
5.HTTPS的加密原理,如何开启HTTPS,如何劫持HTTPS请求
HTTPS的加密原理
对称加密:
  • 对称密钥的问题主要在于:在第一次传输密钥时,这个密钥怎么让传输的双方知晓,同时不被别人知道。
  • 如果由服务器生成一个密钥并传输给浏览器,那这个传输过程中密钥被别人劫持弄到手了怎么办?之后他就能用密钥解开双方传输的任何内容了,所以这么做当然不行。
非对称加密:
  • 有两把密钥,通常一把叫做公钥、一把叫做私钥,用公钥加密的内容必须用私钥才能解开,同样,私钥加密的内容只有公钥能解开。
  • 服务器先把公钥直接明文传输给浏览器,之后浏览器向服务器传数据前都先用这个公钥加密好再传。
  • 而服务器则使用私钥加密传输,客户端通过公钥解密。
  • 问题:第一次明文传输公钥时,中间人可以拿到这个公钥,虽然此公钥不能解开由客户端加密传输的数据,但是服务端加密传输的数据,是不安全的。
非对称加密只能保证由浏览器向服务器传输数据时的安全性。
开启HTTPS
  1. 服务器一台(可以购买阿里云轻量应用服务器,比较便宜)
  2. SSL证书 (可以注册阿里云免费证书,安全性较差)
  3. 域名一个 (可以在万网上购买并要进行备案)
  4. 本地打包好的项目(博主是使用springboot开发,所以打包好的是jar包而不是war包)
    ftp客户端
劫持HTTPS请求

跨域了,然后就说不一定是安全的,如果不对跨域做出限制的话,还有两种方法可以实现。更改端口号和域名。因为不对跨域做限制是可以发起CSRF(跨站请求伪造cross-site request forgery)的攻击的。

  1. 黑客用自己的证书+自己的域名
  2. 证书劫持+用自己的域名
  3. 域名劫持+自己的证书
  4. DNS域名劫持+证书劫持
  5. 域名入侵
  6. 中间人证书欺骗攻击
  7. httpsStrip
6.理解WebSocket协议的底层原理、与HTTP的区别
Socket原理:

服务端有一个进程(或者多个进程)在指定端口等待客户来连接,服务程序等待客户的连接信息,一旦连接上之后,就可以按设计的数据交换方法和格式进行数据传输。客户端在需要的时刻发出向服务器端的连接请求。

区别
  1. socket是TCP/IP进程间通讯的底层实现api
  2. http(s)是在socket之上封装的一种上层通讯协议,其特点是:
  • 服务端监听通讯,被动提供服务;客户端主动向服务端发起连接请求,建立起通讯。
    每一次交互都是:客户端主动发起请求(request),服务端被动应答(response)。
  • 服务端不能主动向客户端推送数据。
  • 通信的数据是基于文本格式的。二进制数据(比如图片等)要利用base64等手段转换为文本后才能传输。
  1. websocket也是在socket之上封装的一种上层通讯协议,其特点是:
  • websocket通讯的建立阶段是依赖于http协议的。最初的握手阶段是http协议,握手完成后就切换到websocket协议,并完全与http协议脱离了。
  • 建立通讯时,也是由客户端主动发起连接请求,服务端被动监听。
  • 通讯一旦建立连接后,通讯就是“全双工”模式了。也就是说服务端和客户端都能在任何时间自由得发送数据,非常适合服务端要主动推送实时数据的业务场景。
  • 交互模式不再是“请求-应答”模式,完全由开发者自行设计通讯协议。
  • 通信的数据是基于“帧(frame)”的,可以传输文本数据,也可以直接传输二进制数据,效率高。当然,开发者也就要考虑封包、拆包、编号等技术细节。
7. HTTP的基本优化
  • 影响一个 HTTP 网络请求的因素主要有两个:带宽和延迟。
  • 延迟:
  1. 浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名,同时只能有 4 个连接(这个根据浏览器内核不同可能会有所差异),超过浏览器最大连接数限制,后续请求就会被阻塞。
  2. DNS 查询(DNS Lookup):浏览器需要知道目标服务器的 IP 才能建立连接。将域名解析为 IP 的这个系统就是 DNS。这个通常可以利用DNS缓存结果来达到减少这个时间的目的。
  3. 建立连接(Initial connection):HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值