坑爹面试官,一个网络连通性,把我干哑火了,无理取闹还是我太菜?

一、写在开头

最近有同学私信说自己去面试时,被面试官一个小问题给难住了,一个关于网络连通性的问题,面试官问这位同学:

"日常中,如何测试两台主机之间的网络连通性,网络延迟,端口是否开放?并说一说原理"

这种问题在过完的面试中从没见过,毕竟太细小了,对于任何一个有工作经验的程序员来说,这都不算是问题,但你让我去说一说它们的原理,我也会一时语塞,并不是我太菜,而是面试官太无理取闹!

二、PING

2.1 PING的使用

Ping是一个非常非常常用的网络测试工具,经常用来测试网络中主机之间的连通性和网络延迟。无论是Windows还是Linux系统下都常用。

使用方式:ping ip 或者 ping 域名

我们可以在DOS窗口中键入"ping /?"打开指令帮助页面,帮我们更好的使用该命令。

现在,我们以百度为例,我们ping一下www.baidu.com的网址:

如上图就是我们本地ping百度域名的一个过程及反馈结果,可见网络连通性良好,响应时间18ms,如果时间过长,说明网络延迟较大,我们还可以通过-n 或者-i 以及-t 来测试网络承载能力。

2.2 PING的原理

ping命令检测网络连通性的原理主要是依赖于网络层ICMP(互联网控制报文协议)协议实现。主要形式是通过向目标主机发送ICMP请求报文和接受ICMP响应报文。如果请求的是域名,则会通过DNS域名系统解析为对应主机IP地址,再发送报文。

  • PING 命令会向目标主机发送 ICMP Echo Request。
  • 如果两个主机的连通性正常,目标主机会返回一个对应的 ICMP Echo Reply。

三、Telnet

telnet(远程登录协议 ),它是一个基于TCP协议的应用层协议,经常用于测试网络及端口占用情况。我们通过telnet ip port命令的方式去连接远程服务器,连接失败表示端口未占用。否则表示被占用。

Telnet 协议的最大缺点之一是所有数据(包括用户名和密码)均以明文形式发送,这有潜在的安全风险。这就是为什么如今很少使用 Telnet,而是使用一种称为 SSH 的非常安全的网络传输协议的主要原因。

相关推荐
JavaBuild2 天前
《一篇就够系列》之HTTP详解,覆盖高频面试考点!
java成长计划
JavaBuild19 天前
优秀的面试官!通过一个问题考察了所有网络编程知识点
java成长计划
JavaBuild24 天前
NIO实现聊天室之:一切都要从网络编程的基础开始聊起!
java成长计划
JavaBuild3 个月前
NIO的三大核心组件详解,充分说明为什么NIO在网络IO中拥有高性能!
java成长计划
JavaBuild4 个月前
面试官:transient关键字修饰的变量当真不可序列化?我:烦请先生教我!
java成长计划
JavaBuild4 个月前
面试官:告诉我为什么static和transient关键字修饰的变量不能被序列化?
java成长计划
JavaBuild4 个月前
关于面试被面试官暴怼:“几年研究生白读” 的前因后果
java成长计划
JavaBuild4 个月前
面试官:Java中缓冲流真的性能很好吗?我看未必
java成长计划