计算机网络

内容目录

  • 自动获取IP
    • 客户端请求 ip
    • 关于租期
    • 总结

自动获取IP

我们的电脑分手动设置IP和自动获取IP,手动设置IP地址当然IP是自己设定的,那么自动获取IP是从哪里得到的IP地址,IP地址又是谁分配的呢。

一般没有特殊需求大家基本上是设置的 动态获取IP,因为如果自己静态配置的话,容易出错,例如你不小心配置了一个已经被其他人在使用的 IP 地址。所以我们一般选择的是动态获取IP。注意,这里的 IP地址不仅仅是指主机的唯一标识,还指DNS、网关等IP 地址。

客户端请求 ip

可能很多人都知道,是通过DHCP 服务器 来获取 IP 的,如果要给DHCP 服务器发报文来获取IP,必须得知道 DHCP 服务器的IP是多少,自己客户端的源IP 又是多少,当我们电脑刚开机,现在啥也不知道,第一步该如何做呢?如何发送报文呢?

之前我们说过广播和MAC地址的概念,广播这个东西很暴力,向所有局域网中得主机发送消息,告诉所有人,我急需一个 IP 地址。于是,我们发了一个广播通知了所有人。广播的目的 ip 是255.255.255.255,目的端口是 67,为了让别人知道它是来请求一个 ip 的,我们的客户端会把 0.0.0.0作为自己的源 ip,源端口是68 。意在告诉别人:我现在啥也没有,急需一个 ip,哪位老铁能给我提供一个 ip。

我们把这个请求 ip 的报文称之为discover 报文。

这里发送的报文都是采用 UDP 报文,而不是 TCP 报文


目的 ip 填255.255.255.255 代表这是一个广播报文,会发给局域网内的所有主机。其他主机收到广播报文之后,会进行判断这个广播报文是否是发给自己的,如果是发给自己的,则进行处理,否则就把这个广播报文丢弃。

这个时候, DHCP 服务器终于收到了我的广播,这个时候问题来了,DHCP 服务器是如何知道我是来请求一个 ip 的呢?

为了解决这个问题,我们需要在报文里做一个标记,告诉 DHCP 服务器我是来请求报文的,于是,啥也没有的我,在报文的源地址里填了 0.0.0.0。当DHCP服务器看到报文的源地址是 0.0.0.0时, 就知道我还没有被分配过 ip,急需一个ip来去冲浪了。

于是,DHCP服务器赶紧找了一个没有被使用ip地址发给我,包括 ip 地址,子码掩码,网关,ip 的有效期等信息,并且把这个 ip 地址标记为 已使用的状态。DHCP服务器要把IP通过报文发送给需求方,但是源IP是 0.0.0.0,怎么发送呢。通过MAC地址。在 discover报文 中,就会包含它的 MAC 地址了,DHCP 服务器,只需要发一个广播报文就可以了,广播报文的源ip是 DHCP 服务器自己的 ip,源端口是 67 ,目的地址是 255.255.255.255,目的端口是 68

我们把 DHCP 提供 ip 地址的报文称之为 offer报文。当我们客户主机收到IP地址后就可以上网了


如果 DHCP 服务器没有在我们所在的局域网里怎么办?这个时候,这个discover 报文 就会通过我们的网关来进行传递,并且会把源 ip 替换成网络的 ip,源端口是 68,这里涉及到 NAT 地址到转换。可以看看我之前写的文章

计算机网络 - (二)NAT的工作基本原理

DHCP 服务器收到报文之后,就可以根据源端口 68 来判断这是一个 discover 请求 报文了。就会把 offer 发给网关,网关再发给我们的主机。

关于租期

在DHCP客户端的租约时间到达 1/2 时,客户端会向为它分配 IP 地址的DHCP服务器发送 request 单播报文,以进行 IP 租约的更新。如果服务器判断客户端可以继续使用这个 IP 地址,就回复 ACK 报文,通知客户端更新租约成功。如果此IP地址不能再分配给客户端,则回复 NAK 报文,通知客户端续约失败。

如果客户端在租约到达 1/2 时续约失败,客户端会在租约到 7/8 时间时,广播发送 request 报文进行续约。DHCP服务器处理同首次分配 IP 地址的流程。

总结

255.255.255.255这个地址一般用来广播的时候使用,而0.0.0.0这个地址可以代表这是一个还没有分配 ip 的主机。

不过0.0.0.0还有其他作用,代表主机还没有分配ip地址只是其中的一个用处。例如:充当默认路由来使用,当一个路由器要发送路由表中无法查询的包时,如果设置了全零网络的路由时,我们就可以把这个包丢给全零网络的路由。

计算机网络 - (三)电脑如何获取到IP的相关推荐

  1. WebService(JAX-WS、XFire、Axis三种)获取客户端ip

    WebService(JAX-WS.XFire.Axis三种)获取客户端ip JAX-WS.XFire.Axis三种webservice的获取客户端IP的简单实现过程: 1,基于JDK6 jax-ws ...

  2. 相机直连电脑 如何获取相机IP

    方法一:通过wireshark抓包 首先将相机和电脑直连,这个时候[PC 的ip是169.254.187.24 相机是169.254.10.136] 1.1 设置捕获选项 2 开始抓包,抓到的结果为: ...

  3. Linux下编程获取本地IP地址的常见方法

    代码编译运行平台:Linux 64bits+g++(-m64),-m64表示生成64bits的程序. 在进行Linux网络编程时,经常用到本机IP地址.本文罗列一下常见方法,以备不时之需. 获取本机I ...

  4. android获取ip方法,Android开发准确获取手机IP地址的两种方式

    最近看了好多网上获取IP地址的例子,发现好多都不完全准确,这里我写一下获取ip地址的两种方式. 比如微信支付,后台在做接口的时候,要求App端传入IP地址,我们需要判断是网络环境,WI-FI还是3G, ...

  5. 计算机网络-DHCP的工作原理,IP地址如何获取

    我们计算机的IP地址如何来的 DHCP的工作原理 DHCP的一些疑惑解答 我们计算机的IP地址如何来的 看了前面交换机.路由器.网络包传输的文章,那么就知道要连上网络,就需要IP地址,那么IP地址是如 ...

  6. 电脑自动获取ip地址在哪里设置

    第一 点击电脑左下角->控制面板 第二 点击 网络和Internet 第三 网络和共享中心 第四 更改适配器设置  第五 点击本地链接 第六 点击 Internet 协议版本4(TCP/IPV4 ...

  7. 锐捷AP下电脑突然获取不到IP地址,不能正常上网

    环境 AC:锐捷NBC256 POE交换机:锐捷NBS3100-24GT4SFP-P AP:锐捷RAP2200(E) 问题描述 锐捷AP下电脑突然获取不到IP地址,不能正常上网 解决方案 1.登录AC ...

  8. 解决 windows电脑 无法获取ip地址

       困惑了很久,一直也没细琢磨这事,一直都是设固定ip上网,突然今天下午有时间百度下,才发现问题的根源,是DHCP服务无法启动导致了电脑无法获取ip地址,微软提供的解决办法如下:经过我的测试绝对行得 ...

  9. 计算机自动配置的ip地址,电脑自动获取IP地址的设置方法(图文)

    在我们使用电脑的过程中,有时候需要根据网络的需求将电脑IP地址设置为自动获取,对网络知识不太了解的朋友遇到此类问题可能不知道怎么去设置,在此小编总结了有关电脑设置自动获取IP地址的相关方法,感兴趣的朋 ...

最新文章

  1. Linux下自动分割Nginx日志文件(三)-----Logrotate
  2. 我的世界手机版服务器显示即将推出,我的世界手机版领域服即将开启 什么是领域服...
  3. Python学习笔记-猜数字游戏(学习语法)
  4. Markdown简介
  5. 一个java程序_从另一个java程序运行java程序
  6. ubuntu装python3_ubuntu16.04安装python3的包报错
  7. 动态通讯录(动态内存开辟)(C语言)
  8. python可以替代java吗_Python 并非最好的编程语言,它无法取代 C/C++ 和 Java
  9. 基于高德地图的城市区域代码表
  10. 企业级PHP发卡网源码,金发卡企业级发卡平台源码
  11. Java自动生成word文档,用心看这篇就够了【重点】
  12. 计算机类中英附录,欧盟gmp附录11-计算机系统(中英文对照)-20210410004737.docx-原创力文档...
  13. 易语言html5内核,精易Web浏览器支持库易语言版
  14. 虚拟机安装ubuntu的相关经验总结及常见疑问
  15. java 解压压缩包及密码解压压缩包( zip、 rar、 rar5、 7z)
  16. 联想小新pro16无法识别网卡MT7921的问题
  17. React TypeScript 从零实现 Popup 组件发布到 npm
  18. 开源激光SLAM项目BLAM-----2
  19. 华三H3C交换机配置端口聚合之二层端口静态和动态聚合
  20. 程序员吃的是青春饭么?

热门文章

  1. 钉钉API考勤打卡记录获取并存入数据库(python)
  2. 珠海沙龙PPT已上传!
  3. WIN7 32/64位安装SQL Server 2005详细步骤(图文)
  4. 天翼云服务器迁移阿里云_Cloudops:云迁移的被忽略的部分
  5. 怎样修改图纸中单个图块的基点 ?
  6. 动态规划的应用(二):cutting stock 问题
  7. 想知道CAD怎么转图片格式?跟我学会这几招就足够了
  8. Linux中的ps指令详解
  9. 一款轻量的JVM监控工具——Jvmm
  10. GitGitHub 笔记