HTTPS
HTTP缺点:客户端和服务端的数据一旦被抓包,他们之间的交互信息就会泄漏,除非服务器自己对关键的信息进行加密,否则没有什么安全性可言。
简单理解:HTTPS = HTTP + SSL/TLS
SSL/TLS协议:为网络通信提供安全性和数据完整性的一种安全协议,在传输层对网络进行加密。
具体表现:
- 认证用户和服务器,保证数据发送到正确的位置
- 对发送的数据进行加密,保护数据
- 保证数据在发送的过程中数据的完整性
过程:
- 客户端向服务端索要公钥(公钥一般放在证书中)
- 双方协商对称秘钥
- 使用对称秘钥进行加密通信
HTTPS的传输过程:
- 服务器必须有一个CA认证合法授权的证书,浏览器保持一个信任的CA机构列表,通过这个机构查询服务器所提供的证书是否合法,只有通过认证的服务器才会被认为是可靠的。
- 如果CA认证通过,浏览器会从证书中取的公钥,通过公钥协商出一个随机的对称秘钥,服务器在传输信息的时候使用对称秘钥进行加密,浏览器接收到消息,使用对称秘钥进行解密。
HTTPS的优点:保证了数据的安全性和数据的完整性
HTTPS的缺点:1. CA机构颁发的证书都是需要费用的 2. 需要一定的技术支持 3. 一部分的网站并不关心其安全性
HTTP
-
概念
HTTP:超文本传输协议
特点:客户端每次请求都需要服务端进行响应。
一次连接
包括建立连接(TCP三次握手)和关闭连接(TCP四次挥手)。 -
HTTP 0.9
- get请求
-
HTTP 1.0
-
post、head
-
头信息、状态码、缓存等。
-
短连接
每个TCP连接只能发送一个请求
-
缺点: TCP连接成本高,而每个请求都要进行一次TCP连接。并keep-alive不是标准的Connection字段
-
HTTP 1.1
-
持久连接
对于同一个域名,大多数浏览器允许同时建立6个持久连接
-
管道机制
pipelining,同一个TCP连接中可以发送多个请求。允许浏览器同时发出A请求和B请求,但是服务器还是按照顺序,先回应A请求,完成后再回应B请求。
-
Host
指定服务器域名
-
缺点:一个TCP连接里面的请求是按照次序进行的,只有处理完一个,才能进行下一个,可能造成
队头阻塞
。优化:减少请求数、分片Sharding(将请求分配到各个主机上),Spriting(多个图片合成一个图片)等。
-
HTTP 2.0
-
二进制协议(帧)
头信息和数据体都是二进制的,统称为’帧‘。
-
多路复用
复用TCP连接,一个请求中客户端和服务器端可以同时发送多次请求和响应。解决
队头阻塞
-
头信息压缩
- 头信息使用gzip或compress压缩后再发送;
- 客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。
-
服务器推送
服务器可以预期到客户端请求网页后,很可能会再请求静态资源,所以就主动把这些静态资源随着网页一起发给客户端了。
-
-
了解
- 请求格式
GET / HTTP/1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) Accept: */* // 声明自己可以接收哪些格式 Accept-Encoding: gzip, deflate // 声明自己可以接受的压缩方法 Connection: keep-alive // 要求服务器不要关闭TCP连接
- 响应格式
HTTP/1.0 200 OK Content-Type: text/plain // 告诉客户端数据是什么格式 Content-Length: 137582 // 本次响应的数据长度 Transfer-Encoding: chunked // Content-Encoding: gzip // 说明发送的数据的压缩方法 Cache-Control: max-age=18000 // 若设置了Cache-Control会忽略Expires Expires: Thu, 05 Dec 1997 16:00:00 GMT // 响应过期时间 Last-Modified: Wed, 5 August 1996 15:55:28 GMT Server: Apache 0.84 <html> <body>Hello World</body> </html>
- 请求格式
socket套接字
-
概念
- TCP/IP协议进行通信的基本单元。
- 一个套接字必须包括:连接使用的协议、本地主机IP地址、本地进程协议端口、远程主机IP地址、远程进程协议端口。
- 区分来自不同的应用程序或者连接的通信,实现数据传输的并发服务。
-
建立socket连接
- 至少需要一对套接字:一个运行在客户端,一个运行在服务器端
- 连接过程:服务器监听,客户端请求,连接确认
-
socket连接与TCP连接
创建socket连接时,可以指定传输层的协议是TCP或者UDP,当选择TCP时,一个socket连接就是一个TCP连接。
-
socket连接与HTTP连接
- HTTP连接需要客户端发送请求之后服务器端才会响应数据。
- 服务器就可以直接将数据传送给客户端,保持客户端与服务器数据的实时与同步
TCP
TCP:传输控制协议
-
其实前两次已经能够通话了,那么为什么要出现第三次握手呢?
防止乙一直等待而浪费自己的时间。
-
三次握手四次挥手