因为ip层是尽最大努力交付——不可靠的通讯;因此为了保证可靠传输,TCP必须采起适当的措施才能保证两个传输层的通讯变得可靠。理想的通讯是:1.传输的信道不产生差错;2.不管发送方以多快的速度发送,接收方都来得及接收处理数据。可是实际上并不存在这样理想的传输,因此咱们须要采起一些可靠传输的协议,当出现差错的时候让对方重传出现差错的数据(超时重传机制),同时在接收方来不及处理数据的时候,及时告知发送方下降发送数据的速度(滑动窗口机制——TCP报文段首部有一个窗口的字段,就是用来告知发送方,接收方目前能处理的数据的能力)。网络
中止等待就是每发送完一个报文段就中止发送,等待对方进行确认。spa
主要有3种状况:ip
1.无差错的状况通信
2.出现差错数据
3.接收方发送的确认包丢失和确认迟到协议
最简单的状况,发送方A每次发送完一个报文段就设置一个超时计时器,每次都能在超时计时器超时以前接收到接收方B发送回来的确认报文,往复这样进行通讯。时间
这种状况是:接收方B收到了发送方发送过来的TCP报文段,可是在对数据进行校验(TCP报文段首部有校验和字段,用来检测发送过来的报文数据是否出现差错)的时候,发现接收到的报文段出现差错,这个时候接收方B什么也不作(不会通知A说收到了差错的报文段);也多是报文段在传输的过程当中丢失了,这种状况B天然不知道,在这两种状况下,B不会发送任何信息,直到A为刚刚发送的报文段设置的超时计时器超过了时间,就会认为B没有收到刚发送的报文段,就会从新发送刚刚发送的报文段——超时重传co
这种状况是接收方正确的接收到发送方发送的报文段,而且发出确认报文,可是确认报文因为某些缘由丢失了,或者是因为网络延迟没有在发送方设置的关于这个报文段的超时计时器内达到,这个时候——发送方就会从新发送这个报文段,而接收方又收到了重传的这个报文段,会作2件事:1.丢弃这个报文段(由于刚刚已经正确接收过了,而且已经向上一层交付),不向上一层交付;2.向发送方A发送确认报文(不能由于刚刚已经发送了确认就不发送,A之因此重传该报文就是由于没有收到确认;因此须要再次发送确认,否则发送方A就会一直发送……)超时
1.发送方在发送完一个报文段后必须暂时保存已经发送的报文段的副本——为了超时重传的时候使用。
2.分组和确认分组都必须编号,因此才知道是对哪一个发送的分组收到了确认……
3.超时计时器的重传时间的设定——应该比数据在分组传输的平均往返时间更长一些。
中止等待协议很简单,可是有很明显的缺点——信道利用率很低;于是引入了连续ARQ协议