状态码
HTTP状态码有40多种,加上附加状态码总数有60多种
1. 200 OK 成功
请求正常被服务器处理
2. 301 Moved Permanently
永久性重定向,资源移动会更新浏览器书签
相应状态码返回时,所有浏览器都会把POST改成GET,并删除请求报文主体,之后请求会自动再次发送。
3. 302 Found
临时性重定向,资源移动不会更新浏览器书签
相应状态码返回时,所有浏览器都会把POST改成GET,并删除请求报文主体,之后请求会自动再次发送。
4. 303 See Other
资源的URI已经更新,临时按新的URI进行访问,使用GET请求获取相应的资源
相应状态码返回时,所有浏览器都会把POST改成GET,并删除请求报文主体,之后请求会自动再次发送。
5. 304 Not Modified
自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。服务器可以告诉 Googlebot 自从上次抓取后网页没有变更,进而节省带宽和开销。
返回时不包含任何请求的主体部分,304和重定向无任何关系
6. 400 Bad Request
请求报文中存在语法错误,服务端无法理解,需修改请求的内容后再次发送请求
浏览器会像对待200一样对待该状态码
7. 401 Unauthorized
发送的请求需要有通过HTTP认证的认证信息。
另外若之前已经已经进行过一次请求,则表示用户认证失败
当浏览器初次接收到401响应,会弹出认证用的对话窗口
8. 403 Forbidden
服务器拒绝请求该资源
或者表示未获取文件系统的访问授权,访问权限出现某些问题
服务器端可以说明拒绝的理由,并返回给客户端展示
9. 404 Not Found
服务器上没有请求的资源
也可以在服务器端拒绝请求且不想说明拒绝的理由
10. 500 Interval Server Error
服务器在执行请求时发生故障
也可能是web应用存在的bug或者某些临时故障
11. 503 Service Unavailable
服务器目前超负载,正忙着呢
正在进行停机维护,现在无法处理请求
HTTPS
HTTPS特点:
基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
HTTPS有如下特点:
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容
- 验证身份:通过证书认证客户端访问的是自己的服务器
- 保护数据完整性:防止传输的内容被中间人冒充或者篡改
https比http多了加密和解密,http是直接将数据交给下一层,https是先交给SSL/TLS进行加密。
HTTPS 的工作原理
我们都知道 HTTPS 能够加密信息,以免敏感信息被第三方获取,所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用 HTTPS 协议。
1、客户端发起 HTTPS 请求
这个没什么好说的,就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口。
2、服务端的配置
采用 HTTPS 协议的服务器必须要有一套数字证书,可以自己制作,也可以向组织申请,区别就是自己颁发的证书需要客户端验证通过,才可以继续访问,而使用受信任的公司申请的证书则不会弹出提示页面(startssl 就是个不错的选择,有 1 年的免费服务)。
这套证书其实就是一对公钥和私钥,如果对公钥和私钥不太理解,可以想象成一把钥匙和一个锁头,只是全世界只有你一个人有这把钥匙,你可以把锁头给别人,别人可以用这个锁把重要的东西锁起来,然后发给你,因为只有你一个人有这把钥匙,所以只有你才能看到被这把锁锁起来的东西。
3、传送证书
这个证书其实就是公钥,只是包含了很多信息,如证书的颁发机构,过期时间等等。
4、客户端解析证书
这部分工作是有客户端的TLS来完成的,首先会验证公钥是否有效,比如颁发机构,过期时间等等,如果发现异常,则会弹出一个警告框,提示证书存在问题。
如果证书没有问题,那么就生成一个随机值,然后用证书对该随机值进行加密,就好像上面说的,把随机值用锁头锁起来,这样除非有钥匙,不然看不到被锁住的内容。
5、传送加密信息
这部分传送的是用证书加密后的随机值,目的就是让服务端得到这个随机值,以后客户端和服务端的通信就可以通过这个随机值来进行加密解密了。
6、服务端解密信息
服务端用私钥解密后,得到了客户端传过来的随机值(私钥),然后把内容通过该值进行对称加密,所谓对称加密就是,将信息和私钥通过某种算法混合在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法够彪悍,私钥够复杂,数据就够安全。
7、传输加密后的信息
这部分信息是服务段用私钥加密后的信息,可以在客户端被还原。
8、客户端解密信息
客户端用之前生成的私钥解密服务段传过来的信息,于是获取了解密后的内容,整个过程第三方即使监听到了数据,也束手无策。
DNS解析过程
DNS协议属于应用层 , 使用UDP协议传输( 服务器之间的备份使用TCP ) , 作用在于 将域名映射为IP地址。
第一步.浏览器缓存
当用户在浏览器输入 www.baidu.com时 , 浏览器会先检查自己的缓存,如果有这个域名,就与其映射的IP地址建立链接,解析完成!
第二步.本地系统缓存
如果浏览器缓存没找到,就检查本地操作系统的缓存,如果有这个域名,就与其映射的IP地址建立链接,解析完成!
Windows系统的DNS缓存保存在 C:\Windows\System32\drivers\etc\hosts 文件中
第三步,本地域名服务器
如果操作系统缓存中没有找到,则检查本地域名服务器的缓存,如果有这个域名,就与其映射的IP建立链接,解析完成!
本地域名服务器为 IPv4协议中配置的首选DNS服务器
第四步.根域名服务器
如果本地域名服务器缓存中没有找到,则请求根服务器,根服务器会返回一个负责该区域的主服务器的IP
根服务器用来管理互联网的主目录,不存储域名,而是存储负责每个域的解析的域名服务器的地址信息,互联网上所有将域名转化为IP地址的请求,理论上都要经过根服务器
第五步.递归请求主域名服务器
本地域名服务器根据根域名服务器返回的IP地址,链接这个主域名服务器,主域名服务器如果有这个域名,就与其映射的IP建立链接,解析完成!
如果没有这个域名,则递归请求下一级域名服务器,直到找到对应的域名
第六步.缓存并建立链接
主域名服务器将查询到的IP地址返回给本地域名服务器,本地域名服务器缓存域名及其映射的IP , 并通过IP地址与web服务器建立链接,展示网站内容
至此,解析完成!
注意:
一、主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
客户机和服务器之间的查询是递归查询
是递归查询告诉客户机IP
二、本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。
服务器之间的查询是迭代查询
这两种查询的差别: