最后更新:2022-05-08 03:05
有几个因素使得建立联系成为不可能。
本文件审查了与Windows和Linux所见情况不同的两种情况。
第一,连接的主机不在网络中。
第二种情况是,东道主与网络连接,但无法提供相关服务。
还有其他Linux内核版本。 我使用 Ubuntu 14. 04 LTS 版本 。
一. 关于网址的通信让我解释一下为什么 管道地址太重要了 不能插手
我的服务器有两个IP地址,一个是本地网络卡,一个是虚拟网络卡。
Linux在虚拟机器上也使用虚拟网页卡IP地址。
在实验中,我们将连接到一个不存在的主机, 找出如何确保这个主机不存在, 然后拨这个pip地址。
二。主机未连接到网络 。对一个Linux系统进行两次测试
在 Linux 上, 使用 tcpdump 命令来包装。 通常程序路径是..unp/tools/tcpclient/cli.c.
开始 tcpdumpp
$ sudo tcpdump port 50001
向一个不存在的主机启动另一个终端, 并注意此 IP 地址与您的 Linux 在同一区域没有连接, 我的 Linux 主机为 80 个区块, 将连接到 165 个区块 。
$ ./cli 192.168.165.2 50001
IP 地址表示主机不存在, 但客户端不确定主机是否在网络中 。
在此,连续进行了两次测试,结果见图1和图2。

图1 第一次实验

图2 第二次实验
在图表中,我用红色突出显示一个相对时间, 左边的时间显示自第一个SYN以来的时间, 而括号内递增时间是最后一个SYN发送前的时间, 我用红色突出显示一个相对时间, 左边的时间显示第一个SYN以后的时间, 而括号内的时间代表了发送最后一个SYN之前的时间。
我们不妨审查两个实验的下列结果:
因为请求被回溯了四次, 客户发送SYN 之后。
第一次大约需要1秒, 第二次大约2秒, 第三次大约4秒, 第四次大约8秒。
第六,主机返回并非真正存在的 RST 段 。
2.2.2 视窗7评价
在 Windows 7 上打开 OmniPeek, 而不是虚拟网络卡, 如果你用网络卡连接到互联网。
下一步, 连接到与 tcp_ client 连接的主机 。我的IP地址在Windows 7是..目的地IP地址和连接主机不应在同一部分。
开始和OmniPeek一起抓包
使用 cmd 连接到目标主机 。
F: ools> tcp_client 192.168.165.2 50001
图3说明了对Windows 7进行的三项研究的结果。

图3:三个视窗测试
如图3所示,传输后, Windows 发送了第一个 SYN 段 。我等不及等船船的尾声了结了有两次重新传送。总共发送了三个SYN段。如果第三发SYN接收不到ACK,超时后,连接函数返回错误。
此外,我们发现第一次超时大约3秒,第二次大约6秒。
三. 主机与网络连接,但服务没有运行。对一个Linux系统进行三次测试
这里只有一个测试。实验和前方的唯一区别是 连接的主机是我的。
./cli 192.168.166.107 50001

图4:安装视窗主机
根据图4中的结论,Linux将SYN段交付目标主机,然后是RST段,连接功能直接将错误返回。
三.2 视窗测试
要连接到 Windows 上的 Linux, 请使用 tcp_ client 。
tcp_client.ext 192.168.80.130 50001

图5 视窗测试
如你所见, Windows 皮肤很强壮, 即使失去了 RST 段, 另一面也不会放弃并两次传输 SYN 段 。
4. 总结我知道TCP在应对 连接形成异常时会做什么
Windows和Linux之间是有区别的。
本文由 在线网速测试 整理编辑,转载请注明出处。