TCP协议简述
TCP(传输控制协议)提供的了一种可靠的数据流服务,采用“带重传的确认”技术来实现传输的可靠性。
一、TCP协议中涉及了诸多规则来保障通信链路的可靠性,主要有以下几点:
1、面向连接。
2、将应用层的数据分割成最适合发送的数据块。
3、重传机制。规定时间内未收到确认包,重传数据。
4、对首部和数据进行校验。
5、对收到的数据进行排序,然后交给应用层,丢弃重复的数据。
6、还提供流量控制。
二、TCP包的首部
1、16bit源端口号和16bit目的端口号用于寻找发送端和接收端的进程,通过端口号和IP地址,可以唯一确定一个TCP连接。
2、序号是用来标识从TCP发端向TCP接收端发送的数据序号。
3、确认序号包含发送确认的一端所期望收到的下一个序号,因此,确认序号是上次已经成功收到数据序号加1.
4、首部长度指出了TCP首部的长度值,若不存在选项,则这个值为20字节。
5、标志位(flag)
标志位为1时,表示相对应的位有效。
URG: 紧急指针有效;ACK:确认序号有效;
PSH:接收方应尽快将这个报文段交给应用层;
RST:重建连接; SYN:同步序号用来发起一个连接;
FIN:发端完成发送任务(主动关闭);
三、连接的建立与释放
1、连接建立
建立一个TCP连接,必须经历三次握手过程,其中发送第一个SYN的一端将执行主动打开,接收这个SYN并发回下一个SYN的另一端执行被动打开。
2、连接终止
要释放一个TCP连接,需要通过四次握手过程,这是由TCP的半关闭特性造成的,因为TCP连接时全双工的,因此,需要TCP两端要单独执行关闭。值得注意的是,主动关闭的一端在发送FIN之后,依然还能正常接收对方的数据,只是通知对方它已经没有数据需要发送了。同理,被动关闭的一端在收到FIN之后,仍然可以发送数据,直到它自身同样发出FIN之后,才停止发送数据。