DNS协议

由于IP地址不方便记忆,并且不能表达组织的名称和性质,人们设计出了域名(比如baidu.com)但实际上,为了能够访问到具体的主机,最终还是得知道目标主机的IP地址

顶级域名

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

顶级域名后面也是有个点的,只是一般不写,如cdn.wayy.fun.

二级域名

二级域名是指顶级域名之下的域名
在通用顶级域名下,它一般指域名注册人的名称,例如google、baidu、microsoft等
在国家及地区顶级域名下,它一般指注册类别的,例如com、edu、gov、net等

image-20220705145443464

DNS

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

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

【常用命令】

ipconfig /displaydns: 查看DNS缓存记录
ipconfig /flushdns: 清空DNS缓存记录
ping 域名
nslookup 域名:查询ip

DHCP协议

IP地址按照分配方式,可以分为:静态IP地址、动态IP地址

静态IP地址

  • 手动设置
  • 适用场景:不怎么挪动的台式机(比如学校机房中的台式机)、服务器等

动态lP地址

  • 从DHCP服务器自动获取IP地址适用场景:移动设备、无线设备等

DHCP服务器会从IP地址池中,挑选一个IP地址“出租“给客户端一段时间,时间到期就回收它们平时家里上网的路由器就可以充当DHCP服务器

分配IP的四个阶段

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

image-20220705164030343

  • DHCP服务器可以跨网段分配IP地址么?(DHCP服务器、客户端不在同一个网段)
    可以借助DHCP中继代理(DHCP Relay Agent)实现跨网段分配IP地址
  • 自动续约
    客户端会在租期不足的时候,自动向DHCP服务器发送REQUEST信息申请续约
  • 常用命令
    ipconfig /all:可以看到DHCP相关的详细信息,比如租约过期时间、DHCP服务器地址等ipconfig /release:释放租约
    ipconfig /renew:重新申请IP地址、申请续约(延长租期)

HTTP

HTTP (Hyper Text Transfer Protocol),译为超文本传输协议,是互联网中应用最广泛的应用层协议之一
设计HTTP最初的目的是:提供一种发布和接收HTML页面的方法,由URI来标识具体的资源
后面用HTTP来传递的数据格式不仅仅是HTML,应用非常广泛
HTML ( Hyper Text Markup Language)∶超文本标记语言用以编写网页

URI和URL都是用来唯一标识资源的,只不过URI是局部唯一,URL是全网唯一

URI示例:/blog/56

URL示例:https://wayy.fun/blog/56

HTML ( Hyper Text Markup Language):超文本标记语言,用以编写网页

【HTTP发展历程】

  • 1991年,HTTP/0.9
    只支持GET请求方法获取文本数据(比如HTML文档),且不支持请求头、响应头等,无法向服务器传递太多信息
  • 1996年,HTTP/1.0
    支持POST、HEAD等请求方法,支持请求头、响应头等,支持更多种数据类型(不再局限于文本数据)浏览器的每次请求都需要与服务器建立一个TCP连接,请求处理完成后立即断开TCP连接
  • 1997年,HTTP/1.1 (最经典、使用最广泛的版本)
    支持PUT、DELETE等请求方法
    采用持久连接(Connection: keep-alive),多个请求可以共用同一个TCP连接
  • 2015年,HTTP/2.0
  • 2018年,HTTP/3.0

HTTP的标准

  • 由万维网协会(W3C)、互联网工程任务组(IETF)协调制定,最终发布了一系列的RFC

RFC (Request For Comments,可以译为:请求意见稿)

  • HTTP/1.1最早是在1997年的RFC2068中记录的
    • 该规范在1999年的RFC 2616中已作废
    • 2014年又由RFC 7230系列的RFC取代
  • HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP/1.1成为HTTP的实现标准

中国的RFC

  • 1996年3月,清华大学提交的适应不同国家和地区中文编码的汉字统一传输标准被IETF通过为RFC 1922成为中国大陆第一个被认可为RFC文件的提交协议

image-20220706092544708

CRLF:两个字节标识回车换行,因为不同的系统换行符可能不同

LF(换行)、CR(回车)