应用层协议——DNS、DHCP、HTTP、FTP

目录

1、DNS 协议

1-1)Hosts 文件

1-2)DNS 系统

1-3)域名的组成、分类和树状结构

1-4)DNS 域名服务器类型

1-5)DNS 查询方式

1-6)DNS 域名解析的一般步骤

1-7)对象类型与资源记录

2、DHCP 协议

2-1)DHCP 动态分配的步骤

2-2)DHCP 报文类型含义与发送方式

2-3)DHCP 中继(DHCP relay)

2-4)DHCP 分配过程中的异常处理

2-5)DHCP snooping

2-6)命令行窗口中关于 DHCP 的配置命令

3、HTTP 协议

3-1)URL —— 统一资源定位符

3-2)HTTP 通信过程

3-3)HTTP 请求

3-4)HTTP 响应

4、FTP 协议

4-1)FTP 数据传输的两种方式

4-2)FTP 的文件传输格式

4-3)FTP 与 SCP

4-4)TFTP

5、电子邮件协议

5-1)IMAP 邮件访问协议

5-2)MIME 多用途互联网邮件拓展

5-3)SMTP 简单邮件发送协议


1、DNS 协议

作用:将域名和 IP 地址关联起来,只需要记住域名而不是难记的 IP 地址,就能够访问因特网。

1-1)Hosts 文件

        Hosts 文件是一个没有扩展名的系统文件,可以用文本编辑器打开,其作用就是将一些常用的网址域名与其对应的 IP 地址建立一个关联“数据库”。当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从 Hosts 文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行 IP 地址的解析。

        此外,Hosts文件还可以加快域名解析,对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出 IP,而不用请求网络上的 DNS 服务器。

文件位置:C:\Windows\System32\drivers\etc\hosts

Hosts 配置文件的缺点:

  • 只支持静态的 ip 地址,当网站的映射发生变化,需要手动进行更新
  • 需要手动添加域名和 IP 地址的映射关系
  • 无法处理多个主机名对应同一个IP地址的情况

1-2)DNS 系统

        DNS 系统是一个树状层次的联机分布式数据库系统,域名到 IP 的解析工作可以由系统中的多台域名服务器共同完成。

        采用 客户端/服务器 模式(客户端向服务器发送请求,以获取所需的资源或服务)。

        DNS 服务器使用 UDP 协议,53 号端口进行服务。

1-3)域名的组成、分类和树状结构

        域名由 大小写字母、数字、连接符“-” 组成。每一级域名中不能以连接符号开头或结尾;虽然可以使用大小写字母,但是域名并不区分大小写字母。如 “http://WWW.BAIDU.COM” 和 “www.baidu.com” 是等价的。

        每一级域名长度一般不超过 63 字节,完整的域名长度不超过 255 字节。

        接入因特网的主机都有一个唯一的合格的完整域名。

应用层协议——DNS、DHCP、HTTP、FTP_第1张图片

域名的树状结构图:

        最大的根域用 . 表示,如一个完整的域名:www.cctv.com.

应用层协议——DNS、DHCP、HTTP、FTP_第2张图片

        顶级域名由互联网名称与数字地址分配机构(ICANN)等组织管理和分配,它们有严格的规则和程序来确保全球互联网的稳定性和安全性。

        目前顶级域名分为两类,一类是国家和地区顶级域名(如.cn、.uk),另一类是国际顶级域名(如.com、.org)。

        在具体的域名中,一个域名部分是否为顶级域名取决于其在整个域名中的位置。如 .gov 代表的是政府部门,.cn 代表的是中国地区,二者都是顶级域名,但是在 www.gov.cn 中,.cn 是顶级域名,而 .gov 是二级域名(在一个完整的域名中,最右侧的是顶级域名,往左分别为二、三……级域名;最底层的域名(域名树中的叶子)也称为主机,如 mail、www、ftp,代表所提供的服务类型)。

顶级域名分类 常见举例
国家/地区顶级域名 .cn(中国)、.us(美国)、.uk(英国)
国际通用顶级域名 .com(公司企业)、.net(网络服务机构),.org(非营利性组织)、.edu(教育机构)、.gov(政府机构)、.mil(军队部门)

1-4)DNS 域名服务器类型

按域名空间层次划分:

应用层协议——DNS、DHCP、HTTP、FTP_第3张图片

按作用划分:

本地域名服务器:即主机的 TCP/IP 属性中设置的 DNS 服务器,主要负责某个区域的域名解析,离 DNS 客户端较近。又分为 主域名服务器、权威域名服务器、辅助域名服务器;

主域名服务器:负责维护一个区域的所有域名信息,是所有特定信息的权威信息源;

辅助域名服务器当主域名服务器出现故障、关闭或负载过重时,辅助域名服务器作为主域名服务器的备份提供域名解析服务。是主域名服务器的备份;

转发域名服务器:负责所有非本地域名的查询,当设置了转发器时,会把查询请求发送给转发域名服务器而非根域名服务器;

缓存域名服务器:只用于缓存的DNS服务器,没有自己的区域数据库文件;

DNS 域名服务器通常配置为:114.114.114.114,备用域名服务器通常配置为 8.8.8.8。114.114.114.114是国内最大的DNS服务商114DNS的公共DNS服务器地址;8.8.8.8是Google提供的公共DNS服务器地址,也是全球范围内广泛使用的DNS服务器之一。

1-5)DNS 查询方式

分为递归查询和迭代查询

递归查询:

        使用递归查询的 DNS 服务器在无法解析所请求的域名时,会向其他域名服务器发送查询请求。

应用层协议——DNS、DHCP、HTTP、FTP_第4张图片

应用层协议——DNS、DHCP、HTTP、FTP_第5张图片

迭代查询:

        使用迭代查询的 DNS 服务器,在无法解析请求域名时,不会向其他域名服务器发送查询请求,而是返回消息让请求的主机自己去查询其他的 DNS 服务器。

应用层协议——DNS、DHCP、HTTP、FTP_第6张图片

应用层协议——DNS、DHCP、HTTP、FTP_第7张图片

1-6)DNS 域名解析的一般步骤

应用层协议——DNS、DHCP、HTTP、FTP_第8张图片

  1. 用户输入要访问的网址,例如 www.example.com。
  2. 用户的计算机首先会检查本机 hosts文件本地缓存 中是否有该域名的解析结果。如果有,则直接使用该结果,解析过程结束。
  3. 如果 hosts文件和 本地缓存 中没有该域名的解析结果,则用户的计算机会将域名查询请求发送到 本地DNS服务器
  4. 本地 DNS服务器 会先查询其管理的区域记录中是否有该域名的解析结果(查自己的缓存和数据库文件)。如果有,则直接返回结果给用户;如果没有,则本地DNS服务器会向 根域名服务器 发送查询请求。
  5. 根域名服务器返回一个顶级域名服务器的地址本地DNS服务器
  6. 本地DNS服务器 顶级域名服务器 发送查询请求
  7. 顶级域名服务器 权限域名服务器 发送查询请求
  8. 权威域名服务器 会 返回该域名对应的 IP 地址给 顶级域名服务器
  9. 顶级域名服务器 会 把该域名对应的 IP 地址返回给 本地DNS服务器
  10. 本地DNS服务器会将该IP地址缓存到本地,并将结果返回给用户
  11. 用户获得IP地址后,则通过该地址访问目标网站。

        实际过程中的步骤可能会有所不同(如不同域名服务器使用的查询方式不同会造成差异)。

        在这里,本地域名服务器、顶级域名服务器使用的是递归查询方式,而根域名服务器使用的是迭代查询方式。

1-7)对象类型与资源记录

资源记录 说明
SOA(起始授权机构) 定义了该区域中的哪个名称服务器是权威域名服务器
NS(域名服务器) 表示该区域的域名服务器(包含SOA中指定的该区域的主服务器和辅助服务器)
A(主机) 列出了区域中域名到 IP 地址的映射
PTR(指针) PTR记录把 IP 地址映射到域名
MX 邮件交换器记录
CNAME(别名记录) 基于 A 记录的主机,做出一个别名

2、DHCP 协议

        动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)

        

连接到网络的计算机需要配置的内容包括:

  • IP 地址
  • 子网掩码
  • 网关地址
  • 本地 DNS 服务器地址

2-1)DHCP 动态分配的步骤

应用层协议——DNS、DHCP、HTTP、FTP_第9张图片

        客户机在收到 Dhcp Ack 报文之前,始终使用 0.0.0.0 地址;

        IP 租用请求(Dhcp Discover)是广播发送到本网段内的所有DHCP服务器的,如果该网段内有多台 DHCP 服务器,则这些DHCP 服务器都会收到 IP 租用请求,并都会发送回应。最后主机会采用最先接收到的那个 IP。

        如果一个网段内有多台 DHCP 服务器,则他们会共享相同的 IP 地址池,以确保地址分配不会发生冲突。为了确保多台 DHCP 服务器之间的记录保持一致,它们之间会进行租约信息的同步。例如,当一台服务器分配了一个 IP 地址后,它会将该信息广播到其他服务器上,以便其他服务器更新其记录。同样,当一台服务器回收了一个 IP 地址后,它也会将该信息广播到其他服务器上,以便其他服务器更新其记录。由于网络延迟等的因素,各 DHCP 服务器也会出现短暂的差异。

        当客户机发现服务器分配的 IP 地址等无法正常使用(如 IP 地址冲突),则会发送 DHCP DECLINE 报文,通知服务器禁止再分配使用该 IP 地址。

        如果主机的 IP 地址类信息租期到了 50%,在这里是第 4 天,则主机会单播向 DHCP 服务器进行续租(Dhcp request);如果在 50% 租期时没有续到,到了租期的 87.5% ,则主机会进行广播续租(Dhcp request);到了租期满时,即100%租期,则主机会广播重新申请动态地址分配(Dhcp discover)。

2-2)DHCP 报文类型含义与发送方式

报文类型 含义 发送方 发送方式
DHCP Discover

1)IP 租用请求;

2)租约期满,请求重新租用 IP;

客户端 广播
DHCP Request

1)确认使用 IP;

2)续租;

租期为50%时单播续约;

租期为78.5%时广播续约;

DHCP Decline

分配的 IP 地址无法使用时

DHCP Release 释放已获得的 IP;废弃租约
DHCP Offer 分配一个有效的 IP 服务器
DHCP Ack/Nack 确认 / 拒绝使用

2-3)DHCP 中继(DHCP relay)

        可以实现转发 DHCP 报文给不在同一网段的 DHCP 服务器及 DHCP 客户机。(如下图,虽然 DCHP 服务器不在子网1这个网段,但是也可以为子网1中的主机分配 IP 地址)

应用层协议——DNS、DHCP、HTTP、FTP_第10张图片

2-4)DHCP 分配过程中的异常处理

        如果由于 DHCP 服务器故障,或线路故障导致客户端主机迟迟未能获得 DHCP 服务器分配的 IP 地址,则客户端会在计时器到前,一共重发 4 DHCP 的地址租用请求报文。如果始终未能获得 IP 地址,则主机的操作系统就会给主机分配一个 169.254.0.0/16 网段的一个地址。

2-5)DHCP snooping

        部署 DHCP snooping 功能,可以防止仿冒 DHCP 服务器等的攻击。

DHCP snooping 信任功能:能够保证客户端从合法的服务器获取IP地址;

DHCP snooping 绑定表:DHCP Snooping绑定表记录了 DHCP 客户端 IP 地址与 MAC 地址等参数的对应关系,通过对报文与 DHCP Snooping绑定表进行匹配检查,能够有效防范非法用户的攻击。

应用层协议——DNS、DHCP、HTTP、FTP_第11张图片

什么是DHCP Snooping? 为什么需要DHCP Snooping? - 华为

2-6)命令行窗口中关于 DHCP 的配置命令

命令 功能
ipconfig /all 显示本地计算机上所有网络适配器的详细信息,包括IP地址、子网掩码、默认网关、DNS服务器等
ipconfig /release 释放本地计算机上的所有适配器的DHCP租约
ipconfig /renew 重新向 DHCP 服务器申请 IP 地址
ipconfig /flushdns 清除本地 DNS 缓存

3、HTTP 协议

        HTTP 超文本传输协议,用于在因特网上传输 Web 页面的应用层协议,在传输层采用 TCP 协议,端口号默认为 80;

        HTTP遵循请求(Request)/应答(Response)模型,Web 浏览器向 Web服务器发送请求时,Web服务器处理请求并返回适当的应答;

3-1)URL —— 统一资源定位符

        使用 HTTP 的URL的一般形式:http://<主机>[:端口]/<路径>/<文件名>

        如果端口号为 80,则可以不用加端口号,如果使用了其他端口就必须要加端口号。

如:http://www.abc.com:80/newdir/file.html == http://www.abc.com/newdir/file.html

其中 http 代表协议类型,www.abc.com 代表主机域名。表示使用 http 协议访问该主机,请求查看/newdir 路径下的 file.html 网页文件。

3-2)HTTP 通信过程

应用层协议——DNS、DHCP、HTTP、FTP_第12张图片

  1. 浏览器分析链接指向页面的 URL
  2. 浏览器向 DNS 服务器请求解析 指定域名的 IP 地址
  3. DNS 服务器解析出 指定域名的 IP 地址,并返回
  4. 浏览器通过 IP 地址访问对应的 WEB 服务器,与 WEB 服务器建立 TCP 连接
  5. 浏览器发送 GET 请求,请求读取出指定路径下的文件(一般为 HTML 文件)
  6. 服务器做出回应,将响应内容返回给浏览器
  7. 双方释放 TCP 连接
  8. 浏览器将请求回来的HTML文件的内容展示出来(如果是HTML类型的内容)

3-3)HTTP 请求

        一个HTTP请求报文由请求行(request line)、请求头(header)、空行请求数据4个部分组成。请求行由 请求方法字段URL字段HTTP协议版本字段 3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1

常见的请求方法有:GET、PUT、DELETE、POST等

        Web服务器在给相应资源指定请求方法的时候,通常会遵循 RESTful 架构。

        RESTful 架构的核心思想是将所有的资源都抽象为资源标识符(URI),通过 HTTP 协议中的不同请求方法来对资源进行不同的操作。例如,使用 GET 方法获取资源,使用 POST 方法创建资源,使用 PUT 方法更新资源,使用 DELETE 方法删除资源等:

请求方法 作用
GET 用来 获取数据,不对服务器的数据做任何的修改、新增或删除等操作
PUT 向服务器端发送数据,用来 修改数据 的内容。就像数据库的UPDATE操作一样,PUT请求的重点在于对数据的修改操作。它会修改资源的内容,但是不会增加数据的种类等资源
DELETE DELETE请求是用来 删除 某一个资源的
POST POST请求同PUT请求类似,都是向服务器端发送数据的。但是POST请求会改变数据的种类等资源,就像数据库的 INSERT 操作一样,创建新的内容。常用来数据的提交或新增操作。

常见的请求头有:

  • Accept:指定客户端能够处理的数据类型
  • Accept-Charset:指定客户端能够处理的字符集
  • Accept-Encoding:指定客户端能够处理的编码格式
  • Accept-Language:指定客户端能够处理的语言
  • Authorization:指定客户端的认证信息
  • Content-Type:请求头和响应头都有该字段。客户端的Content-Type请求头通常在 POST、PUT等请求方法中使用,用于指明客户端上传的数据是什么类型。如‘application/json’ 表示客户端的发送的数据类型为 json 格式;
  • Host:指名请求的目的服务器的域名和端口号
  • User-Agent:指定发起请求的客户端的用户代理信息

应用层协议——DNS、DHCP、HTTP、FTP_第13张图片

在HTTP协议中,请求头字段并不区分大小写,但是按照惯例,通常建议采用首字母大写的形式来表示请求字段。请求头可以自己指定,也可以自己更改。

        在发送 HTTP 请求的时候通常都会携带一些 参数或数据,这些参数根据不同的请求方法,可能会在不同的地方,如 GET 和 DELETE 请求的参数通常拼接在 URL 中,这样的参数也分为查询参数和路径参数;而 POST 和 PUT 请求携带的数据通常放在请求体中。

① 查询参数(Query Parameters)

        查询参数是通过URL的查询字符串传递的参数,即在URL中使用 “?” 符号后面跟上键值对的形式,如:

http://www.example.com/search?bookname=abc&page=6

        在这个例子中,客户端向http://www.example.com/search 发送请求,并携带了两个查询参数: bookname 和 page ,其值分别为 abc 和 6

② 路径参数(Path Parameters)

        路径参数是在 URL 的路径部分使用冒号占位符来表示的参数(以下是在服务端的写法)

http://www.example.com/user/:id/:name

        其中 :id 和 :name 都是路径参数

         客户端访问时,需要用具体的数据来替换掉这两个路径参数,如:

http://www.example.com/user/122345/zhangsan

③ 请求体参数(Request Body Parameters)

        请求体是 HTTP 请求消息的主体部分,用于发送需要提交给服务器的数据。请求体的格式取决于 Content-Type 请求头的值。例如,如果 Content-Type 的值是 “application/json”,则请求体的格式是 JSON 格式的数据。

3-4)HTTP 响应

HTTP响应由三个部分组成,分别是:状态行响应头空行响应正文

HTTP 响应状态码由三位数字组成,取值可能范围为 100 <= x < 600。

状态码范围 说明
1xx 表示请求已接收,将继续进行处理
2xx 请求成功,并被处理完成
3xx 重定向。表示要完成该请求需要更进一步的操作
4xx 客户端错误

5xx

服务端错误

常见的状态码:

200 客户端请求成功
202 服务端已接收请求,但并未完成处理
302 重定向,资源临时移动
400 客户端请求时有语法错误,服务端无法理解
401 请求未经授权,请求需要用户的身份认证
403 服务端接收到并理解客户端的请求,但拒绝提供服务
404 请求的资源不存在
500 服务器内部存在错误,不能完成请求
503 由于超负载或系统维护,服务器暂时无法响应客户端的请求

HTTP 常见的响应头

  • Content-Type:响应正文的类型
  • Content-Length:响应正文的长度
  • Content-Language:响应正文所使用的语言
  • Content-Charset:响应正文的编码格式
  • Content-Encoding:响应正文的压缩格式
  • Server:服务器名称
  • Date:返回响应时的 GMT 时间

应用层协议——DNS、DHCP、HTTP、FTP_第14张图片

4、FTP 协议

        FTP(File Transfer Protocol)的任务是从一台计算机将文件传送到另一台计算机,它与这两台计算机所处的位置、联接的方式、甚至是是否使用相同的操作系统无关。

        在开发网站的时候,通常利用 FTP 协议把网页或程序传到 Web 服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

        使用 FTP 时,会建立两个 TCP 连接,首先是 控制连接,然后是 数据连接

       

应用层协议——DNS、DHCP、HTTP、FTP_第15张图片

 

4-1)FTP 数据传输的两种方式

  • 主动模式:是默认的方式,FTP 服务器主动使用 TCP 20 端口与客户端建立数据通道,完成数据传输。
  • 被动模式:由客户端主动发起数据通道的连接,服务器使用的是高位的随机端口。

不管是何种方式,FTP 服务器的控制端口默认均为 21。

以服务器是否主动发起数据连接来区分主动模式和被动模式。如果是服务器发起的数据连接,则是主动连接,否则为被动连接;不管是主动连接还是被动连接,都是客户机主动发起控制请求

主动模式:

应用层协议——DNS、DHCP、HTTP、FTP_第16张图片

        【1】客户机大于 1024 的随机端口向服务器的 21 号控制端口发送控制连接请求,并告知服务器客户机会开启 1027 号数据端口(数据端口一般是控制端口 + 1)

        【2】服务器同意建立连接

        【3】由服务器主动发起数据连接。服务器的 20 数据端口主动向客户机的 1027 数据端口发起连接(对于客户机而言,需要确认防火墙打开了指定的端口,以便能够正常接受服务器的连接请求)

        【4】客户机给予统一连接的回应

        这样客户机和服务器建立连接之后,就能够传输文件。

被动模式:

应用层协议——DNS、DHCP、HTTP、FTP_第17张图片

        【1】客户机主动发起控制连接请求

        【2】服务器同意控制连接请求,并告知客户机开启了 2024 高位端口来进行数据的连接

        【3】客户机主动发起数据连接请求,使用 1027 号数据端口来与服务器的 2024 数据端口(随机端口号)进行连接(对于客户机来说,是内网向外网的访问,是默认运行的)

        【4】服务器 2024 端口返回同意连接的响应

     

4-2)FTP 的文件传输格式

        ftp://用户名:密码@FTP服务器IP或域名:FTP命令端口/路径/文件名

        FTP 也支持匿名文件传输,能够使用户与远程服务器建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程服务器的注册用户。用户使用特殊的用户名“anonymous”登陆FTP服务,就可访问远程主机上公开的文件

4-3)FTP 与 SCP

        SCP(Secure Copy)和 FTP 都是用于在网络上进行文件传输的协议

  1. 安全性:SCP 是基于SSH(Secure Shell)协议进行安全的远程文件复制,整个复制过程都是加密的。而 FTP 默认情况下是不加密的,虽然也有加密的FTP版本(如SFTP),但不是默认设置,需要用户手动调整。SCP在安全性方面相对于FTP具有优势。
  2. 加密方式:SCP 的传输方式是基于 SSH 协议的,使用公钥加密和私钥解密的方式进行身份验证和数据传输加密。而 FTP 可以通过 SSL/TLS 协议进行加密传输,但需要在服务器端和客户端都进行配置才能实现。
  3. 传输方式:SCP 和 FTP 都支持本地到远程的文件传输,但 SCP 还支持 远程 到 远程 的文件传输。此外,FTP 使用两个端口,一个用于命令传输(默认为21),另一个用于数据传输(默认为20)。而 SCP 只使用一个端口(默认为22),通过SSH协议进行数据传输和身份验证。
  4. 认证方式:SCP 和 SSH 共享相同的认证方式,支持密码认证和公钥认证。而 FTP 通常使用用户名和密码进行认证,虽然也支持公钥认证,但不是默认设置,需要用户手动配置。

4-4)TFTP

        TFTP(Trivial File Transfer Protocol,简单文件传输协议)使用 UDP 作为传输层协议。TFTP 缺乏安全性,没有到位的加密机制,与 TFTP 通信时不需要认证,这意味着通过互联网在开放服务器上传输文件非常危险,且数据包有可能会丢失。

        通常TFTP允许下载数据而不允许上传数据。

        TFTP 仅使用一个具有停止和等待模式的端口,即端口69。

5、电子邮件协议

        电子邮件的地址格式由三部分组成:用户的邮箱账号@ (指定分隔符)、用户邮箱的邮件接收服务器域名

        如 一个完整合格的邮件地址:[email protected],其中用户账号为 123456haha,邮件接收服务器的域名为 qq.com。

        常见的电子邮件客户端程序有:Outlook Express、Foxmail 等。

应用层协议——DNS、DHCP、HTTP、FTP_第18张图片

5-1)IMAP 邮件访问协议

        是用于接收邮件的协议(端口号 143),是 POP3 (基于 TCP 协议,端口号110) 的替代版本。

        IMAP 与 POP3 的区别在于:POP3 允许将邮件从邮件服务器下载到本地进行查看和编辑,这样用户在本地主机上对邮件的操作就不会反馈到邮件服务器上,而使用 IMAP ,用户对邮件的操作都会反馈到邮件服务器上。

5-2)MIME 多用途互联网邮件拓展

        MIME协议用于定义复杂的邮件体格式,它可以表达多段平行的文本内容和非文本的邮件内容,例如,在邮件体中内嵌的图像数据和邮件附件等。

        使用 MIME 协议,图像、声音、动画等二进制文件都可以通过电子邮件的形式来进行传递。

5-3)SMTP 简单邮件发送协议

        SMTP 是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP的端口号为 25。

应用层协议——DNS、DHCP、HTTP、FTP_第19张图片

你可能感兴趣的:(计算机网络,网络,计算机网络,网络协议)