DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • 计算机基础

    • 前奏(介绍)
    • 计算机硬件组成
    • 操作系统
    • 计算机网络概览
    • 计算机网络之网络接口层
    • 计算机网络之网络层
    • 计算机网络之传输层
    • 计算机网络补充
      • DHCP
        • 四要素
        • 获取方式
        • 动态获取过程
      • DNS
      • 网络拓扑图
  • linux基础

  • mysql

  • git

  • 数据结构与算法

  • axure

  • english

  • docker

  • IT_Need
  • 计算机基础
DC
2022-10-13
目录

计算机网络补充

# DHCP

dhcp本质上是一个用于分配IP地址的套接字程序

# 四要素

想实现网络通信, 每台主机需具备的 四要素
     ○ 本机的IP地址
     ○ 子网掩码
     ○ 网关的IP地址
     ○ DNS的IP地址 (不是必须的,不用域名,直接用IP地址就行)

DNS -- 域名解析,将域名转换成对应的IP地址.. 
DNS的IP可以直接指定,也可以设置将DNS的IP地址设置成网关/路由器的IP地址.若是后者,在浏览器上输入域名后,浏览器会先将这个域名先送到网关,网关会帮忙向DNS服务器发起请求,把域名转成IP地址后再去通信.

敲黑板!!!☆浏览器规定用户输入的网址不敲端口,默认端口号是80 !! IP+端口 -- 联合唯一就行了呗.
1
2
3
4

# 获取方式

获取四要素的地址,有两种方式:
     1> 手动配置 -- 静态获取 (可能会冲突 在设置前先ping一下,ping通了代表此IP被占用了)
     2> dhcp -- 动态获取 "获取后不是不变的 是有租约时间的 过时会重新获取"

# 动态获取过程

每台主机都会默认安装一个dhcp client软件.每个路由器会默认安装dhcp server软件.

主机一开机,dhcp client软件就会默认启动 (当然,前提是主机有网络能往外通信)

dhcp报头格式: 以太网头 IP头 UDP头 DHCP数据包
1> 最前面的"以太网标头", 设置发出方(本机)的MAC地址和接收方(DHCP服务端)的MAC地址.
     前者就是本机烧录在网卡上的MAC地址,后者这时不知道,就填入一个广播地址: FF-FF-FF-FF-FF-FF.
2> 后面的"IP标头",设置发出方的IP地址和接收方的IP地址. 本机对于这两者都不知道.
     于是,发出方的IP地址就设为0.0.0.0, 接收方的IP地址设为255.255.255.255
3> 最后的"UDP标头",设置发出方的端口和接收方的端口. 这一部分是DHCP协议规定好的,
     发出方是68端口, 接收方是67端口。

MAC(本机) FF-FF-FF-FF-FF-FF 0.0.0.0 255.255.255.255 68 67 DHCP数据包
这个数据包构造完成后, 就可以发出了.

以太网是广播的形式发送,同一个子网络的每台计算机都收到了这个包.
因为接收方的MAC地址是FF-FF-FF-FF-FF-FF, 看不出是发给谁的, 所以每台收到这个包的计算机, 还必须分析这个包的IP地址, 才能确定是不是发给自己的. 当看到发出方IP地址是0.0.0.0,接收方IP是255.255.255.255, 于是DHCP服务器知道"这个包是发给我的", 而其他计算机就可以丢弃这个包.

接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个"DHCP响应"数据包.
这个响应包的结构也是类似的,以太网报头的MAC地址是双方的烧录在网卡上的地址,IP报头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方), UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分.

新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数.
1
2
3
4
5
6
7
8
9

# DNS

dns - domain name server 域名解析服务, 负责把域名解析成IP地址
参考文档: https://www.cnblogs.com/linhaifeng/articles/5937962.html#_label14

使用的阿里云服务器默认就有一个公网IP地址;申请域名;添加解析记录将域名跟IP地址关联到一起;最后进行备案.

全球一共有13台根服务器.13台是同步的. 底层是基于UDP协议的 ,每一次最大512bit,13已经是极限了.
13台没有一台在中国,So,国内有大量的缓存DNS服务器.Hhh.

DNS的解析流程

Ps: 一旦递归服务器拿到解析记录以后, 就会在本地进行缓存 , 如果下次客户端再请求本地的递归域名服务器相同域名的时候, 就不会再这样一层一层查了, 因为本地服务器里面已经有缓存了(达到了加速的效果)!要知道缓存是有TTL的生命周期的,需要定时更新.

DNS除了递归查找,还有迭代查找..略.

DNS的查找顺序

DNS的解析速度也是网速的一部分,所以为了加速其查询,引入了缓存!

浏览器DNS缓存->本地系统DNS缓存->本地计算机HOSTS文件->ISP DNS缓存->递归or迭代搜索
Ps: 缓存都是内存数据,HOSTS文件是硬盘数据.

计算机HOSTS文件路径:
linux - /etc/hosts
Windows - C:\Windows\System32\drivers\etc

eg: 在文件中添加 1.1.1.1 www.baidu.com
    那么ping www.baidu.com显示的ip就是1.1.1.1 
	
DNS的查找顺序是合理的,速度对比: 内存>硬盘>网络IO延迟

windows上查看所有的IP配置信息:   ipconfig -all
查看windows操作系统DNS的缓存:  ipconfig /displaydns
清除windows操作系统上的DNS缓存:  ipconfig /flushdns
清除浏览器的dns缓存,在相应浏览器里输入:
    谷歌 -- chrome://net-internals/#dns 点击clear host cache 
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 网络拓扑图

假设有两间大教室,教室1处于网段172.168.1.0,教室2处于网段192.169.13.0; 教室1中的主机A要访问阿里巴巴的服务器...访问的是阿里巴巴服务器的公网IP,再映射成私有IP.

Ps1: 两间教室不需要2个路由,共用同一个路由器就行,因为一个路由可以帮忙转发多个网段..(不同的网段存在于一个路由表中)
Ps2: 注意哦!默认情况下,局域网的主机不会暴露在公网当中..里面的主机只有访问别个的命.想要逆天改命让别个访问它,得有个公网IP..


计算机网络之传输层
准备工作

← 计算机网络之传输层 准备工作→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式