引言
众所周知,TCP协议是一个面向连接,可靠的传输层的协议,而IP协议是不可靠的网络层协议,IP协议能做到的就是“尽力而为的”交付分组,即不能确保分组一定能从发送方到达接受方,那么TCP协议是如何在不能信赖的网络层上建立可靠的连接确保对方能准确无误的收到分组呢?
在深入了解TCP协议之前,需要先熟悉一些基本的可靠数据传输原理,本文是笔者在阅读《计算机网络:自顶向下方法》中的传输层后做下的笔记总结。注意,TCP协议只是以这些原理为基础,实际还会在这些原理中做出一些改进。
准备
在了解可靠数据传输原理之前,相信大家都会有这样的一个疑问,为什么需要可靠数据传输原理呢?难道底层的信道不能直接做到准确的数据传送么?在数据传送过程中数据会发生哪些损坏?
笔者首先列出,当数据在传送过程中会发生哪些损坏:
- 分组的数据(比特)在传输过程中发生了损坏,即部分比特从0变成了1或者从1变成了0。
- 分组在传送过程中丢失了,比如当分组到达一个中转的路由器时,路由器的输入队列已经满了,此时分组就会溢出,即被丢弃。
- 分组没有按照发送的顺序到达接收方。
因此,可靠数据传输原理就是为了解决上述的问题的。
现在,假设将发送方和接受方分为三层模型,其中,分组通过底层信道传输,底层信道不会对分组进行重新排序,发送方模型如下: