学外贸英语的网站,模版建站,免费下载ppt模板的软件,如何免费建立官方网站1. HTTP常见状态码 2. 3开头重定向#xff0c;4开头客户端错误#xff0c;5开头服务端错误
2. HTTP 报文 1. start-line#xff1a;请求行#xff0c;可以为以下两者之一#xff1a;
请求行#xff1a; GET /hello-world2.html HTTP/1.1状态行#xff1a;HTTP/1.1 200…1. HTTP常见状态码 2. 3开头重定向4开头客户端错误5开头服务端错误
2. HTTP 报文 1. start-line请求行可以为以下两者之一
请求行 GET /hello-world2.html HTTP/1.1状态行HTTP/1.1 200 OK
请求行由方法字段、URL字段和HTTP协议版本字段。其中方法字段严格区分大小写当前HTTP协议中的方法都是大写状态行包括三个字段协议版本、状态码与原因短语。
2 . 请求头
Host: 请求的主机名和端口号虚拟主机环境下用于不同的虚拟主机 Referer指明了请求当前资源的原始资源的URL User-Agent: 用户代理使用什么工具发出的请求
1、Accept首部用户标明客户自己更倾向于支持的能力 Accept: 指明服务器能发送的媒体类型 Accept-Charset: 支持使用的字符集 Accept-Encoding: 支持使用的编码方式 Accept-Language: 支持使用语言
2、条件请求首部 Expect: 告诉服务器能够发送来哪些媒体类型 If-Modified-Since: 是否在指定时间以来修改过此资源 If-None-Match:如果提供的实体标记与当前文档的实体标记不符就获取此文档 跟安全相关的请求首部 Authorization: 客户端提交给服务端的认证数据如帐号和密码 Cookie: 客户端发送给服务器端身份标识 3. 响应头
Date标头消息产生的时间
Age标头:从最初创建开始响应持续时间
Server标头: 向客户端标明服务器程序名称和版本
ETage标头不透明验证者
Location标头URL备用的位置
Content-Length标头实体的长度
Content-Tyep标头实体的媒体类型 4.GET 和 POST 有什么区别
GET 的语义是从服务器获取指定的资源POST 的语义是根据请求负荷报文body对指定的资源做出处理。两者都可以带数据GET请求的数据拼接到url上POST在body上由于GET放在url上故携带的数据览器会对 URL 的长度有限制HTTP协议本身对 URL长度并没有做任何规定POST能携带的资源更多。安全 请求方法不会「破坏」服务器上的资源。GET安全 POST不一定。幂等多次执行相同的操作结果都是「相同」的。GET幂等 POST不一定。GET只接受ASCII字符而POST没有限制。.
5. HTTP 缓存技术
强缓存指的是只要浏览器判断缓存没有过期则直接使用浏览器的本地缓存决定是否使用缓存的主动性在于浏览器这边原理
当浏览器第一次请求访问服务器资源时服务器会在返回这个资源的同时在 Response 头部加上 Cache-ControlCache-Control 中设置了过期时间大小浏览器再次请求访问服务器中的该资源时先从浏览器找会先通过请求资源的时间与 Cache-Control 中设置的过期时间大小来计算出该资源是否过期如果没有则使用该缓存否则重新请求服务器服务器再次收到请求后会再次更新 Response 头部的 Cache-Control。
5. 协商缓存
协商缓存是指通过服务端告知客户端是否可以使用缓存的方式即与服务端协商之后通过协商结果来判断是否使用本地缓存。
第一种基于时间实现的请求头部中的 If-Modified-Since 字段与响应头部中的 Last-Modified 字段实现这两个字段的意思是
响应头部中的 Last-Modified标示这个响应资源的最后修改时间 请求头部中的 If-Modified-Since 当资源过期了发现响应头中具有 Last-Modified 声明则再次发起请求的时候带上 Last-Modified 的时间 服务器收到请求后发现有 If-Modified-Since 则与被请求资源的最后修改时间进行对比Last-Modified 如果最后修改时间较新大说明资源又被改过则返回最新资源HTTP 200 OK如果最后修改时间较旧小说明资源无新修改响应 HTTP 304 走缓存。
第二种基于唯一标识实现的请求头部中的 If-None-Match 字段与响应头部中的 ETag 字段这两个字段的意思是 响应头部中 Etag唯一标识响应资源 请求头部中的 If-None-Match 当资源过期时浏览器发现响应头里有 Etag则再次向服务器发起请求时会将请求头 If-None-Match 值设置为 Etag 的值。 服务器收到请求后进行比对如果资源没有变化返回 304如果资源变化了返回 200。
可以理解一个是用修改时间来比较一个直接比较是否修改比较的是Etag唯一标识
注意协商缓存这两个字段都需要配合强制缓存中 Cache-Control 字段来使用只有在未能命中强制缓存的时候才能发起带有协商缓存字段的请求。
可知
缓存始终在浏览器如果没有命中强制缓存的情况可能是因为浏览器设置的cache-control失效了因为只是一个时间断但是注意并不代表浏览器的缓存真的失效。真正判断是否失效时服务端再次协商缓存来判断的。
6. HTTPS 与 HTTP
HTTP 与 HTTPS 的区别
· HTTP 是超文本传输协议信息是**明文传输**存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议使得报文能够加密传输。
· HTTP 连接建立相对简单 TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP 三次握手之后还需进行 SSL/TLS 的握手过程才可进入加密报文传输。
· 两者的默认端口不一样HTTP 默认端口号是 80HTTPS 默认端口号是 443。
· HTTPS 协议需要向 CA证书权威机构申请数字证书来保证服务器的身份是可信的。
7. SSL/TSL四次握手
客户端发送请求ClientHello 客户端通常是浏览器先向服务器发出加密通信的请求这被叫做ClientHello请求。客户端提供了
支持的协议版本比如TLS 1.0版。一个客户端生成的随机数用于后面生成“对话密钥”支持的加密方法如rsa公钥加密
服务器回应SeverHello
确认使用的加密通信协议版本比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致服务器关闭加密通信确认加密方法比如RSA公钥加密。返回加密公钥服务器证书
客户端回应
验证证书的合法性颁发证书的机构是否合法证书中包含的网站地址是否与正在访问的地址一致等如果证书受信任则浏览器栏里面会显示一个小锁头否则会给出证书不受信的提示。如果证书受信任或者是用户接受了不受信的证书浏览器会生成一串随机数的密码并用证书中提供的公钥加密。使用约定好的HASH计算握手消息并使用生成的随机数对消息进行加密最后将之前生成的所有信息发送给网站。
服务器
使用自己的私钥将信息解密取出密码使用密码解密浏览器发来的握手消息并验证HASH是否与浏览器发来的一致。使用密码加密一段握手消息发送给浏览器。
下面这个图比较清楚 需要注意的是最后用的对称加密是由 客户端生成的随机字符串和服务端生成的随机字符串以及 随后用公钥加密生成的随机字符串三者用约定的加密算法得到的一个密钥。
8. HTTP明文传输的风险以及解决方法
风险
信息加密交互信息无法被窃取但你的号会因为「自身忘记」账号而没。校验机制无法篡改通信内容篡改了就不能正常显示但百度「竞价排名」依然可以搜索垃圾广告。身份证书证明淘宝是真的淘宝网还是冒充但你的钱还是会因为「剁手」而没。
总结 窃取篡改冒充
解决
混合加密的方式实现信息的机密性解决了窃听的风险。摘要算法的方式来实现完整性它能够为数据生成独一无二的「指纹」指纹用于校验数据的完整性解决了篡改的风险。将服务器公钥放入到数字证书中解决了冒充的风险。
数字签名 注意 1 . 数字签名里面私钥加密公钥解密 2 . 且加密和解密的一直是一个哈希值由内容计算出来所谓的数字签名这个哈希值也会随着内容发出去解密后的数字签名和哈希值做比对判断是否被篡改。
9.抓包原理
比如我用的Charles
Charles作为一个中间人代理当浏览器和服务器通信时Charles接收服务器的证书但动态生成一张证书发送给浏览器也就是说Charles作为中间代理在浏览器和服务器之间通信所以通信的数据可以被Charles拦截并解密。由于Charles更改了证书浏览器校验不通过会给出安全警告必须安装Charles的证书后才能进行正常访问。
总结Charles需要做的事情是对客户端伪装服务端对服务端伪装客户端
注意前提是客户端选择信任并安装Charles的CA证书。
10. 请求方法 get 方法 发送一个请求来取得服务器上的某一资源。 post 方法 向 url 指定的资源提交数据或附加新的数据。 put 方法 put 方法跟 post 方法很像也是向服务器提交数据但是 put 方法指向了资源在服务器上的位置而 post 方法没有。 head 方法 只请求页面的首部。 delete 方法 删除服务器上的某资源。 options 方法 options 方法用于获取当前 url 所支持的方法。如果请求成功会有一个 allow 的头包含类似 get、post 这样的信息。 trace 方法 trace 方法被用于激发一个远程的应用层的请求消息回路。类似echo? connect 方法 把请求连接转换到透明的 tcp/ip 通道。