0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

字节面试:连接一个不存在的IP地址,会发生什么?

dyquk4xk2p3d 来源:良许Linux 2023-02-21 09:47 次阅读

分享两个字节面试题,都是基于场景问的网络问题。

Q1:客户端连接一个不存在的 IP 地址,会发生什么?

Q2:客户端连接一个存在的 IP 地址但是端口不存在,会发生什么?

PS:这里的「连接」指的是 TCP 连接。

这类的场景问题,如果你没有系统化的网络知识体系,只靠背八股文的话,你就遭老罪喽。

接轨 B 站潮流:省流,我直接给出结论

Q1:客户端连接一个不存在的 IP 地址,会发生什么?

这个问题要分两种情况来思考,不同的情况得到的结论是不同的。

第一个情况:目标 IP 地址和客户端的 IP 地址是同一个局域网(网络号相同)。

第一种情况,客户端无法发出 SYN 报文,主要卡在数据链路层。

因为目标地址不存在 IP 地址,客户端的内核在发 arp 请求的时候,广播询问这个目标 IP 地址是谁的,由于网络中不存在该目标 IP 地址,所以没有设备应答客户端的 arp 请求。

由于客户端无法拿到目标设备的 MAC,这样就没办法组装 MAC 头的信息,所以 SYN 报文无法发送出去。

第二个情况:目标 IP 地址和客户端的 IP 地址不在同一个局域网(网络号不同)。

第二种情况,客户端会先将 SYN 报文发给路由器,然后路由器会继续转发。

由于目标 IP 地址是不存在的,该 SYN 报文会在网络中消亡,因此客户端是不会收到对 SYN 报文的确认报文的,接着客户端会触发超时重传,重传 SYN 报文,直到重传的次数达到最大次数后,客户端的连接就会被释放。

可能有的同学好奇,为什么这种情况客户端的 SYN 报文可以发出来?

因为当目标 IP 地址和客户端 IP 地址不在同一个局域网时,客户端客通过路由表的判断,判断到下一步是要将网络报文发送给路由器。

ae0b4aac-b177-11ed-bfe3-dac502259ad0.png

这时候数据链路层的 arp 请求,会广播询问 IP 地址(路由器 IP 地址)是谁的,路由器发现是自己的 IP 地址,于是就会将自己的 MAC 地址告诉客户端。

然后客户端的网络报文中 MAC 头的「目标 MAC 地址」填入的就是路由器的 MAC 地址,于是 SYN 报文就可以发送出去了。

由于目标 MAC 地址是路由器的,所以就会被路由器接收,然后路由器继续通过路由表的判断,转发给下一个路由器,直到找到目标设备。

Q2:客户端连接一个存在的 IP 地址但是端口不存在,会发生什么?

客户端连接的目标 IP 地址是存在的,那么 SYN 报文就能正确的抵达到目标设备。

目标设备收到 SYN 报文后,发现端口号并没有被进程监听,这时候目标设备的内核就会回 RST 报文。

客户端收到 RST 报文后,就会释放连接。

.......

至此,结论已说完。

不知道你们会不会觉得信息量很大,如果你觉得信息量大,那么你该补补网络知识啦。

第二题不难,难在的是第一题,如果你没有把两台电脑之间是怎么通信的搞清楚,那么你是无从下手回答的,所以建立好体系化的网络知识,面对这类的场景题目,就能做到举一反三了。

最后再提一个问题:客户端发送了一个目标 IP 地址存在但是端口不存在的 UDP 报文,UDP 没有像 TCP 那样的 RST 报文,此时会发生什么?

就酱,溜啦溜啦!

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IP
    IP
    +关注

    关注

    5

    文章

    1404

    浏览量

    148272
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1067

    浏览量

    50839
  • 客户端
    +关注

    关注

    1

    文章

    282

    浏览量

    16339

原文标题:字节面试:连接一个不存在的 IP 地址,会发生什么?

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    端口不存在??

    用stc打开烧写程序显示如下,求解正在尝试与 MCU/单片机 握手连接 ... 打开串口失败!Chinese:串口已被其它程序打开或该串口不存在
    发表于 07-28 16:28

    CC3000通信往不存在IP地址发送UDP数据报的问题?

            我在测试UDP通信的时候发现问题。就是用UDP向不存在IP
    发表于 06-23 03:34

    下载harmony 2.06不存在?

    嗨,我昨晚试过了,我有错误:你想下载的文件不存在。请稍后再试。我今天早上试过了,我仍然有同样的错误。我尝试从MPLABX插件管理器,我没有看到
    发表于 09-12 14:40

    labview生成exe提示不存在vi

    报表vi单独生成exe可以正常运行,但是把他作为子菜单的子vi界面可以打开但是不能运行,提示不存在
    发表于 10-29 13:56

    请问为什么运放中不存在白色以上的噪声?

    查阅资料得知,由于运放内部的寄生参数以及补偿元件,使得白色以上的噪声不存在。为什么?
    发表于 01-25 11:17

    初始化BRAM警告coe文件不存在

    coe文件,这步成功。第二,我重新重新打包IP,并且警告coe文件不存在。但该文件确实存在于该文件夹中。有人可以帮我解决问题吗?谢谢!以上来自于谷歌翻译以下为原文Hello ever
    发表于 04-17 09:47

    在独立运行应用程序代码时添加不存在的Bootloader的简单跳转问题

    跳转,跳转到9D009000的新应用程序重置地址,绕过不存在的引导加载程序。我已经设法在那里获得跳转指令,但是它似乎没有实际工作——应用程序代码从来没有运行。AR与PIC32 MX,但不是与低级汇编等
    发表于 03-10 07:44

    文件不存在

    嗨!我使用的是X V4.01。我右击->New->C Header File添加了几个头文件。该文件确实存在于目录树中,但是不存在于文件文件夹中,这使我不能包含它。谢谢。
    发表于 03-13 10:08

    Harmony TCP/IP没获得IP地址

    ,状态机显示所有东西初始化正常,我到达APP_TCPIP_TRANSACT,但是它似乎从来没有得到IP地址。当我检查路由器时,它不存在,而且发现器软件也找不到它。RJ45连接器上的灯以
    发表于 03-26 07:55

    dspic30f中不存在12位

    我正在阅读家庭参考手册中关于12位A/D的dspic30f上的70页部分。即使他们为此专门写了70页,我假设12位A/D不存在,对吗?大声笑
    发表于 04-02 08:33

    STM32在编译时为什么某库文件会不存在

    STM32编译时,提示某库文件不存在的解决办法第种办法:在系统设置的C++选项中,加入路劲,不行的话,考虑第二种方法:第二种方法:在工程区,选择缺的文件,右击选择options,输入路劲:...
    发表于 08-23 09:11

    多晶硅的生产 不存在高能耗和高污染

    多晶硅的生产 不存在高能耗和高污染  新闻事件:     发改委能源研究所副所长李俊峰表示多晶硅生产不存在高能耗和高污染     事件详
    发表于 11-19 10:44 1084次阅读

    丰田社长称油门电子控制系统不存在问题

    丰田社长称油门电子控制系统不存在问题  丰田汽车公司社长丰田章男17日在东京召开记者会,针对美国发生丰田车突然迅猛加速问题,丰田章男强调称:“电子控制
    发表于 02-25 09:59 435次阅读

    10倍程序员到底存不存在

    最近关于 10 倍程序员的事又开始在各个社交平台火了起来,CODING 作为国内领先的一站式 DevOps 解决方案,今天也来讨论一下 10 倍程序员到底存不存在和这个概念到底意味着什么。
    的头像 发表于 11-08 16:13 2379次阅读

    ping不存在地址会咋样?ping和谁都不在一个网段的IP又会如何?

    :当ping一个不存在地址时,如果网络连接没有问题,通常会收到“无法访问目标主机”或“请求超时”的错误消息。这表示没有主机存在于该IP
    的头像 发表于 02-04 11:21 462次阅读