网络通讯协议
- Ajax Polling。最基本的通讯协议,其逻辑是客户端不停的向服务器发送求情,等待服务器返回有效数据。若没有数据,那么服务端就会返回空值,其优点在于服务器处理简单,浏览器兼容比较好,缺点在于延时较长,浪费带宽流量,大多数空响应是无效的。
- Long Polling。方式和Ajax Polling类似,没有可用数据返回时候会将请求挂起,直到有可用数据返回。所有Long Polling 一旦请求一定可以得到有效数据,其优点在于轮询的次数少,没有空响应,缺点在于请求会超时,所以经常需要重连。同时,因为请求总是被挂起,所以服务器需要保持大量链接。
- WebSockets。一次请求之后,服务端和客户端之间就保持了稳定的双向TCP连接,通过握手的方式,服务端和客户端之间可以互相传输数据。其优点在于低延时,低开销,可完全替代上面两种。缺点在于浏览器兼容略差
- sever-sent event(SSE)。其主要用于服务端和客户端传输数据,一旦连接建立,则事件流将一直稳定打开,直到客户端关闭。相比websockets,SSE的有点在于他可以自动重新连接,可以发送任意事件。缺点是SSE只是单项的信息流。
在https连接的网站中,输入账号和密码并点击登陆按钮后到服务器返回这个请求前,这期间经历了什么
锁 客户端 服务器端
具体经历了以下八步:
- 客户端打包请求。其中包括URL、端口、账号密码等。使用账号和密码登陆应该用的是Post方式,所以,相关的用户信息会被加载到body中。这个请求应该包括三个方面:网络地址、协议和资源路径。
注意:这里用的是HTTPS,即HTTP + SSL/TLS,在HTTP上又加了一层处理加密信息的模块(相当于一个锁)。这个过程相当于客户端请求钥匙。 - 服务器接受请求。一般客户端的请求会先被发送到DNS服务器。DNS服务器负责将网络地址解析成IP地址,这个IP地址对应网上的一台计算机。这其中可能发生Hosts Hijack和ISP failure的问题。过了DNS这一关,信息就到了服务器此时客户端和服务器端的端口之间会建立一个socket连接。socket一般是以file descriptor的方式解析请求的。这个过程相当于服务器端分析是否要向客户端发送钥匙模板。
- 服务器端返回数字证书。服务器端会有一套数字证书(相当于一个钥匙模板)这个证书会先被发送给客户端。这个过程相当于服务器向客户端生成钥匙并锁上请求。
- 客户端生成加密信息。根据收到的数字证书(钥匙模板),客户端会生成钥匙,并把内容锁上,此时信息已经被加密。这个过程相当于客户端生成钥匙并锁上请求。
- 客户端发送加密信息。服务端会收到由自己发送的数字证书枷锁的信息。这个时候生成的钥匙也一并被发送到服务器。这个过程相当于客户端发送请求。
- 服务器解锁加密信息。服务器收到加密信息后,会根据得到的钥匙进行解密,并把返回的数据进行对称加密,这个过程相当于服务器端解锁请求,生成加锁回应信息。
- 服务端向客户端返回信息。客户端会收到相应的加密信息。这个过程相当于服务区向客户端发送回应信息。
- 客户端解锁返回信息。客户端会用刚刚生成的钥匙进行解密,将内容显示在浏览器上。
[图片上传失败...(image-61cbb7-1536157180490)]
网友评论