【T09】要认识到TCP是一个可靠的,但不是绝对可靠的协议

一、稍微想一下就知道,TCP不是绝对可靠的协议,好比:网络断开,主机崩溃,不管TCP如何努力,都没法将数据传给对方。
二、考虑应用程序A向应用程序B发送数据的TCP流程,数据流从应用程序A经过他所在主机的TCP/IP栈向下传输,通过几台中间路由器,
    经过应用程序B所在主机的TCP/IP栈向上传输,最后到达应用程序B。
    特别注意:中间的路由器(即便拥有TCP/IP协议栈)并不涉及TCP层和应用层,只是转发IP数据报,
    也就是说,不会在路由器的TCP/IP协议栈向上传输,而后在向下传输,只有在发送端和接收端才有这部分流程。
三、考虑一种极端的状况,TCP确认了收到的数据,可是应用程序尚未来得及把这部分数据取走,就崩溃了。
    这种状况下,发送端认为接收端已经准确无误地收到了数据,可是接收端的应用程序并无取到数据。
    除此以外,还有其余一些的状况,
四、网络中断,若是没有备用的路径,数据传输一直失败,知道传输路径修复好,或者存在了备用的路径。
五、对等实体崩溃,也就是对端的应用程序崩溃,
    注意:对等实体崩溃与对等实体调用close(windows下调用closesocket)以及exit是没法区分的。
    这种状况下,对等实体会发送fin包,代表没有办法再发送数据了。
六、对等实体的主机崩溃,这和对等实体崩溃不一样,主机崩溃了,无法发送fin给咱们。
相关文章
相关标签/搜索