今天这篇著作男同 porn,很有兴趣兴趣,它来源于我也曾的一次信得过口试里的其中一个小问题。其时是终面,面我的是那家公司的技巧参谋人,在口试前 hr 还让我看了他的资历,是一位 1996 年就进了麻省理工规画机系的大佬。
属实有被畏缩到,什么宗旨?1996 年,没记错的话那是个用 BP 机和苍老大的年代?有几个东说念主能用上电脑?又有几个东说念主有这种契机能放洋深造。
这是哪部爽文演义的主东说念主公剧情?
就算放到当今,这也瑕瑜常强的事情。
我这辈子是没但愿了,也不知说念我的女儿或者孙子辈有莫得契机能作念到。
也即是说,这位大佬,至少最初了我两代东说念主。
那一天,我感受到了,那种跳动时期的碾压感。
好了,不讲骚话了,平直启动主题吧。
咱们知说念,要是你知说念某台电脑的 IP,就可以向这个 IP 发起结合请求,树立结合后就可以操作收发数据。
要发送的数据,会在蚁集层里加入 IP 头。
这内部最遑急的是发送端和罗致端的 IP 地址。这个 IP 地址就像是一个门招牌一样,有了它,数据包就能在这个纷纷复杂的蚁集全国里找到该由谁来罗致这个数据包。
是以说上头的蚁集通讯离不开 IP。
假定我有一台新买的电脑,还没联网呢,这时候拿着新买的网线,插中计线口,网线插口亮起来了。
然后就可以启动用它上网了。
那么问题来了。
刚插上网线,电脑如何知说念我方的 IP 是什么?如何就倏得能上网了呢?
这个话题,咱们从 DHCP 聊起吧。
DHCP 是什么插上网线之后,得回 IP 的花样主要有两种。
第一种是,我方手动在电脑里配。像下图那样,是 macOS 的一个截图,在采选手动建立之后,除了 IP 地址还需要配上子网掩码和路由器的地址。
这就很不科学了,电脑又不仅仅卖给才智员,这几个词关于大部分世俗东说念主来说,比赋能合手手闭环这种黑话还要难通晓。
大部分东说念主没事王人不应该去配这玩意。
有莫得办法可以让这些 IP 信息自动得回?
有,这即是第二种获取 IP 的花样,DHCP(Dynamic Host Configuration Protocol,动态主机建立合同)。
通过 DHCP,在联网之后可以自动获取到本机需要的 IP 地址,子网掩码还有路由器地址。
DHCP 的责任旨趣DHCP 的责任旨趣也荒谬简便。
说白了,即是向某个管 IP 分派的行状器,也即是 DHCP 行状器,肯求 IP 地址。其实一般家里用的路由器就自带这个功能。
通盘操作经由分为 4 个阶段。
DHCP Discover:在联网时,本机由于莫得 IP,也不知说念 DHCP 行状器的 IP 地址是些许,是以根蒂不知说念该向谁发起请求,于是索性采选播送,向土产货网段内通盘东说念主发出音问,究诘 " 谁能给个 IP 用用 "。
DHCP Offer:不是 DHCP 行状器的机子会忽略你的播送音问,而 DHCP 行状器收到音问后,会在我方吝惜的一个 IP 池里拿出一个酣畅 IP,通过播送的表情给回你的电脑。
DHCP Request:你的电脑在拿到 IP 后,再次发起播送,就说 "这个 IP 我要了"。
DHCP ACK:DHCP 行状器此时再回复你一个 ACK,兴趣兴趣是 "ok 的"。你就庄重得回这个 IP 在一段时分(比如 24 小时)里的使用权了。后续只消 IP 租约不外期,就可以一直用这个 IP 进行通讯了。
到这里,问题来了
为什么要有第三和第四阶段环球有莫得发现,在 Offer 阶段,其实你的机子就还是拿到了 IP 了,为什么还要有背面的 Request 和 ACK 呢?是不是有些冠上加冠?
这是因为土产货网段内,可能有不啻一台 DHCP 行状器,在你播送之后,每个 DHCP 行状器王人有可能给你发 Offer。
本着先到先得的原则,你的机子一般会对第一个到的 Offer 反映 DHCP Request,主义是为了证实 offer,在你证实 Offer 这段时老实,DHCP 行状器证实这个 IP 还没被分出去,你才可以省心使用这个 IP。
像不像你找责任的过程?
你海投简历(DHCP Discover),然后拿到了多个 offer (DHCP Offer)。
这时候事情还没完,你一般会跟 HR 说:" 你给我两天时分,我要跟家里东说念主接洽下 "。
HR 也会对你说:" 那你尽快证实,我这边还有不少候选东说念主等着 "。
之后你探究下来合计可以,跟 HR 说要接这个 Offer(DHCP Request),HR 看了下这个岗亭还在,才能证实让你第二天来上班(DHCP ACK)。要是这个公司的岗亭还是招到其他候选东说念主了,第四阶段的音问就会改为发 DHCP NAK,兴趣兴趣是拒却了你的接 Offer 请求。
DHCP 合手包光看旨趣是有些败兴,咱们可以尝试下合手包看下数据。
在号召行里践诺底下的号召,可以强行让电脑的 en0 网卡从头走一遍 DHCP 经由。
sudo ipconfig set en0 DHCP
en0 可以替换成其他网卡,比如 eth0 啥的。
这时候就可以合手到持续的数据包。
咱们可以看到蓝色的四个数据包,差异对应上头提到的四个 DHCP 阶段。
其中第二阶段中的 DHCP Offer 里会复返给咱们需要的 IP、子网掩码、路由器地址以及 DNS 行状器地址。
另外,通过合手包,咱们可以发现 DHCP 是欺诈层的合同,基于传输层 UDP 合同进行数据传输。
那么问题又来了。
为什么 DHCP 用 UDP,能不成改用 TCP?按兴趣兴趣兴趣兴趣说,UDP 能作念到的,TCP 一般也能作念到。但此次真不行。
主要原因照旧因为 TCP 是面向结合的,而 UDP 是无结合的。
所谓 "结合",他就唯唯一个发送端和一个罗致端,就跟水管一样。
而 DHCP 由于一启动并不知说念要跟谁树立结合,是以只可通过播送的表情发送音问,隆重,小细节,播送。
雷同是在土产货网段内发播送音问,UDP 只需要发给 255.255.255.255。它本色上并不是值某个具体的机器,而是一个罕观点址,这个地址有罕见含义,只消设了这个主义地址,就会在一定土产货网段内进行播送。
而 TCP 却不同,它需要先树立结合,但本色上 255.255.255.255 对应的机器并不存在,因此也不成树立结合。要是雷同要作念到播送的效能,就需要先得到土产货网段内通盘机器的 IP,然后挨个树立结合,再挨个发音问。这就很低效了。
因此 DHCP 采选了 UDP,而不是 TCP。
为什么第二阶段不是播送,而是单播。另外一个小细节不知说念环球隆重到没,上头在提到 DHCP Offer 阶段时,提到的是 DHCP 行状器会使用播送的表情回复。但合手个包下来却发现并不是播送,而是单播。
其实,这是 DHCP 合同的一个小优化。原则上环球在 DHCP offer 阶段,王人用播送,那细目是最稳的,筹备机器收到后当然就会干预第三阶段 DHCP Request。而非筹备机器,收到后解包后发现主义机器的 mac 地址跟我方的不同,也会丢掉这个包。
然则问题就出在,这个非主义机器需要每次王人在网卡收到包,并解完包,才发现蓝本这不是给它的音问,这。。。真,有被惊扰到。
要是土产货网段内这样的包满天飞,也浮滥机器性能。
要是能用单播,那虽然是最佳的。但这时候主义机器其实并莫得 IP 地址,有些系统在这种情况下能收单播包,有些则认为不成收,这个跟系统的收尾存关。因此,关于能收单播包的系统,会在发 DHCP Discover 阶段设一个 Broadcast flag = 0 (unicast) 的象征位,告诉行状器,维持单播回复,于是行状器就会在 DHCP Offer 阶段以单播的表情进行回复。
只消思联网,就需要 IP,要用 IP,就得走 DHCP 合同去分派。
但环球也发现了,DHCP 第一阶段和第二阶段王人可能会发播送音问。关于家用电脑还好,插个网线,之后就雷打不动。但像手机这样的迁徙开拓,是要带着到处跑的,坐个地铁,进个电梯,公司里到处走走,王人可能会波及到蚁集切换。
这每次王人要来一个齐全的四阶段,多样播送音问满天飞,其实对蚁集环境不太友好。
于是问题叒来了,是不是每次联网王人要经历 DHCP 四个阶段?
虽然不需要。
咱们会发现每次断开 wifi 再绽放 wifi 时,机子会经历一个从没网到有网的过程。
这时候去合手个包,会发现。
其实只发生了 DHCP 的第三和第四阶段。这是因为机子记载了也曾使用过 192.168.31.170 这个 IP,从头联网后,会优先再次请求这个 IP,这样就省下了第一第二阶段的播送了。
另外需要隆重的是,合手包图里 DHCP Request 之是以出现两次,是因为第一次 Request 发出后太久没得到回复,因此重发。
DHCP 分派下来的 IP 一定不会重复吗?一般来说 DHCP 行状器会在它吝惜的 IP 池里找到一个没东说念主用的 IP 分派给机子,
这个 IP 要是重复分派了,那土产货网段内就会出现两个雷同的 IP,这个 IP 底下却对应两个不同的 mac 地址。但其他机器上的 ARP 缓存中却只会记载其中一条 mac 地址到 IP 的映射干系。
于是,数据在传递的过程中就会出错。
因此土产货网段内 IP 必须唯一。
那么 DHCP 分派下来的 IP 有莫得可能跟别的 IP 是重复的?
王人这样问了,那细目是可能的。
有两个常见的情况会出现 IP 重复。
著作开始提到,IP 是可以我方手动配的,我方配的 IP 是有可能跟其他 DHCP 分派下来的 IP 是相通的。处分决议也很简便,尽量不要手动去配 IP,长入走 DHCP。或者在 DHCP 行状器里吝惜的 IP 领域里,将这条 IP 剔除。
一个土产货网段内,是可以有多个 DHCP 行状器的,而他们吝惜的 IP 地址领域是有可能叠加的,于是就有可能将相通的 IP 给到不同的机子。处分决议也很简便,修改两台 DHCP 行状器的吝惜的 IP 地址领域,让它们不叠加就行了。
不外吧,上头的处分决议,王人需要有权限去修改 DHCP 行状器。
得到 DHCP ACK 之后立马就能使用这个 IP 了吗?
这就粗略在问,拿到 offer 之后你是第一时分就去上班吗?
不。
你会先告诉你的共事同学一又友,甚而会发一又友圈。
你的机子也一样。
在得到 DHCP ACK 之后,机子不会坐窝就用这个 IP。
而是会先发三条 ARP 音问。
环球知说念 ARP 音问的主义是通过 IP 地址去得回 mac 地址。是以世俗的 ARP 音问里,是填了 IP 地址,不填 mac 地址的。
但这三条 ARP 合同,比拟罕见,它们叫无偿 ARP(Gratuitous ARP),特色是它会把 IP 和 mac 地址王人填好了,何况填的照旧我方的 IP 和 mac 地址。
主义有两个。
一个是为了告诉土产货网段内通盘机子,从当今起,xx IP 地址属于 xx mac 地址,让环球记载在 ARP 缓存中。
另一个即是看下土产货网段里有莫得其他机子也用了这个 IP,要是有突破的话,那需要从头再走一次 DHCP 经由。
在三次无偿 ARP 音问之后,证实莫得突破了,才会启动使用这个 IP 地址进行通讯。
这种行径,本色上就跟你拿了 offer 之后发了这样个一又友圈没啥区别。
好姑娘3中文在线观看何况,还连发了三条。
别骂了,图是 P 的,我没这样发过
秀 offer,offer 突破了不可怕。秀对象秀突破了才可怕。
要是你一又友圈里有这种东说念主,判辨我,删了吧。
讲究电脑插上网线,联网后和会过 DHCP 合同动态肯求一个 IP,同期得回子网掩码,路由器地址等信息。
DHCP 分为四个阶段,差异是 Discover,Offer,Request 和 ACK。要是也曾连过这个网,机器会记载你前次使用的 IP,再次结合时优先使用蓝本的阿谁 IP,因此只需要经历第三第四阶段。
DHCP 是欺诈层合同,探究到需要维持播送功能,底层使用的是 UDP 合同,而不是 TCP 合同。
DHCP 分派下来的 IP 是有可能跟某台手动建立的 IP 地址重复的。
DHCP 得到 IP 之后还会发 3 次无偿 ARP 宣布,在证实莫得突破后启动使用这个 IP。
临了给环球留个问题吧。咱们上头的 IP 王人是从 DHCP 行状器上肯求的,在行状器复返 DHCP Offer 的时候,可以看到上头写了 DHCP 行状器的 IP。比如 192.168.31.1,这彰着是个局域网内的 IP,但这能证明,你的 DHCP 行状器一定在这个局域网里吗?
参考贵府
《图解 TCPIP》
本文来自微信公众号:小白 debug (ID:xiaobaidebug),作家:小白
告白声明:文内含有的对外跳转结合(包括不限于超结合、二维码、口令等表情),用于传递更多信息男同 porn,通俗甄选时分,限度仅供参考,IT之家通盘著作均包含本声明。