首页 > 试题广场 >

A,B两台机器都正常工作,B机器未监听任何端口.如果A机器向

[单选题]
A,B两台机器都正常工作,B机器未监听任何端口.如果A机器向B机器80端口发送SYN包,会收到何种类型的回包?
  • ACK包
  • FIN包
  • 不会收到回包
  • RST包
连接建立不了就是RST,连接建立起来了就是Fin
发表于 2016-01-19 15:29:49 回复(0)
更多回答
推荐
D
1 端口未打

服务器程序端口未打开而客户端来连接。这种情况是最为常见和好理解的一种了。去 telnet 一个未打开的 TCP 的端口可能会出现这种错误。这个和操作系统的实现有关。在某些情况下,操作系统也会完全不理会这些发到未打开端口请求

比如在下面这种情况下,主机 241 向主机 114 发送一个 SYN 请求,表示想要连接主机 114 40000 端口,但是主机 114 上根本没有打开 40000 这个端口,于是就向主机 241 发送了一个 RST 。这种情况很常见。特别是服务器程序 core dump 之后重启之前连续出现 RST 的情况会经常发生

当然在某些操作系统的主机上,未必是这样的表现。比如向一台 WINDOWS7 的主机发送一个连接不存在的端口的请求,这台主机就不会回应

2 请求超

曾经遇到过这样一个情况 : 一个客户端连接服务器, connect 返回 -1 并且 error=EINPROGRESS 直接 telnet 发现网络连接没有问题。 ping 没有出现丢包。用抓包工具查看,客户端是在收到服务器发出的 SYN 之后就莫名其妙的发送了 RST

比如像下面这样

89 27 两台主机。主机 89 向主机 27 发送了一个 SYN ,表示希望连接 8888 端口,主机 27 回应了主机 89 一个 SYN 表示可以连接。但是主机 27 却很不友好,莫名其妙的发送了一个 RST 表示我不想连接你了

后来经过排查发现,在主机 89 上的程序在建立了 socket 之后,用 setsockopt SO_RCVTIMEO 选项设置了 recv 的超时时间为 100ms 。而我们看上面的抓包结果表示,从主机 89 发出 SYN 到接收 SYN 的时间多达 110ms 。(从 15:01:27.799961 15:01:27.961886 小数点之后的单位是微秒)。因此主机 89 上的程序认为接收超时,所以发送了 RST 拒绝进一步发送数据

3 提前关

关于 TCP ,我想我们在教科书里都读到过一句话, 'TCP 是一种可靠的连接 ' 而这可靠有这样一种含义,那就是操作系统接收到的来自 TCP 连接中的每一个字节,我都会让应用程序接收到。如果应用程序不接收怎么办?你猜对了, RST

4 在一个已关闭的 socket 上收到数

如果某个 socket 已经关闭,但依然收到数据也会产生 RST

编辑于 2016-01-20 10:26:25 回复(3)
Windows下没有返回吧
发表于 2018-03-29 11:47:43 回复(0)
因为B机器未监听任何端口,A又向B的80端口发送了数据包,所以B不会建立连接,会异常结束建立连接,会发送RST包,如果是正常结束的话就会发送FIN包,RST是TCP连接中 出现差错产生的,RST置1可以用来拒绝一个非法的报文段或拒绝打开一个连接
发表于 2015-11-18 10:20:29 回复(0)
rst是复位报文 几种TCP链接中出现rst的情况 1.端口未打开 2,请求超时 3,提前关闭 4,在一个已关闭的socket上出现数据
发表于 2016-03-24 10:09:42 回复(0)
发送RST包的三种情况:
1、到一个不存在的端口的请求;
2、异常终止一个连接
3、监测到半打开的连接
发表于 2016-04-01 10:38:53 回复(0)
连接建立成功:FIN 失败:RST
发表于 2021-04-07 07:20:00 回复(0)
RST是复位报文,TCP连接中出现RST的情况有如下几种: 1:端口未打开 2:请求超时 3:提前关闭 4:在一个已经关闭的socket上收到数据
发表于 2020-03-03 11:33:09 回复(0)
无监听,返回RST包
发表于 2016-07-18 15:48:48 回复(0)
因为B机器未监听任何端口,A又向B的80端口发送了数据包,所以B不会建立连接,会异常结束建立连接,会发送RST包,如果是正常结束的话就会发送FIN包,RST是TCP连接中 出现差错产生的,RST置1可以用来拒绝一个非法的报文段或拒绝打开一个连接

rst是复位报文 几种TCP链接中出现rst的情况 1.端口未打开 2,请求超时 3,提前关闭 4,在一个已关闭的socket上出现数据
发表于 2017-04-08 20:49:13 回复(0)
因为B机器未监听任何端口,A又向B的80端口发送了数据包,所以B不会建立连接,会异常结束建立连接,会发送RST包,如果是正常结束的话就会发送FIN包,RST是TCP连接中 出现差错产生的,RST置1可以用来拒绝一个非法的报文段或拒绝打开一个连接
发表于 2022-11-15 01:10:23 回复(0)
成功 FIN失败 RST 异常结束
发表于 2022-09-07 04:19:37 回复(0)
RST是复位报文,TCP连接中出现RST的情况有如下几种:
1:端口未打开
2:请求超时
3:提前关闭
4:在一个已经关闭的socket上收到数据
发表于 2018-06-20 15:49:45 回复(0)
RST置1可以用来拒绝一个非法的报文段或拒绝打开一个连接
发表于 2017-09-17 21:51:26 回复(0)
B机器未监听任何端口 ”是什么意思?
发表于 2016-08-03 17:01:00 回复(1)