笔记5
TCP 是面向连接的运输层协议。这说明,在使用 TCP 协议之前,应用程序需要建立TCP连接。在传送数据结束之后,就释放TCP的连接。
TCP协议具有面向连接的、一对一的、提供可靠交付、全双工的、基于字节流的、端到端的、流量控制、拥塞控制、差错控制机制的特点。
1、TCP连接
TCP 连接有两个端点。TCP 连接的端点叫做套接字(socket)或插口。根据 RFC 793 的定义:端口号拼接到(contatenated with)IP 地址即构成了套接字。
套接字 socket = ( IP 地址:端口号)
TCP 连接 ::= {socket1, socket2} = {(IP1:port1), (IP2:port2)}
2、TCP的可靠性
TCP 发送的报文段是交给 IP 层传送的。由于IP 层只能提供尽最大努力服务,也就是说,TCP 下面的网络所提供的是不可靠传输。因此,TCP 必须采取适当的措施才能使得两个运输层之间的通信变得可靠。
为增强TCP的可靠性,采用了停止等待协议、连续 ARQ 协议。
停止等待协议
1、正常情况
发送方发送数据,接收方返回确认,发送方继续发送下一个数据。
2、出现差错
由于数据帧的丢失和出错、确认帧的丢失导致超时,需要重传数据帧,发送方发送数据时会暂时保留已发送的分组的副本,并设置了一个超时计时器。当接收方超时没有返回确认,发送方将会重传。
停止等待协议的优点是简单,但缺点是信道利用率太低。
连续 ARQ 协议
自动重传请求 ARQ(Automatic Repeat Request)。
使用发送窗口,位于窗口内的分组连续发送出去,不需等待对方的确认,提高信道利用率。发送方每收到接收方的一个确认发送窗口就向前移动一个分组,当收到最后一个分组的确认,这就表示:到这个分组为止的所有分组都已正确收到了。
当中间有分组丢失时,发送窗口将要重回丢失的第一个分组,然后以这个分组开始重新发送(即使发送过了而且返回确认),这就叫 Go-back-N(回退 N)。
如果通信线路质量不好,连续 ARQ 协议将会带来负面的影响。
为增强TCP的可靠性,建立TCP连接采用“三次握手”。
如图所示:
这主要是为了防止已经失效的请求报文突然传回到主机B,因而产生错误。