TCP的三次握手和四次挥手
TCP连接管理-----三次握手
首先看一下一台主机(客户端)如何与另一台主机(服务器端)建立连接。可以分为三步:
一: 客户端的TCP向服务器端的TCP发送一个TCP报文。该报文不包含应用层数据。报文的SYN比特位置1,客户端初始序列号client_isn。
二: 服务器主机收到来自客户端的报文,(服务器端此时确认自己的接收能力OK,客户端的发送能力OK)为该TCP连接分配TCP缓存和变量,并向客户端发送允许连接的报文。该报文不包含应用层数据,(这里给TCP连接分配缓存和变量会使得TCP易于受到称为SYN洪泛的拒绝服务攻击)含三个重要信息。SYN置1,确认字段ACK=client_isn+1,服务端自己的初始序列号server_isn。该报文称为“SYNACK报文段”。
三: 收到SYNACK报文段后,(客户端此时确认自己的接收能力和发送能力均OK,服务器的发送能力OK)客户端也为该连接分配缓存和变量。客户主机向服务器发送一个对服务器允许连接的确认字段。连接建立,该字段SYN置为0,ACK=server_isn+1。该报文中可以携带客户到服务器的数据。
TCP连接管理----四次挥手
两台主机之间断开连接可以分为四步:
一: 客户端向服务器端发送TCP报文,FIN比特置1。
二:服务器端收到客户的TCP报文,先回复一条确认ACK报文(
三: 服务器端向客户端发送终止报文,FIN置1。
四: 客户端对服务端的终止报文进行确认,发送ACK报文。(TIME_WAIT状态,这段时间里如果服务器没有收到客户端的ACK就会重新传FIN)(客户端会等待一段时间一般为30秒,一分钟等,然后关闭CLOSED状态)
从建立连接到断开连接,客户TCP经历的TCP状态为:
从建立连接到断开连接,服务器TCP经历的TCP状态为:
😊,这是自己的第一篇博客,严格意义上说是一次笔记,希望自己能坚持下去,把学到的东西记录下来,最好是能总结。
一只渣渣程序猿的焦虑,能力太差,不知如何提升。