把TCP的三次握手改成两次握手,会造成死锁吗?为什么?

pagen_hd 2009-06-24 11:25:21
期末考题,拜托大家了。
...全文
2343 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenmeilizhuce 2012-01-06
  • 打赏
  • 举报
回复
hao
yiyefangzhou24 2012-01-06
  • 打赏
  • 举报
回复
什么叫死锁?有很多种用途只用两次握手啊,比如SYN半开扫描
songdm2009 2009-10-04
  • 打赏
  • 举报
回复
学习了
  • 打赏
  • 举报
回复
1) 第1步:客户端向服务器发送一个同步数据包请求建立连接,该数据包中,初始序列号(ISN)是客户端随机产生的一个值,确认号是0;

2) 第2步:服务器收到这个同步请求数据包后,会对客户端进行一个同步确认。这个数据包中,序列号(ISN)是服务器随机产生的一个值,确认号是客户端的初始序列号+1;

3) 第3步:客户端收到这个同步确认数据包后,再对服务器进行一个确认。该数据包中,序列号是上一个同步请求数据包中的确认号值,确认号是服务器的初始序列号+1。

你怎么改成2步?服务器的seq的序列号不用确认的?
你们老师连怎么改都没说清
jieao111 2009-06-25
  • 打赏
  • 举报
回复
死锁容易产生歧义
liao05050075 2009-06-25
  • 打赏
  • 举报
回复 1
TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。

如果采用两次的话,会出现下面这种情况。
比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;
于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。
传完东西后,断开。

结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。
或者这就是你老师所说的死锁
haggard_hunan 2009-06-25
  • 打赏
  • 举报
回复
嗯,TCP/IP啊!

你们老师要问的是这样,如果采用二次握手,没有每三次的话,打个比方:
客户端A - 服务器B

服务器B在回应A的序列号,从理论上说如果A能正常收到服务器B的序列号,二次也是没有关系的,关键是网络不是100%正常的,如果每二次的确认包丢了以后,A是不知道B的超始序列号的,这样如果服务器B发消息给A,A就会把消息全丢了,这样就会导致B不停的重发消息(因为B已经认为链路建好了).但是由于A每一次就没有收到B的确认以及起始序列号,导致B就会不停重发,从而导致B会发消息发死了,你们老师认为的死锁是这样的,如果是三次握手的话,每二次如果没有成功,就不会有每三次,也不会有后会的消息重发,即使每三次失败了,A也知道B这个连接的起始序列号,可以要求B重发每二次的起始序列号就可以了.

说多了,表达的可能不是很清楚,详细去看TCP/IP卷啊.

知道半开攻击原理吗?,半连接就是使用了这样原理攻击服务器的!
Wind_Runner 2009-06-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liao05050075 的回复:]
TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。

如果采用两次的话,会出现下面这种情况。
比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;
于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。
传完东西后,断开。

结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。
或者这…
[/Quote]

B发信息给A,A也要确认,之后连接才算建立成功的;
另外,TCP有保活定时器可以查询A机是否还存在这个连接,也不会造成死锁啊
blueink_200451 2009-06-25
  • 打赏
  • 举报
回复
TCP的三次握手吗?我记得是“三次半”握手。
amossavez 2009-06-25
  • 打赏
  • 举报
回复
很容易死锁
iambic 2009-06-25
  • 打赏
  • 举报
回复
楼主厉害,期末题都能盗出来!
arong1234 2009-06-24
  • 打赏
  • 举报
回复
没听说过会造成死锁,我不明白你们老师这个问题题意是什么

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧