TCP 三次握手、TCP 四次挥手

计算机网络常见问题_服务器端

 

三次握手可以两次吗

为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。

如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认。在 S ACK 的时候,C 可能已经关闭无法接受信息,导致网络资源浪费。

 

四次挥手可以三次吗

当服务端收到客户端的 SYN 连接请求报文后,可以直接发送 SYN+ACK 报文。其中 ACK 报文是用来应答的,SYN 报文是用来同步的。但是关闭连接时,当服务端收到 FIN 报文时,很可能并不会立即关闭,所以只能先回复一个 ACK 报文。只有等到服务端所有的报文都发送完了,才能发送 FIN 报文,因此不能一起发送。所以需要四次挥手。

 

HTTP 报文组成部分

请求报文:请求行、请求头、空行、请求体

响应报文:状态行、响应头、空行、响应体

 

HTTP/2 特性



减少传输数据量:通过二进制传输 和 Header 压缩实现

多路复用:使用同一个 TCP 连接来传输一个域名下的所有请求,请求还可以有优先级

服务端推送:能够在客户端发送第一个请求到服务端时,提前把一部分内容推送给客户端,放入缓存当中,这可以避免客户端请求顺序带来的并行度不高,从而导致的性能问题。

丢包重传会导致所有请求阻塞,这种情况下性能反而不如 HTTP/1。基于 QUIC 的 HTTP/3 可以彻底解决 TCP 的队头阻塞问题


HTTPS 的工作原理



输入 HTTPS 网址,连接 443 端口,发送一个密文族,包括浏览器所支持的加密算法清单

服务器端选择加密算法,传送证书给客户端

客户端解析证书,验证证书的颁发机构和过期时间,如果证书没问题,则生成一个随机值,用公钥对该随机值加密,发送给服务端

服务端用私钥解密,得到随机值。至此,非对称加密过程结束,实现了身份认证和密钥协商。

服务器端用随机值加密后传输信息给客户端

客户端可以用之前生成的随机值还原出原文。至此,一个对称加密的过程结束,用于服务器端传送给客户端数据。

因为非对称加密的性能很差,所以传输的时候用对称加密


计算机网络常见问题_序列号_02