首页 > 其他分享 >第十五篇:我们经常上网,有几个技术人知道上网IP是怎么来的呢?

第十五篇:我们经常上网,有几个技术人知道上网IP是怎么来的呢?

时间:2024-09-05 11:52:21浏览次数:8  
标签:IP 客户机 上网 服务器 IP地址 第十五 DHCP 分配

说到我们的日常上网,就不得不提一个协议:DHCP协议。

DHCP全称Dynamic Host Configuration Protocol,动态主机配置协议。

DHCP与ARP一样是局域网的网络协议。在分层模型里面,其属于应用层协议,底层使用的是UDP协议。

虽然DHCP是应用层协议,但是为了更好的阐述网络结构,更全面的描述我们的上网过程,我这里把DHCP放在网络层来讲。

前面我们说过,全世界IPv4的IP地址是有限的,并且每一台的电子设备在互联网上都有一个独一无二的身份证(IP地址);我们肯定不能自己随便设置我们电脑的上网IP地址,因为这样可能导致两台电脑IP地址重复。

1. 那怎么保证IP主机的IP地址唯一性呢?

答案当然是在我们上网的时候,由权威机构进行统一管理和分配了。

所有的IP地址都由国际组织NIC(Network Information Center)负责统一分配的,目前全世界共有三个这样的网络信息中心。

而我国申请IP地址要通过APNIC网络信息中心,APNIC的总部设在日本东京大学。比如中国申请的IP段有:61.129.*.*开始到61.191.*.*等;其中中国互联网络信息中心(China Internet Network Information Center,简称CNNIC)则管理中国国内IP的分配和规划。

2. DHCP的工作机制

当我们连接Wi-Fi的时候,电脑将使用DHCP协议寻找“IP分配”流程。

DHCP 协议报文采用 UDP方式封装,DHCP Server 侦听的端口号是 67 ,DHCP Client 的端口号是 68 。DHCP 设备通过发送和接收 UDP 67 和 UPD 68 端口的报文进行协议交互。DHCP 的基本工作流程分为 4 个阶段,即发现阶段、提供阶段、选择阶段、确认阶段。

1)发现阶段

即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。

2)提供阶段

即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息,并在本地记录下客户机的MAC地址和分配IP的记录。

3)选择阶段

即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址,未被选中的DHCP服务器将会把本地分配的IP记录删除。

注意:在给客户端分配IP地址前需要发送ICMP回送请求包,确认没有返回应答即IP没有分配出去。

4)确认阶段

即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址,并回复客户机DHCP nack消息。

  1. 客户机ARP确认IP地址是否可用

使用DHCP时,如果DHCP服务器发生故障,将导致无法自动分配IP地址,从而也导致网段内所有的主机之间无法进行TCP/IP通信。为了避免此类问题的发生,通常人们会架设两台或以上的DHCP服务器。不过启动了多个DHCP服务器,由于每个服务器都记录着IP地址分配情况的信息,因此可能导致几处分配的IP地址相互冲突。所以,在客户机使用DHCP服务器分配的IP之前,需要先发送ARP请求报文,确认没有返回应答才能使用。

5)重新登录

以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。

6)更新租约

DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。

3. DHCP 分配机制

DHCP 提供了两种地址分配机制,可以根据网络需求为不同的 Client 选择不同的分配策略。

  1. 动态分配机制:通过 DHCP 为 Client 分配一个有使用期限的 IP 地址。如果 Client 没有及时续约,到达使用期限后,这个地址可能会被其它 Client 使用。绝大多数 Client 使用的都是这种动态分配的地址。
  2. 静态分配机制:通过 DHCP 为特定的 Client 分配固定的 IP 地址。固定 IP 地址可以永久使用, Client 通常是打印机、服务器等设备。因为像服务器这类设备,IP不能变更,否则前端将无法访问。
  3. 分配逻辑:在实际情况中,我们发现 DHCP Client 重启后,也能获得相同的 IP 地址。DHCP Server 为 DHCP Client 分配 IP 地址时,采用如下的顺序:

DHCP Server 中与 DHCP Client 的 MAC 地址静态绑定的 IP 地址;DHCP Client 曾经使用过的 IP 地址;最先找到的可用 IP 地址。如果没找到可用的 IP 地址,就依次查询超过租期、发生冲突的 IP 地址,如果找到就进行分配,否则报错处理。

4. DHCP中继代理

家庭网络中大多只有一个以太网网段,与其连接的主机数也不多。因此一台DHCP服务器就足以应对IP地址分配的需求,而大多数情况下都由带宽路由器充当DHCP服务器的角色。

然而,一个企业或者学校等较大型的组织机构的网络环境当中,一般会有多个以太网网段;在这种情况下,如果每个网段都设置一台DHCP服务器,每台DHCP服务器都进行配置和管理,将给我们的工作带来庞大的工程。如此,我们有没有办法解决这个问题呢?

答案是肯定的,DHCP只能在局域网里面广播,那么,我们能不能,在中间加一个代理DHCP服务器,其不做过多工作,针对DHCP的广播,接收客户机发来的报文,然后将其单播到真正的DHCP服务器就可以了;如此就有了下面的结构:

1)中继代理工作原理
  1. 客户机发送 DHCP Discover 或 DHCP Request 广播报文,具有 DHCP 中继功能的网络设备收到后,根据配置将报文单播给指定的DHCP服务器;
  2. DHCP服务器进行 IP 地址的分配,单播发送给 DHCP 中继代理 ,DHCP 中继代理再将配置信息广播给客户机 ,完成对 客户机 的动态配置。

因此,DHCP 服务器即使不在同⼀个链路上也可以实现统⼀分配和管理IP地址。

标签:IP,客户机,上网,服务器,IP地址,第十五,DHCP,分配
From: https://blog.csdn.net/u013501979/article/details/141926797

相关文章

  • IPv6基于策略的地址分配
    IPv6基于策略的地址分配RA的周期性发送使用的是组播方式,但是针对RS的回复使用组播和单播两种可能;如果RA都是以组播方式发送,那么同一个广播域下的所有终端都可以收到,如果要基于终端mac/link-local地址来控制分配策略,则应该使用单播方式回复,以限制RA被接收的范围。关闭周期性......
  • 「Java开发指南」如何用MyEclipse搭建Adobe和Spring Flex?(一)
    本教程将引导您完成AdobeFlex和Spring-Flex软件组件的生成,可以生成一个随时可运行的SpringFlex应用程序,该应用程序为域模型实现了CRUD应用程序模式。在本教程中,您将学习如何:从数据库表搭建到现有项目设置关系获取类型更新Flex用户界面MyEclipsev2024.1离线版下载MyEclip......
  • 如何使用JavaScript遍历对象
    一、使用for-in循环——简单直接,快速上手for-in循环是最基础也是最常用的对象遍历方法。它语法简单,适合初学者快速掌握constuser={name:'Alice',age:25,job:'Engineer'};for(constkeyinuser){constvalue=user[key];console.log(`${key......
  • NOIP2024集训Day23 DP常见模型3 - 树形
    NOIP2024集训Day23DP常见模型3-树形A.[CSP-S2021]括号序列区间dp,令\(f_{l,r}\)表示从位置\(l\)到位置\(r\)一共的合法序列总情况数量。一共有六种不同的转移情况,所以将\(f_{l,r}\)扩充到三维。全是*(...)(...)**(...)***,左边以括号序列开头,右边以*结尾......
  • 如何打造IPD端到端的质量管理体系?
    作者| 杨学明话题| 产品质量     在当今竞争激烈的市场环境下,企业要想脱颖而出,必须注重产品和服务的质量,不断提升自身的竞争力,很多企业提出了“创新驱动、质量引领”的口号,产品质量的优劣往往决定了一个企业的生死存亡,低质量的产品不仅会大大增加产品的维护成本,侵......
  • javascript(四)
    六、常用工具类1.Date类方法描述Date()返回当前的日期和时间getDate()返回一个月中的某一天(1-31)getDay()返回一周中的某一天(0-6)getMonth()返回一年中的某一个月(0-11)getFullYear()返回一个四位数年份getYear()被getFullYear()方法代替getHours()......
  • Towards Robust Blind Face Restoration with Codebook Lookup Transformer(NeurIPS 2
    TowardsRobustBlindFaceRestorationwithCodebookLookupTransformer(NeurIPS2022)这篇论文试图解决的是盲目面部恢复(blindfacerestoration)问题,这是一个高度不确定的任务,通常需要辅助指导来改善从低质量(LQ)输入到高质量(HQ)输出的映射,或者补充输入中丢失的高质量细节。具体......
  • element-plus中的el-table组件tooltip显示错位
    问题描述:element-plus组件库中的el-table组件有一个show-overflow-tooltip属性,设置为true时如果表格中数据过长就会显示一个浮动窗口就像这样而有时这个小浮窗会有错位的问题像是这样,会导致靠上的列浮窗直接越界不显示问题原因table下的tooltip是fixed定位。positi......
  • 网络编程day01(IP地址、Socket、端口号)
    目录【1】IP地址1》基本概念IP地址 NAT设备(网络地址转换)DHCP服务器(动态主机配置协议)2》网络号/主机号(二级划分) 3》IP地址分类 特殊地址4》子网掩码5》三级划分【2】socket1》socket发展2》socket介绍3》为什么需要socket?4》socket类型【3】端口号 【1】......
  • 修改iphone图片格式(heic转换格式)
    大家都知道,自从iOS11开始,iPhone图片默认格式是heic格式,虽然它体积更小,画质也更高一些,但是仍然有使用不方便的地方,比如有些网站、平台不支持上传.heic,发送给朋友,朋友无法直接查看图片等情况,那么我们该如何修改iPhone默认的图片格式呢?今天分享设置方法:打开iPhone中的【设置】功......