您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

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

时间:2023-02-16 16:17:17  来源:51CTO  作者:小林coding
客户端发送了一个目标 IP 地址存在但是端口不存在的 UDP 报文,UDP 没有像 TCP 那样的 RST 报文,此时会发生什么?

大家好,我是小林。

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

  • 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 地址不在同一个局域网时,客户端客通过路由表的判断,判断到下一步是要将网络报文发送给路由器。

图片

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

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

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

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

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

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

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

.......

至此,结论已说完。

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

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

最近比较忙,偷懒了,没有画图,如果哪里没理解的,可以先看我以前写的这篇文章:​​探究!一个数据包在网络中的心路历程​​,有详细讲解每一层是怎么封装头部的,以及路由表是怎么判断的。

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

就酱,溜啦溜啦!



Tags: IP 地址   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
报告称微软 Skype 移动应用存在严重漏洞,可轻易泄露用户 IP 地址
IT之家 8 月 29 日消息,据 404Media.co 报道,微软的 Skype 移动应用存在一个严重的漏洞,可能导致黑客通过发送一个链接就能检测到用户的 IP 地址。该漏洞只需利用 Skype 的文本...【详细内容】
2023-08-29  Search: IP 地址  点击:(150)  评论:(0)  加入收藏
Golang 获取本地 IP 地址方法
在 Golang 中,使用 net 包可以很方便地获取到本机IP地址。借助 net.InterfaceAddrs 方法简单示例代码如下:package mainimport ( "fmt" "net")func main() { addrList, err :=...【详细内容】
2023-07-25  Search: IP 地址  点击:(236)  评论:(0)  加入收藏
如果要存 IP 地址,用什么数据类型比较好?
提到 IP 地址(IPv4),大伙儿脑子里肯定马上能浮现类似于 192.168.0.1、127.0.0.1 这种常见的 IP 地址,然后结合这个问题 “MySQL 中用什么数据类型存 IP 地址?”,于是乎脱口而出用...【详细内容】
2023-04-27  Search: IP 地址  点击:(344)  评论:(0)  加入收藏
字节面试:连接一个不存在的 IP 地址,会发生什么?
客户端发送了一个目标 IP 地址存在但是端口不存在的 UDP 报文,UDP 没有像 TCP 那样的 RST 报文,此时会发生什么?大家好,我是小林。分享两个字节面试题,都是基于场景问的网络问题...【详细内容】
2023-02-16  Search: IP 地址  点击:(156)  评论:(0)  加入收藏
什么是 IP 地址 什么 MAC 地址
P地址和MAC地址可以类比生活中寄快递的过程。在整个网络中数据被封装成数据报文进行发送,就像我们生活中寄快递时将物品放进包裹中。而数据在路由器之间的跳转也可以看作是不...【详细内容】
2022-10-16  Search: IP 地址  点击:(380)  评论:(0)  加入收藏
如何解决 Windows 检测到 IP 地址冲突错误提示
IP 地址是一组数字,用于在连接到网络时识别特定设备。 不同的设备具有唯一的 IP 地址,计算机使用它们通过 Internet 相互交互。但是,当两个或多个设备的 IP 地址相似时,网络无法...【详细内容】
2022-07-04  Search: IP 地址  点击:(676)  评论:(0)  加入收藏
37 张图详解 DHCP:给你 IP 地址的隐形人
DHCP 出现电脑或手机需要 IP 地址才能上网。大刘有两台电脑和两台手机,小美有一台笔记本电脑、一台平板电脑和两台手机,老王、阿丽、敏敏也有几台终端设备。如果为每台设备手...【详细内容】
2022-05-05  Search: IP 地址  点击:(477)  评论:(0)  加入收藏
浏览器将主机名转换成服务器 IP 地址
DNS 过程,步骤如下:查看浏览器内部缓存 检测域名是否存在于浏览器缓存中,如果有缓存直接使用,没有则下一步。打开chrome://net-internals/#dns 即可查看本机浏览器的 DNS 缓存。...【详细内容】
2021-07-09  Search: IP 地址  点击:(286)  评论:(0)  加入收藏
如何从上亿条 IP 地址中去除重复的地址?
前言Hello,朋友们好,欢迎来到我的口述算法系列,今天的主题是大规模数据去重。思路一首先,这里的 IP 地址就是类似 192.168.1.1 这种具体的 IP 地址,而并不是 192.168.1.1/16 这种...【详细内容】
2021-04-30  Search: IP 地址  点击:(1150)  评论:(0)  加入收藏
5 个用于在 Linux 终端中查找域名 IP 地址的命令
本教程介绍了如何在 Linux 终端验证域名或计算机名的 IP 地址。本教程将允许你一次检查多个域。-- Magesh Maruthamuthu(作者)本教程介绍了如何在 Linux 终端验证域名或计算...【详细内容】
2019-12-04  Search: IP 地址  点击:(490)  评论:(0)  加入收藏
▌简易百科推荐
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(0)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(6)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
站内最新
站内热门
站内头条