TCP三次握手和四次挥手(以及和UDP的区别)

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发送确认包ACKACK=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多。

猜你喜欢

转载自blog.csdn.net/qq_41916395/article/details/81705806