Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1846866
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2388
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(184)

文章存档

2021年(26)

2020年(56)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: 网络与安全

2020-11-19 16:14:59

1. 当请求到达,但是当前主机没有绑定请求端口
2. 连接异常释放:
正常情况是一方发送FIN,等待对端ACK和FIN,接收到FIN后,发ACK,进入TIME_WAIT。但是如果由于某些情况导致异常释放,发送方会丢弃任何待发送数据并且立即发送RST给对端,接收方会区分对端是正常关闭还是异常关闭,应用程序使用的API必须提供产生异常而关闭而不是正常关闭的手段(socket当中为SO_LINGER选项, l_onoff 非零,l_linger为0)。RST报文不会导致另一端产生任何响应,另一端不会进行确认。收到RST的一方将终止该连接,并通知应用层连接复位

3. 检测半打开连接:
如果一方已经关闭或者异常终止连接,而对端却不知道,这样的TCP称为半开的。任何一端的主机异常都可能发生这种情况。只要不打算在半开连接上传输数据,仍旧处于连接状态的一方就不会检测另一方已经出现异常。当一台主机宕机重启之后,之前的客户端如果在这期间不发送数据,不会发现这条连接已经废弃,它仍然认为这条连接可用。当宕机重启之后,客户端发送数据到重启之后的主机,重启之后的主机不认识这个连接,直接发回RST

总结:
可以分为两种情况:a. 主动发RST(对应上面的2); b. 被动接受RST(对应上面的1, 3)
阅读(2072) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~