三次握手
形象比喻
将小明当作客户端,小红当作服务器端,两人写信告白:
第一次握手:
小明告诉小红:我喜欢你
第二次握手:
小红告诉小明:我知道了,我也喜欢你。
此时小红并不确定小明是否收到了告白信,一直到
第三次握手:
小明回信:我也知道了,我们在一起吧。此时才真正建立连接。
SYN:请求号标记位
ACK:确认号标记位
seq:序号,代表请求方将会发送的数据的第一个字节编号
ack:返回的确认号,代表接收方收到收据后(seq),代表希望对方下一次传输数据的第一个字节编号
第一次握手:客户端第一次发送一条连接请求数据,SYN=1,ACK=0就是代表建立连接请求,发送的具体数据第一个字节编号记为x,赋值seq.
第二次握手:服务器端收到请求后,返回客户端的SYN=1,加上自己的确认号ACK=1,发送的具体数据第一个字节编号记为y,赋值seq,希望客户端下一次返回编号x+1个字节为止的数据,记为
ack=x+1.
客户端得出客户端发送接收能力正常,服务器发送接收能力也都正常,但是此时服务器并不能确认客户端的接收能力是否正常
第三次握手:
客户端收到服务器端返回的请求确认后,再次发送数据,原封不动返回ACK=1,这里就不需要再发送SYN=1了,因为此时并不是和服务器端进行连接请求,而