传输控制协议(Transmission Control Protocol)
概念
一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。
主要特点
(1)TCP是面向连接的运输层协议。这就是说,应用程序在使用TCP协议之前,必须先建立TCP协议。在传送数据完毕后,必须释放已经建立的TCP连接。类似于“打电话”,需要先拨号建立连接,通话完之后要挂机释放连接。
(2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。
(3)TCP铍铜可靠交付的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按顺序到达。
(4)TCP提供全双工通信。TCP允许通信双发的应用进程在任何时候都发送数据。
(5)面向字节流。TCP中“流”(stream),指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互式一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。
TCP的连接
TCP把连接作为最基本的抽象。
TCP连接的端点叫做套接字(socket)或插口。根据RFC 793的定义:端口号拼接到(concatenated with)IP地址机构称套接字。
因此就有 套接字 socket = {IP地址 : 端口}
因此每一条TCP连接唯一地被通信两端的两个套接字(端点)所确定。
停止等待协议(stop-and-wait)
停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
1.无差错情况
如上图a所示:A发出分组M1完就暂停发送,等待B的确认。B收到了M1就向A发送确认。A在收到了对M1的确认后,就再发送下一个分组M2。以此下去。
2.出现差错
如上图b所示:B在接受到M1时检测到了差错,就丢弃M1,并什么也不做。A只要超过了一段时间仍然没收到确认,就认为刚才的分组丢失了,就重传之前的分组,这就叫超时重传。
3.确认丢失和确认迟到
如上图a所示:B所发送的对M1的确认丢失了,A在超时重传的时间内没有收到确认,但无法知道是自己发送的分组出错,丢失,或者是B发送的确认丢失了,因此A会重传这个M1,当B收到的重传M1时,会有一下两个动作:(1)不向上层交付,丢掉这个重复的分组。(2)向A发送确认。
如上图B所示,B确认的分组M1迟到了,在超时重传的时间内未返回A,因此A会重传M1,之后当A收到了迟到的确认分组,就会丢弃重复的M1,不向上层交付。
4.总结
向上述的这种可靠传输协议常称为自动重传请求ARP,优点是简单,但是缺点也很明显,就是信道利用率过低。