TCP为什么是三次握手,而不是两次
来源:互联网 发布:超级特工软件 编辑:程序博客网 时间:2024/04/28 09:44
1. TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。
如果采用两次的话,会出现下面这种情况。
比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;
于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。
传完东西后,断开。
结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。
2. 三次握手改成仅需要两次握手,死锁是可能发生
考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁
如果采用两次的话,会出现下面这种情况。
比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;
于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。
传完东西后,断开。
结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。
2. 三次握手改成仅需要两次握手,死锁是可能发生
考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁
0 0
- TCP为什么是三次握手,而不是两次
- TCP建立连接为什么是三次握手而不是两次握手
- 为什么TCP是三次握手而不是两次握手,为什么是四次挥手
- 为什么TCP链接要三次握手而不是两次握手-雅虎
- 为什么TCP连接请求要三次握手而不是两次
- TCP/IP连接为什么要三次握手,而不是两次
- 为什么tcp建立连接是三次握手而不是两次握手或者四次握手?(笔试面试常考)
- TCP 为什么是三次握手,为什么不是两次或四次?
- TCP 为什么是三次握手,为什么不是两次或四次?
- TCP 为什么是三次握手,为什么不是两次或四次?
- TCP 为什么是三次握手,为什么不是两次或四次?
- 为什么是三次握手而不是两次握手为什么是四次挥手
- 为什么是三次握手而不是两次握手,为什么是四次挥手
- TCP为什么是三次握手不是两次四次呢?
- TCP三次握手,为什么是三次握手
- TCP为什么是三次握手
- 为什么TCP是三次握手
- TCP为什么是三次握手?
- 关于对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾
- 数据库事务、锁
- AVL树的java实现
- Java Web基础知识之Servlet(3):Session管理
- Linux中MongoDB的安装和配置方法
- TCP为什么是三次握手,而不是两次
- Java千百问_05面向对象(004)_java接口到底是什么
- 递归求线性表的最大值
- 纯css实现三级菜单栏
- Redis通用操作命令
- linux系统内存占用高的问题
- Mac sublime text 3 文件重命名
- 任务调度~Quartz.net实现简单的任务调试
- redis之数据结构探究