一,TCP连接
三次握手(Three-Way Handshake)建立连接:
-
第一次握手(SYN): 客户端向服务器发送一个TCP报文,其中包含SYN(同步)标志位,以及客户端的初始序列号。这表示客户端请求建立连接,并希望开始通信。
-
第二次握手(SYN + ACK): 服务器接收到客户端的SYN报文后,会发送一个带有SYN和ACK(确认)标志位的报文,其中ACK用于确认客户端的请求,并同时向客户端发起自己的序列号。这表示服务器接受了连接请求,并同意建立连接。
-
第三次握手(ACK): 客户端接收到服务器的确认报文后,会发送一个带有ACK标志位的报文,用于确认服务器的接受。至此,连接建立完成,双方可以开始进行数据传输。
这种三次握手过程的目的是确保双方都愿意建立连接,并且双方都知道对方已经同意建立连接。这样可以防止不必要的连接建立,同时确保双方的状态同步。
四次挥手(Four-Way Handshake)断开连接:
-
第一次挥手(FIN): 当某一方决定要断开连接时,它会发送一个带有FIN(结束)标志位的报文,表示它不再发送数据,但仍然愿意接收数据。
-
第二次挥手(ACK): 接收到FIN的一方会发送一个带有ACK标志位的报文,用于确认接收到FIN报文。
-
第三次挥手(FIN): 当另一方也准备断开连接时,它会发送一个带有FIN标志位的报文,表示它不再发送数据。
-
第四次挥手(ACK): 接收到第三次挥手的一方会发送一个带有ACK标志位的报文,表示确认接收到第三次挥手的报文。此时连接完全关闭。
四次挥手的原因在于,TCP连接是全双工的,双方都可以发送和接收数据。因此,每一方在断开连接时需要单独发送FIN和接收ACK,以确保双方都知道连接已经关闭,同时允许双方在断开连接前完成尚未发送的数据传输。
总之,三次握手和四次挥手是为了确保连接的可靠建立和可靠关闭,以保障数据的可靠传输。握手和挥手过程中的标志位和确认消息是为了确保双方都能够理解连接状态的变化。
二,TLS连接
TLS(Transport Layer Security)握手过程是建立安全通信连接的关键步骤,用于保护数据在网络上的传输。TLS握手过程包括以下步骤:
-
客户端Hello(ClientHello): 客户端首先向服务器发送一个ClientHello消息,其中包含以下信息:
- 支持的TLS版本列表,按照首选顺序排列。
- 随机数,用于生成后续的密钥。
- 支持的加密算法列表,包括加密算法、哈希算法等。
- 可选的扩展信息,如SNI(Server Name Indication)用于指定服务器的域名。
-
服务器Hello(ServerHello): 服务器从客户端提供的信息中选择一个TLS版本、一个加密算法和一个随机数,并向客户端发送一个ServerHello消息,其中包含以下信息:
- 选择的TLS版本。
- 服务器生成的随机数。
- 选择的加密算法。
- 可选的扩展信息,例如SNI。
-
服务器证书(Server Certificate): 服务器会将其数字证书发送给客户端,证书包含了服务器的公钥。客户端使用服务器的公钥来验证服务器的身份,并为后续的通信建立加密连接。
-
可选的服务器Key Exchange(可选项): 如果服务器要求客户端提供一个预主秘密(premaster secret)的公钥,它会要求客户端发送一个Key Exchange消息。
-
服务器Hello Done(ServerHelloDone): 服务器发送ServerHelloDone消息来指示握手消息的结束。
-
客户端Key Exchange(可选项): 如果服务器要求客户端提供一个预主秘密的公钥,客户端会发送Key Exchange消息,其中包含预主秘密的公钥。
-
客户端Finished(ClientFinished): 客户端使用服务器的公钥来加密预主秘密,并发送Finished消息,证明它已经完成密钥交换,并且后续通信将使用协商的加密算法进行保护。
-
服务器Finished(ServerFinished): 服务器接收到客户端的Finished消息后,也会用协商的密钥加密一条Finished消息,并发送给客户端,证明它也已经完成密钥交换。文章来源:https://www.toymoban.com/news/detail-773974.html
至此,TLS握手过程完成,客户端和服务器都拥有了相同的预主秘密,这将用于生成会话密钥,以后的通信都会使用这个密钥进行加密和解密。握手过程的目标是确保通信双方的身份验证、协商加密参数,并建立安全的通信通道。文章来源地址https://www.toymoban.com/news/detail-773974.html
到了这里,关于面试专栏:TCP和TLS连接专栏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!