小码哥《网络协议从入门到底层原理》笔记(十):应用层、域名、DNS解析

759 阅读3分钟

我的Github地址

小码哥《恋上数据结构与算法》笔记

极客时间《iOS开发高手课》笔记

iOS大厂面试高频算法题总结

iOS面试资料汇总

应用层的常见协议

  • 超文本传输:HTTPHTTPS
  • 文本传输:FTP
  • 电子邮件:SMTPPOP3IMAP
  • 动态主机配置:DHCP
  • 域名系统:DNS

域名(Domain Name)

  • 用于IP地址不方便记忆,并且不能表达组织的名称和性质,人们设计出了域名(比如baidu.com
    • 但实际上,为了能够访问到具体的主机,最终还是得知道目标主机的IP地址
    • 域名申请注册:https://wanwang.aliyun.com/
  • 那干脆全程直接用域名,不用IP地址?
    • IP地址固定4个字节,域名随随便便都至少10几个字节,这无疑会增加路由器的负担,浪费流量
  • 根据级别不同,域名可分为
    • 顶级域名(Top-level Domain, 简称 TLD
    • 二级域名
    • 三级域名
    • ...

顶级域名的分类

  • 通用顶级域名(General Top-level Domain,简称gTLD
    • .com(公司D),.net(网络机构D),.org(组织机构D),.edu(教育D)
    • .gov(政府部门D),.int(国际组织D)等
  • 国家及地区顶级域名(Country Code Top-level Domain,简称: ccTLDD
    • .cn(中国D),.jp(日本D),.uk(英国D)
  • 新通用顶级域名(New Generic Top-level Domain,简称: New gTLDD
    • .vip.xyz.top.club.shop

二级域名

  • 二级域名是指顶级域名之下的域名
    • 在通用顶级域名下,它一般指域名注册人的名称,例如googlebaidumicrosoft
    • 在国家及地区顶级域名下,它一般指注册类别的,例如comedugovnet

DNS

  • DNS的全称是:Domain Name System,译为:域名系统
    • 利用DNS协议,可以将域名(比如baidu.com)解析成对应的IP地址(比如220.18.38.148
    • DNS可以基于UDP协议,也可以基于TCP协议,服务器占用53端口

服务器

  • 客户端首先会访问最近的一台DNS服务器(也就是客户端自己配置的DNS服务器)
  • 所有的DNS服务器都记录了DNS根域名服务器的IP地址
  • 上级DNS服务器记录了下一级DNS服务器的IP地址
  • 全球一共13IPv4根域名服务器, 25IPv6DNS根域名服务器

IP地址的分配

  • IP地址按照分配方式,可以分为:静态IP地址,动态IP地址
    • 静态IP地址
      • 手动设置
      • 适用场景:不怎么挪动的台式机(比如学校机房中的台式机),服务器等
    • 动态IP地址
      • DHCP服务器自动获取IP地址
      • 适用场景:移动设备,无线设备等

DHCP

  • DHCP(Dynamic Host Configuration Protocol),译为:动态主机配置协议
    • DHCP协议基于UDP协议,客户端是68端口,服务器是67端口
  • DHCP服务器会从IP地址池中,挑选一个IP地址“出租“给客户端一段时间,时间到期就回收它们
    • 平时家里上网的路由器就可以充当DHCP服务器

分配IP地址的4个阶段

  • DISCOVER:发现服务器
    • 发广播包(源IP0.0.0.0,目标IP255.255.255.255,目标MACFF:FF:FF:FF:FF:FF)
  • OFFER:提供租约
    • 服务器返回可以租用的IP地址,以及租用期限、子网掩码、网关、DNS等信息
    • 注意:这里可能会有多个服务器提供租约
  • REQUEST:选择IP地址
    • 客户端选择一个OFFER,发送广播包进行回应
  • ACKNOWLEDGE:确认
    • 被选中的服务器发送ACK数据包给客户端
    • 至此,IP地址分配完毕

细节

  • DHCP服务器可以跨网段分配IP地址么?(DHCP服务器、客户端不在同一个网段)
    • 可以借助DHCP中继代理(DHCP Relay Agent)实现跨网段分配IP地址
  • 自动续约
    • 客户端会在租期不足的时候,自动向DHCP服务器发送REQUEST信息申请续约