一,tcp三次握手图
二,为什么要进行三次我手?
首先,我们来举一个生活中的栗子。在我们初中时我们便学过这样的英语对白。场景是小明和小红初次见面小明(客户端):How are you?(SYN)小红(服务器):i am fine,thank you(Ack,对问题的确认。)and you?(SYN)小明(客户端):me too.(Ack)一番礼貌之后,联系已经建立。可以进行家长里短的交谈了,也就是可以发送数据了。SYN=1的数据包是请求数据包。Ack是确认数据包。当客户端给服务器发送SYN=1的数据报时,目的是告诉服务器我的发送缓存已经建立,你快建立你的接收缓存吧。当服务器给客户端发SYN=1,Ack=x+1的数据包时,Ack表示好的我知道了,我的接收缓存已经建立好了。SYN=1是告诉客户端我的发送缓存已经建立,你快建立接收缓存吧。客户端最后给服务器发了一个Ack,表示好的我的 接收缓存建好了。
如图,其实服务器和客户端有各自的接收缓存和发送缓存,下图显示了一部分。
tcp三次握手不仅是发送接收缓存的建立。还协商了一些重要的参数:如发送缓存等。