能ping通,TCP就一定能连通吗?

本文探讨了网络中TCP协议和ping命令走的路径可能不同的情况。即使能ping通,使用TCP连接并不保证一定成功,因为它们可能遵循不同的网络路径。通过路由表和等价多路径(ECMP)策略,路由器会选择最优路径,而TCP和ping的五元组差异可能导致它们选择不同的路径。了解这一点有助于在遇到TCP连接不稳定时进行问题排查。
摘要由CSDN通过智能技术生成

平时,我们想要知道,自己的机器到目的机器之间,网络通不通,一般会执行ping命令

一般对于状况良好的网络来说,你能看到它对应的loss丢包率为0%,也就是所谓的能ping通。如果看到丢包率100%,也就是ping不通

                                                                              ping正常

                                                                             ping不通 

那么问题来了,假设我能ping通某台机器,那这时候如果我改用TCP协议去发数据到目的机器,也一定能通吗?

或者换个问法,ping和tcp协议走的网络路径是一样的吗?

这时候第一反应就是不一定,因为ping完之后中间链路里的某个路由器可能会挂了(断电了),再用TCP去连就会走别的路径。

也没错。但假设,中间链路没发生任何变化呢?

我先直接说答案。

不一定,走的网络路径还是有可能是不同的。

今天就来聊聊为什么。

我之前写过一篇《断网了,还能ping通 127.0.0.1 吗?》,里面提到过ping数据包和tcp数据包的区别

                                                ping和TCP发消息的区别

我们知道网络是分层的,每一层都有对应协议。

                                            五层网络协议对应的消息体变化分析

而这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。

不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。

如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢?

我们就从路由这个话题聊起吧。

网络路径

在我们的想象中,当我们想在两台机器之间传输数据。本机和目的机器之间会建立一条连接,像一条管道一样,数据从这头到那头。这条管道其实是我们为了方便理解而抽象出来的概念。

实际上,我们将数据包从本地网卡发出之后,会经过各种路由器(或者交换机),才能到达目的机器。

这些路由器数量众多,相互之间可以互连,连起来之后就像是一张大网,所以叫"网络"可以说是非常的形象。

                                                            路由器构成的网络

考虑到交换机有的功能,路由器基本上都支持,所以我们这边只讨论路由器。

那么现在问题来了,路由器收到数据后,怎么知道应该走哪条路径,传给哪个

在测试服务器端口是否能ping时,我们常不是使用ping命令,因为ping常用来测试网络层的连通性,即ICMP协议,而不是TCP/UDP端口的连通性。要测试服务器端口是否开放,我们一般使用如下的工具和方法: 1. Telnet命令:Telnet是一种网络协议,它允许用户使用终端程序连接到远程服务器。可以使用telnet命令来测试服务器端口是否开放。例如,要测试服务器的80端口是否开放,可以在命令行中输入: ``` telnet [服务器IP] 80 ``` 如果端口开放,将会看到一些响应信息;如果端口没有开放或者服务器不接受该端口的连接请求,则会显示连接超时或者无法连接的错误信息。 2. 使用Nmap工具:Nmap是一个网络探测和安全审核的工具。它可以过发送原始IP数据包来探测网络,发现网络上的设备,并且可以对这些设备的端口进行扫描。例如,要测试一个特定的端口,可以使用: ``` nmap -p [端口号] [服务器IP] ``` 如果端口是开放的,Nmap会显示端口的状态。 3. 使用Netcat工具:Netcat,也被称为“网络瑞士军刀”,可以用来读取和写入数据网络连接。它常被用于创建后门、端口扫描和分析网络数据。要测试端口是否开放,可以在监听模式下运行Netcat: ``` nc -zv [服务器IP] [端口号] ``` 参数-z表示扫描模式,不发送数据;参数-v表示详细输出。如果端口开放,Netcat会打印出相应的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值