图3-35TCP报文
1.TCP三次握手
如图3-36所示,为了保证会话的可靠性,两台主机在进行TCP数据传输前,必须通过三次握手建立TCP连接。
图3-36TCP建立连接过程
1)主机PC1将一个SYN数据报发送到主机PC2,希望建立一个TCP连接。
2)主机PC2发送ACK数据报,确认收到了PC1的SYN数据报,并发送SYN数据报,等待PC1确认。
3)主机PC1发送ACK数据报,确认接收到了PC2发送的SYN+ACK数据报,表示TCP连接已成功建立。
2.滑动窗口
1)自动重传请求(ARQ,Automatic Repeat reQuest)
图3-37自动重传请求ARQ机制
在自动重传请求机制下,发送端在发送完分组后,保留的副本并停止数据发送,直到接收端确认已接收到了,发送端才清除的副本,并开始发送下一个报文段。若超过一定时间后,发送端仍没有接收到接收端对的确认,则发送端再利用的副本对进行重传。
如图3-37所示,发送端在发送完第一个分组后暂停,接收端顺利接收到并返回对的确认。发送端接收到确认后,开始发送第二个分组,在传输过程中出现了差错,接收端检测到这一差错,将丢弃。一定时间后,发送端因为等待超时,利用的副本对进行重传,接收端顺利接收到,并返回对的确认,传输继续进行。
上述ARQ机制中,由于每个分组在发送时都要求对上一分组进行确认,数据传输效率较低,连续ARQ机制可以解决该问题。连续ARQ中,引入了发送窗口的概念。如图3-38(a)和3-38(b)所示,深灰色部分为当前的发送窗口,发送窗口中的分组可连续发送,而不必等待接收端一一确认。在图3-42(a)中,发送窗口的左端位于1号分组,右端位于5号分组,发送端连续发送编号为1~5的分组后,停止数据传输并等待接收端的确认。接收端只对按序到达的分组中的最后一个进行确认,例如,接收端接收到的分组编号为1、2、3和5,则只对3号分组进行确认。如图3-42(b)所示,发送端接收到确认后,将发送窗口的左端移动到4号分组,右端移动到8号分组,并开始下一轮的数据传输。
图3-38连续ARQ机制
2)滑动窗口
在滑动窗口机制中,发送端发送窗口的大小不能超过接收端的接收窗口。因此,接收端可以通过接收窗口限制发送端的发送速率,进行流量控制。在图3-39(a)中,发送端的发送窗口包含编号为4~7的分组,接收端在接收到这些分组后,向发送端返回7号分组的确认信息,然后将接收窗口大小重新设置为2个分组并通知发送端,发送端在开始下一轮发送时,根据接收窗口的大小将发送窗口左端移动到8号分组,右端移动到9号分组,如图3-39(b)所示。