tcp简介:
tcp是tcp/ip协议簇中一个非常重要的协议之一,它属于IOS七层协议之中的传输层协议。
tcp的几大特点:
1.面向连接的可靠传输层协议
2.tcp提供全双工通信
3.每条tcp连接只能是点对点连接(所谓的点就是套接字,所谓套接字就是IP:PORT)
4.tcp是面向字节流的也就是说tcp将应用层交付下来的数据看成一连串无结构的字节流
tcp的可靠传输原理:
介绍tcp的可靠传输原理之前我们需要先知道在理想状态下的可靠传输必须满足什么样的特点?
1.可靠传输的通信信道不能够出现差错,即使出现了差错接收方能够及时通知发送方,发送方在规定的时间内可以重传出现出错的数据。
2.不论发送方以什么样的速度发送出数据,接受方都能来得及接受,否则就会出现丢包的情况。
但是以上两点只能存在于理想状态下,在实际中网络状况一般来说比较复杂,是不具备理想状态下的两个条件的。
以下是TCP的可靠工作原理。
1.停止等待协议:
停止等待协议的特点:
1)分组只有0,1两个序号。
2)发送方没发送一个分组后就停止发送,直到收到接受方发回来的确认之后才会发送下一个分组。
3)有超时重传机制。
4)接收方收到有差错的包就会丢弃然后什么也不会做。
停止等待协议中会遇到各种情况:
1)无差错情况。
假设A是发送方,B是接收方。
A发送数据,B正确接收到了数据之后并且给A发回一个确认,A在规定时间之内收到了这个确认之后在发送下一个数据。
2)A发送的数据包丢失的情况。
A发送的数据包M1丢失,B没有收到。当然B不会发送对M1的确认,所以A在规定时间内没有收到B的确认而重新传输M1,这次B收到了并且给A发回了确认,A按时收到确认之后在接着发送下一个数据包。
3)B发回的确认丢失了。
A给B发送M1,B收到后发回对M1的确认,但是确认丢失了,导致A没能按时收到,超时后A又会重传M1,B收到之后发现是重复的包就会丢弃,然后还要给A发送第一次收到M1的确认。A收到确认后发送之后的数据。
4)B发回的确认延时到达。
A给B发送M1,B发回的确认在网络中滞留了一段时间导致A没有按时收到B的确认又会重传M1,这次B收到了重复的M1之后就丢弃,而这个时候A恰好收到了滞留在网络中的确认,没过多久又收到了重传M1之后B发回的第一次发送M1的确认。即这个时候A收到了两个都是对于M1的确认,收到重复确认后A也会丢掉重复的确认,接着发送其他数据。
(先写这么多,吃饭去了。。。。)