SYN(synchronous建立联机)
ACK(acknowledgement 确认)
(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1)(确认包由建立联机包 SYN=j 的数据进行修改),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
FIN(finish结束)
ACK(acknowledgement 确认)
CP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。
client向server发送FIN;
server收到FIN不会立刻关闭socket,于是先将ACK发送给client;
等server处理完,再发FIN;
client发送ACK,server收到ACK则断开连接
TCP 和 UDP(User Datagram Protocol 用户数据报)的区别:
1.TCP是面向连接,UDP是面向无连接的,即发送数据前是否需要建立连接;
2.TCP是可靠的传输方式(信道),保证数据无差错,不丢失,不重复,UDP是不可靠的传输方式(信道);
3.TCP是字节流模式(即流式套接字stream),而UDP是数据报模式;
4.TCP程序结构相对UDP程序结构复杂;
5.TCP占用系统资源相对于UDP多。