首页 > 代码库 > 【T09】要认识到TCP是一个可靠的,但不是绝对可靠的协议
【T09】要认识到TCP是一个可靠的,但不是绝对可靠的协议
1、稍微想一下就知道,TCP不是绝对可靠的协议,比如:网络断开,主机崩溃,无论TCP如何努力,都无法将数据传给对方。2、考虑应用程序A向应用程序B发送数据的TCP流程,数据流从应用程序A通过他所在主机的TCP/IP栈向下传输,经过几台中间路由器, 通过应用程序B所在主机的TCP/IP栈向上传输,最后到达应用程序B。 特别注意:中间的路由器(即使拥有TCP/IP协议栈)并不涉及TCP层和应用层,只是转发IP数据报, 也就是说,不会在路由器的TCP/IP协议栈向上传输,然后在向下传输,只有在发送端和接收端才有这部分流程。3、考虑一种极端的情况,TCP确认了收到的数据,但是应用程序还没有来得及把这部分数据取走,就崩溃了。 这种情况下,发送端认为接收端已经准确无误地收到了数据,但是接收端的应用程序并没有取到数据。 除此之外,还有其他一些的情况,4、网络中断,如果没有备用的路径,数据传输一直失败,知道传输路径修复好,或者存在了备用的路径。5、对等实体崩溃,也就是对端的应用程序崩溃, 注意:对等实体崩溃与对等实体调用close(windows下调用closesocket)以及exit是无法区分的。 这种情况下,对等实体会发送fin包,表明没有办法再发送数据了。6、对等实体的主机崩溃,这和对等实体崩溃不同,主机崩溃了,没法发送fin给我们。
【T09】要认识到TCP是一个可靠的,但不是绝对可靠的协议
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。