1,状态码:
200: 请求成功
301: 请求的对象被永久的转移了,URL重定向
302: 请求的对象暂时被转移
404: 被请求的文件已经不在服务器上了
505: 服务器不支持
2,Get和Post:
get请求参数一般拼接在URL后边,post请求一般放在body中
get请求长度限制为2048,post请求长度无限制
get请求一般是获取数据的,是幂等的,不会引起服务端的变化,是安全的,post一般是提交数据的,非幂等的,会引起服务端变化,非安全的
在响应时,get请求产生一个TCP数据包,浏览器会把header和实体主体一起发出去,而Post请求产生两个数据包,浏览器先发送header,服务器响应100,浏览器再发送实体主体,服务器响应200ok
Get的URL可以手动输入,比较方便,还可以被缓存
3,HTTP和HTTPS
HTTP是无状态的:即请求是没有记忆能力的,每次请求都是独立的,不会保存客户端之前的状态
HTTP是无连接的:即持久链接,每个链接可以请求多个请求-响应事务
HTTP持久链接怎么判断一个请求结束?
答:通过Content-Length,或者chunked分块传输,当数据传输完了会传一个空的数据块,客户端收到空的数据块就知道传输完了
HTTPS :安全超文本传输协议,= HTTP+SSL/TLS,是安全的HTTP。
SSL:安全套接层传输协议,是为网络通信提供安全及数据完整性的一种安全协议
HTTP协议:应用层
SSL协议:位于TCP/IP协议与各种应用层协议之间
TCP协议:传输层
UDP协议:传输层
IP协议:网络层
HTTPS链接建立的流程:
1,客户端访问HTTPS连接
客户端会把协议版本号,客户端支持的加密算法,和随机数C发给服务端
2,服务端发送证书给客户端
服务端收到客户端的加密算法后,会和自己的加密算法列表进行比对,如果不符合就断开连接,如果符合就在该算法列表中选一种需要的算法发送给客户端,并把公钥和数字证书和生成的随机数S也发送给客户端
3,客户端验证server证书
4,客户端组装会话密钥
就是用服务端的公钥生成一个前主秘钥,并通过该前主秘钥和随机数组装成会话秘钥
5,客户端将前主秘钥加密发送给服务端(非对称加密)
6,服务端通过私钥解密得到前主秘钥
7,服务端组装会话秘钥
至此,服务端和客户端都已经知道了用于此次会话的主秘钥。
8,开始数据传输(对称加密)
会话密码 = 随机数C+随机数S+前主密钥
最终保证两边的会话密钥是一样的
总结:客户端先把支持的加密算法列表和随机数C发给服务器,服务器选择一种加密算法发给客户端并把数字证书和随机数S也发给客户端,客户端验证数字证书没问题后,开始组装前主密钥和会话密码,之后前主密钥会用非对称加密法加密后发给服务端,会话密码保留用于进行会话,服务器那边收到加密后的前主秘钥后会对它进行解密,然后得到前主秘钥,然后通过前主秘钥+S+C得到会话秘钥
HTTPS建立连接过程使用非对称加密,后续通信使用对称加密,非对称加密是一种很耗时的加密方式
4,对称加密和非对称加密
对称加密:DES,IDEA,3DES
非对称加密:RSA,ECC,DSA
数字证书:为了确保客户端能够确认公钥就是想要访问的网站的公钥,在证书链中的顶端的就是根 CA。
5,三次握手,四次挥手
网友评论