有关TCP协议的相关知识见:这篇博客
TCP与UDP最大的区别就是TCP保证可靠性数据传输。从TCP与UDP的协议报头就可以看出差别。TCP的协议报头比UDP报头多了很多东西,而多出来的这些都是用于保证数据的可靠性传输的。下面将具体介绍TCP保证可靠传输的机制以及报头中的字段是如何用于可靠性传输机制的。
TCP协议保证可靠性的一个重要机制就是连接管理机制。
1. 连接管理机制
下图为客户端和服务器端根据TCP协议:三次握手建立连接,数据通信,四次挥手释放连接的示意图:
上图中:
三次握手:
(1)服务器程序先运行起来后,当调用listen设置监听套接字之后,进入LISTEN状态。然后调用accept阻塞等待来自客户端的连接请求;
(2)客户端再运行,分配文件描述符之后,调用connect向服务器发起连接请求,阻塞等待服务器的应答。发出带有SYN同步标志位的同步报文段,此时进入SYN_SENT状态;
(3)服务器收到客户端的SYN同步报文段后,将该连接放入内核等待队列中,并进入SYN_RECV状态。此时,服务器向客户端发出带有ACK标志位的确认报文段,确认收到连接请求,并等待客户端连接建立之后的确认信号;