TCP是在不可靠的的端到端网络协议(IP)实现的可靠的数据传输协议,换句话说就是IP层不能保证数据到接受方一定是有序,无丢失的,但是在上层的TCP需要去用一些机制保证下层过来的数据是有序无丢失的,更准确的说是TCP也不能使数据是不丢失有序的,但是他们的机制可以使这些丢失的数据,无序的数据 能够有序并且不丢失的到达目的地~~~
所以在理解TCP的可靠传输机制之前先思考几个问题~~
1、各种可靠机制是在什么样的情况下需要的,解决了什么样的问题?
2、从0到1构建一个可靠的传输协议
构造可靠传输协议
1、在一个可靠的信道上传输数据rdt1.0
因为是在一个可靠的信道上传输,所以在接受方和发送的状态机中,没有过多的处理,发送方将数据封包然后发送给接受方,接受方等到数据来后解包就继续向上传递数据,而且有了可靠的信道,接受方就不需要提供任何反馈,因为发送方肯定认为数据会无误的到达接受方
2、具有比特差错的可靠传输 rdt 2
rdt2.0
这里可以举一个小例子,比如两个人通话,当信号出现差错时,说话的一方会问一遍你刚刚是否听清楚了,那么你就需要回复,听清楚了或者没听清你在讲一遍,那么说话的一方就会将刚刚的话复述一遍(自动重传机制)
这个例子中出现了三个机制来处理(听不清的情况)
- 差错检测:以接受方检测到合适出现了比特差错在UDP中使用了检验和(需要额外的比特)
- 接受方反馈:当接受方检测到错误的时候需要返回信息给发送方如肯定确认(ACK)和否认确认(NAK)
- 重传:接受方接受到有差错的分组时需要重传有差错的分组(不是所有分组)