TCP协议
TCP协议位于传输层,提供可靠的字节流服务(Byte Stream Service),指的是以字节流的形式传递给接收者,没有固定的报文边界限制,只能知道总共发送的数据,但是不知道一次能读取到多少数据,为了更容易传输大数据将数据切割了。
三次握手
为了数据传输的准确性,服务端和客户端之间需要三次的交互(三次握手)
- 第一次,client发送
syn
包(syn=j)
给server,进入SYN_SEND状态,等待服务器确认 - 第二次,server收到
syn
包,确认client发来的syn(ack=j+1),同时自己发送一个SYN包(syn=k),也就是SYN+ACK包,此时server进入SYN_RECV状态 - 第三次,客户端接收到服务器的
SYN+ACK
包,向服务器发送确认包ACK(ack=k+1)
,此时包发送完毕了,客户端和服务器进入ESTABLISHED
状态,完成三次握手。
sync表示建立连接的信号,ack表示确认消息
第一次握手:客户端发送了SYN=1,seq=x,这个x是一个随机数,服务端接收到了客户端发来的数据包,知道自己要和客户端建立连接了
第二次握手:服务器给客户端发送一个SYN=1,seq=y随机数,ACK=x+1,服务端发送前两个数据都是为了证明自己的发消息的能力,服务端在客户端发出的seq随机数上+1是表示明确客户端身份,他俩是同一个连接
第三次握手:客户端再次向服务器发送一个ACK=y+1,明确告诉服务器,可以和客户端进行通信了
网友评论