【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是一个可靠的,但不是绝对可靠的协议的更多相关文章
- Kcptun 是一个非常简单和快速的,基于KCP 协议的UDP 隧道,它可以将TCP 流转换为KCP+UDP 流
本博客曾经发布了通过 Finalspeed 加速 Shadowsocks 的教程,大家普遍反映能达到一个非常不错的速度.Finalspeed 虽好,就是内存占用稍高,不适合服务器内存本来就小的用户:而 ...
- 与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室
原文:与众不同 windows phone (30) - Communication(通信)之基于 Socket TCP 开发一个多人聊天室 [索引页][源码下载] 与众不同 windows phon ...
- Socket TCP Server一个端口可以有多少个长连接?受到什么影响?linux最大文件句柄数量总结
Socket TCP Server一个端口可以有多少个长连接? 网上答案很多,不知道那个才是正确的 理论上是无限的 16.Linux中,一个端口能够接受tcp链接数量的理论上限是? A.1024 B. ...
- XGoServer 一个基础性、模块完整且安全可靠的服务端框架
作者:林冠宏 / 指尖下的幽灵 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 博客:http://www.cnblogs.com/linguan ...
- TCP实现一个简易的聊天室 (Unity&&C#完成)
效果展示 TCP Transmission Control Protocol 传输控制协议 TCP是面向连接的流模式(俗称:网络流).即传输数据之前源端和终端建立可靠的连接,保证数据传输的正确性. 流 ...
- python使用tcp实现一个简单的下载器
上一篇中介绍了tcp的流程,本篇通过写一个简单的文件下载器程序来巩固之前学的知识. 文件下载器的流程如下: 客户端: 输入目标服务器的ip和port 输入要下载文件的名称 从服务器下载文件保存到本地 ...
- 使用网络TCP搭建一个简单文件下载器
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 目录 一丶项目介绍 二丶服务器Server 三丶测试TCP server服务器 四丶客户端Client 五丶测试客户端向服务器下载 ...
- 一个比NPM更快更安全可靠的JavaScript包管理工具——Yarn
yarn安装: npm intall -g yarn 查看安装是否成功: yarn -v yarn常用的命令以及和npm的对照如下: 更详细的请查看官方文档
- TCP的三次握手和四次挥手和UDP协议
目录 TCP 三次握手 四次挥手 为什么建立连接是三次而断开连接是四次呢? TCP和UDP的区别 TCP数据包的封装 UDP数据包封装 SCTP SYN Flood泛洪攻击 TCP TCP(Trans ...
随机推荐
- BZOJ3926 [Zjoi2015]诸神眷顾的幻想乡 字符串 SAM
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ3926.html 题目传送门 - BZOJ3926 题意 给定一个有 $n$ 个节点,最多只有 $20$ ...
- day3逻辑运算符
今天主讲逻辑运算符 以下是老师的大纲: # + - * / % ** // # == != <> # count = count + 1 count += 1 # count = ...
- 进程用manager 和Queue 实现进程消费者生产者
注意 : mgr = multiprocessing.Manager() 生成了一个守护进程,如果主进程完毕,mgr这个实例也没有了,所以在结尾加了mgr.join()才能运行 代码: import ...
- exporter API(导出、输出器api)moodel3.3
Moodle[导出器]是接收数据并将其序列化为一个简单的预定义结构的类.它们确保输出的数据格式统一,易于维护.它们也用于生成外部函数的签名(参数和返回值) 外部函数定义在moodle/lib/exte ...
- Java 之 CSS
1.CSS a.定义:CSS 指层叠样式表 b.意义:为了解决内容与表现分离的问题 c.特点:多个样式可层叠为一 2.用法: a.行内样式:style <span style="col ...
- Nowcoder contest 370H Rinne Loves Dynamic Graph【分层图最短路】
<题目链接> 题目大意:Rinne 学到了一个新的奇妙的东西叫做动态图,这里的动态图的定义是边权可以随着操作而变动的图.当我们在这个图上经过一条边的时候,这个图上所有边的边权都会发生变动. ...
- Tomcat v9.0 Could not publish to the server. java.lang.IndexOutOfBoundsException
今天使用Tomcat启动一个java项目,出现报错: Could not publish to the server. java.lang.IndexOutOfBoundsException 众寻之下 ...
- Vue渲染列表,在更新data属性后,列表未更新问题
初始化代码如下var tableModel = new Vue({el: '#datatable',data: {items: listData}}); 当我对列表操作时,listData=>n ...
- 彻底理解this 的值到底是什么?
作者:方应杭 来源:知乎 你可能遇到过这样的 JS 面试题: var obj = { foo: function(){ console.log(this) } } var bar = obj.foo ...
- Fenng对于管理技术团队的思考
丁香园CTO冯大辉谈技术团队管理 http://www.infoq.com/cn/interviews/fdh-team-manager http://www.geekpark.net/topics/ ...