用一个小的例子来说明为什么TCP采用三次握手才能保证连接成功
关于TCP的三次握手,有很多朋友还在疑惑为什么是三次,而不是两次,LZ想了一下用一个例子来说明最好。
客户(打电话给前台): 喂,你好! (一次握手)
然后传送文件过去。
(如果前台没有人,你文件传送过去也没人处理啊。。。)
客户(打电话给前台):喂,你好!(第一次握手)
前台: 你好!请问什么事情?(第二次握手)
然后客户直接传送文件过去。
几秒钟后,前台:你好!请问你哪位,什么事情?(服务器超时重发SYN+ACK)
又几秒钟后,前台:你好!请问你哪位,什么事情?(服务器超时重发SYN+ACK)
。。。
半分钟后,前台:那个瓜娃子,骚扰嗦!(挂掉电话)(服务器重发次数达到,不再重发)
(OK,客户传送过去的文件还是没有人处理。。。)
客户(打电话给前台):喂,你好!(第一次握手)
前台: 你好!请问什么事情?(第二次握手)
客户:我是XXX,你接收传真处理一下。(第三次握手)
然后客户传送文件过去。
前台安排业务员去拿好传真,处理完并与客户直接沟通。(fork一个独立进程与客户端交互)
业务员接手与该客户的联系,并处理客户的各种请求。
前台继续等待其他客户打来电话。(服务器程序继续阻塞等待其他连接请求)
(OK,公司一片和谐,各司其职,客户的需求马上得到处理)
通过LZ以上的描述,大家应该知道为什么是三次握手,而不是两次握手了吧,不仅仅客户端要确认服务器端能连接,服务器也要确保与客户端能连接,这样才能是有效的连接。
用一个小的例子来说明为什么TCP采用三次握手才能保证连接成功的更多相关文章
- java连接mysql的一个小例子
想要用java 连接数据库,需要在classpath中加上jdbc的jar包路径 在eclipse中,Project的properties里面的java build path里面添加引用 连接成功的一 ...
- java操作xml的一个小例子
最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要 ...
- MVVM模式的一个小例子
使用SilverLight.WPF也有很长时间了,但是知道Binding.Command的基本用法,对于原理性的东西,一直没有深究.如果让我自己建一个MVVM模式的项目,感觉还是无从下手,最近写了一个 ...
- 关于SVN配置文件的一个小例子
1 背景假设 厦门央瞬公司是一家电子元器件设备供应商,其中有个ARM部门,专门负责ARM芯片的方案设计.销售,并在北京.上海各设立了一个办事处.对于工作日志,原先采用邮件方式发给经理,但是这种方式 ...
- 使用Trinity拼接以及分析差异表达一个小例子
使用Trinity拼接以及分析差异表达一个小例子 2017-06-12 09:42:47 293 0 0 Trinity 将测序数据分为许多独立的de Brujin grap ...
- TCP编程的一个小例子
TCP程序的服务器端与客户端的流程图 例子:服务器端等待客户端连接,若连接成功,则用户可以通过客户端向服务器端发送任意字符串,服务器端在收到字符串后,输出相关信息,在把接受到的字符串重新发生给客户端. ...
- 关于ExpandableListView的一个小例子
喜欢显示好友QQ那样的列表,可以展开,可以收起,在android中,以往用的比较多的是listview,虽然可以实现列表的展示,但在某些情况下,我们还是希望用到可以分组并实现收缩的列表,那就要用到an ...
- Web Api系列教程第2季(OData篇)(一)——OData简介和一个小应用
第一季的链接以及系列导航:http://www.cnblogs.com/fzrain/p/3490137.html 在这里,首先要感谢Taiseer Joudeh不断的为我们带来最新的技术分享,楼主对 ...
- 【开源一个小工具】一键将网页内容推送到Kindle
最近工作上稍微闲点,这一周利用下班时间写了一个小工具,其实功能挺简单但也小折腾了会. 工具名称:Simple Send to Kindle Github地址:https://github.com/zh ...
随机推荐
- 解决time命令输出信息的重定向问题
解决time命令输出信息的重定向问题 time命令的输出信息是打印在标准错误输出上的, 我们通过一个简单的尝试来验证一下. [root@web186 root]# time find . -name ...
- 【JavaScript框架封装】公共框架的封装
/* * @Author: 我爱科技论坛 * @Time: 20180706 * @Desc: 实现一个类似于JQuery功能的框架 // 公共框架 // 种子模块:命名空间.对象扩展.数组化.类型的 ...
- 3.1、Ansible命令简要说明及初步使用
1.Ansible命令 1.1 Ad-hoc说明 Ansible中有一个很重要的功能就是可以执行ad-hoc命令,它表示即时.临时的意思,即表示一次性的命令.与之相对的是ansible playboo ...
- CentOS 笔记(五) 常用工具
远程 :XShell6 ,PuTTy FPT:Xfpt ,pscp.exe
- Android学习总结(3)——Handler深入详解
什么是Handler Handler是Android消息机制的上层接口,它为我们封装了许多底层的细节,让我们能够很方便的使用底层的消息机制.Handler的最常见应用场景之一便是通过Handler在子 ...
- JavaScript(正则表达式一)
-------------------- 创建正则表达式: 验证匹配的两个方法 //正则表达式测试 /* var p=new RegExp("Box","i") ...
- 简洁又快速地处理集合——Java8 Stream(上)
Java 8 发布至今也已经好几年过去,如今 Java 也已经向 11 迈去,但是 Java 8 作出的改变可以说是革命性的,影响足够深远,学习 Java 8 应该是 Java 开发者的必修课. 今天 ...
- arp与免费arp的差别,arp老化
免费arp:应用场景: case1:PC通过DHCP申请地址.在获取到IP地址后,会发送免费ARP,目的用于探測同一网段时候存在同样的IP地址终端,防止IP冲突. case2:PC的MAC地址发生变化 ...
- 【ruby项目,语言提交检查(一)】怎样高速学习ruby ?
怎样高速学习ruby ? 学习语言最快的思路. 变量,常量,变量类型,操作符. 逻辑语句如 if, else, switch, for, foreach, do while, break, 等等.要学 ...
- 多线程的join和interrupt
你可以在一个线程1里添加线程2对象thread的join方法来让线程1处于等待的状态 ,同时也可以调用thread.interrupt()来打断等待状态,此处注意 interrupt应在线程1开启st ...