特点
- TCP 是面向连接的运输层协议。应用程序在使用 TCP 协议之前,必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接。
- 每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一)。
- TCP 提供可靠交付的服务。通过 TCP 连接传送的数据,无差错、不丢失、不重复、并且按序到达。
- TCP 提供全双工通信。 TCP 允许通信双方的应用进程在任何时候都能发送数据。
- 面向字节流。
TCP 的连接
TCP 连接的端点叫套接字(socket)或插口。
套接字socket = (IP地址: 端口号)
可靠传输的工作原理
TCP 发送的报文段是交给 IP 层传送的。但 IP 层只能提供尽最大努力服务,也就是说, TCP 下面的网络所提供的是不可靠的传输。因此, TCP 必须采用适当的措施才能使得两个运输层之间的通信变得可靠。
主要是通过一些可靠传输协议,当出现差错时让发送方重传出现差错的数据,同时在接收方来不及处理收到的数据时,及时告诉发送发适当降低发送数据的速度。
停止等待协议
“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
当出现差错的时候,会进行超时重传。即如果发送方超过一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组。
连续 ARQ 协议
连续 ARQ 协议规定,发送方每收到一个确认,就把发送串口向前滑动一个分组的位置。
接收方一般都是采用累积确认的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都已正确收到了。