zoukankan      html  css  js  c++  java
  • 计算机网络 —— 应用层

    计算机网络 —— 应用层

    应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。

    • 交换的报文类型,如请求报文和响应报文
    • 各种报文类型的语法,如报文中的各个字段及其详细描述
    • 字段的语义,即包含在字段中的信息的含义
    • 进程何时、如何发送报文及对报文进行响应的规则

    一、 域名系统 DNS

    域名

    用字符表示的网络主机名,是一种主机标识符。

    IP 地址 域名
    数字型,难于记忆与理解 字符型,直观,便于记忆与理解
    用于网络层 用于应用层

    IP地址与域名都应该是全网唯一的,并且它们之间具有对应关系。

    Internet 域名结构:层次树状结构
    域名的结构由标号序列组成,各标号之间用点隔开。
    各标号分别代表不同级别的域名。

    … . 三级域名 . 二级域名 . 顶级域名
    

    DNS

    主机别名:有着复杂主机名的主机可以拥有一个或者多个别名。
    例如,一台名为relay1.west-coast.enterprise.com的主机,可能还有两个别名 enterprise.com 和 www.enterprise.com。这种情况下, relay1.west-coast.enterprise.com 也叫规范主机名(canonical hostname)。
    应用程序可以调用 DNS 来获得主机别名对应的规范主机名以及主机的IP地址。

    域名系统DNS(Domain Name System) 是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。
    DNS 被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS 使大多数名字都在本地进行解析(resolve),仅少量解析需要在互联网上通信。

    域名到 IP 地址的解析是由分布在互联网上的许多域名服务器程序(域名服务器)共同完成的。
    大多数具有 Internet 连接的组织都有一个域名服务器,每个服务器包含连向其他域名服务器的信息,这些服务器形成了一个大的协同工作的域名数据库。

    DNS 服务器的层次是与域名的层次相适应的。
    每一个域名服务器都只对域名体系中的一部分进行管辖。
    一个根服务器在这个层次体系的顶部,它是顶层域的管辖者。
    DNS服务器的层次对应着域名的层次,但是这两者并不是对等的。

    • 根域名服务器
      最高层次的服务器,根域名服务器知道所有的顶级域名服务器的域名和 IP 地址。
      不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
      共有13个不同IP地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m。a.rootservers.net...
      许多情况下,根域名服务器告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
    • 顶级域名服务器(TLD服务器)
      负责管理在该顶级域名服务器注册的所有二级域名。
      当收到 DNS 查询请求时,就给出相应的回答,可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址。
    • 权威域名服务器
      负责一个区(zone)的域名服务器。
      当一个权威域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权威域名服务器。
    • 本地域名服务器
      当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
      每一个因特网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器。
      这种域名服务器有时也称为默认域名服务器。

    域名解析

    1. 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
    2. 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器下一步应当向哪一个域名服务器进行查询,本地域名服务器进行后续的查询。

    DNS 缓存:一个DNS服务器接收一个DNS回答时,将回答中的信息缓存在本地。
    主机名与 IP 地址间的映射不是永久的,所以 DNS 服务器在一段时间后(通常设置为两天)丢弃缓存的信息。
    本地 DNS server 也可以缓存 TLD server 的IP地址,因而允许本地 DNS 绕过查询链中的根 DNS 服务器。

    DNS 记录
    实现 DNS 分布式数据库的所有 DNS 服务器共同存储着资源记录(Resource Record, RR)
    RR 提供了主机名到 IP 地址的映射。每个 DNS 回答报文包含了一条或多条资源记录。资源记录是一个包含了下列字段的4元组 (Name, Value, Type, TTL)

    1. TTL是该记录的生存时间,它决定了资源记录应当从缓存中删除的时间。
    2. Type=A,则 Name 是主机名,Value 是该主机名的IP地址。如 (abc.foo.com, 128.238.66.100, A)
    3. Type=NS,则 Name 是域,Value 是权威 DNS 服务器的主机名。如 (foo.com, dns.foo.com, NS)
    4. Type=CNAME,则 Value 是别名为 Name 的主机对应的规范主机名。如 (foo.com, relay1.bar.foo.com, CNAME)
    5. Type=MX,则 Value 是别名为 Name 的邮件服务器的规范主机名。如 (foo.com, mail.bar.foo.com, MX)。通过使用 MX 记录,一个公司的邮件服务器和其他服务器(如Web服务器)可以使用相同的别名。
    • DNS 服务器是某特定主机名的权威 DNS 服务器,那么该 DNS 服务器会有一条包含该主机名的类型 A 记录。
    • DNS 服务器不是某个主机名的权威 DNS 服务器,那么该服务器将包含一条类型 NS 记录,该记录对应于包含主机名的域。它还将包括一条类型 A 记录,该记录提供了在 NS 记录的 Value 字段中 DNS 服务器的 IP 地址。

    二、 电子邮件服务

    电子邮件系统

    • 用户代理:UA(User Agent),用户与电子邮件系统的接口,即电子邮件客户端软件。
    • 邮件服务器:发送和接收邮件,并向发件人报告邮件传送的结果(已交付、被拒绝、丢失等),按照客户服务器方式工作。
    • 邮件发送协议(如SMTP)和邮件读取协议(如POP3)

    发送和接受电子邮件步骤:

    1. 发件人调用 PC 机中的用户代理撰写和编辑要发送的邮件。
    2. 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器,
    3. SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送。
    4. 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,把缓存队列中的邮件依次发送出去。
    5. 运行在接收方邮件服务器中的 SMTP 服务器进 程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
    6. 收件人在打算收信时,就运行 PC 机中的用户代理,使用 POP3 或 IMAP 协议读取发送给自己的邮件。

    SMTP

    Simple Mail Transfer Protocol,简单邮件传送协议。

    • SMTP 协议运行在 TCP 协议之上,使用公开端口号 25
    • SMTP 使用简单的命令传输邮件
    • SMTP 规定了 14 条命令和 21 种响应信息
    • 每条命令都是由 4 个字母组成的
    • 每一种响应信息一般只有一行信息
    • SMTP 使用客户/服务器工作模式,发送邮件的 SMTP 进程是 SMTP 客户,接收邮件的 SMTP 进程是 SMTP 服务器

    通信的 3 个阶段:

    1. 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP 不使用中间的邮件服务器
    2. 邮件传送
    3. 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。

    POP

    Post Office Protocol,邮局协议。

    • 邮局协议 POP 是一个简单的邮件读取协议
    • POP3 协议使用客户/服务器的工作方式
    • 接收邮件的用户主机运行 POP 客户程序,ISP 的邮件服务器则运行 POP 服务器程序
    • POP3 协议运行在 TCP 协议之上,它使用公开的端口号 110
    • POP3 协议规定了 15 条命令和 24 种响应信息

    IMAP

    Internet Message Access Protocol,网际报文存取协议。

    • IMAP 按客户/服务器方式工作,现在较新的是版本 4,即 IMAP4。
    • 用户在自己的 PC 机上就可以操纵 ISP 的邮件服务器的邮箱,就像在本地操纵一样。
    • IMAP 是一个联机协议。当用户 PC 机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户可看到邮件首部。若用户打开某个邮件,则该邮件才传到用户的计算机上。
    • 用户可以为自己的邮箱创建便于分类管理的层次式的邮箱文件夹,并且能够将存放的邮件从某文件夹移动到另一文件夹。
    • IMAP 允许收件人只读取邮件中的某一个部分。
    • IMAP 的缺点是如果用户没有将邮件复制到自己的 PC 机上,则邮件一直是存放在 IMAP 服务器上。因此用户需要经常与 IMAP 服务器建立连接。

    POP3 与 IMAP 对比:

    基于万维网的电子邮件

    使用万维网电子邮件不需要在计算机中再安装用户代理软件。浏览器本身可以向用户提供非常友好的电子邮件界面,使用户在浏览器上就能够很方便地撰写和收发电子邮件。

    在浏览器和互联网上的邮件服务器之间传送邮件时,使用 HTTP 协议。
    在各邮件服务器之间传送邮件时,使用 SMTP 协议。

    三、 文件传送协议

    FTP,File Transfer Protocol,文件传送协议。

    • FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
    • FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
    • FTP 只提供文件传送的一些基本的服务,它使用 TCP 的可靠的传输服务。
    • FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

    主进程工作步骤:

    • 打开熟知端口(21),使客户进程能够连接上。
    • 等待客户进程发出连接请求。
    • 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
    • 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。

    两个进程,两个连接,两个端口:

    • 控制连接 在整个会话期间一直保持打开,发送 FTP 客户的传送请求给服务器端的控制进程。
    • 控制进程 在接收到 FTP 客户发送来的文件传输请求后创建数据传送进程和数据连接。
    • 数据传送进程 实际完成文件传送。传送完毕后关闭数据传送连接并结束运行。
    • 数据传送连接 用来连接客户端和服务器端的数据传送进程。

    由于 FTP 使用了一个分离的控制连接,因此 FTP 的控制信息是带外(out of band)传送的。

    • 客户进程发出建立连接请求时,要寻找连接服务器进程的 熟知端口 21,同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。
    • 服务器进程用自己传送数据的 熟知端口 20 与客户进程所提供的端口号建立数据传送连接。

    由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。
    使用两个独立的连接的主要好处是使协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接对文件的传输进行控制。

    四、 万维网

    World Wide Web,WWW,万维网是一个大规模的,联机式的信息储藏所。简称 Web。
    万维网用 链接 的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。

    • WWW 系统的结构采用了客户/服务器模式
    • 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。
    • 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
    • 在一个客户程序主窗口上显示出的万维网文档称为页面(page)。

    万维网使用 统一资源定位符 URL(Uniform Resource Locator) 来标志万维网上的各种文档。每一个文档在整个因特网的范围内具有唯一的标识符 URL。

    万维网使用 超文本传送协议 HTTP(HyperText Transfer Protocol) 实现万维网上各种超链的链接。HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。

    万维网使用 超文本标记语言 HTML(HyperText Markup Language) 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。

    URL

    URL 用来表示从互联网上得到的资源位置和访问这些资源的方法。URL 实际上就是在互联网上的资源的地址,是与互联网相连的机器上的任何可访问对象的一个指针。

    资源:在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与互联网相连的任何形式的数据。

    URL格式<协议>://<主机>:<端口>/<路径>

    • 协议:http,ftp 等
    • 主机:IP 地址或域名,指出万维网文档在哪一台主机上
    • 端口:可省略,HTTP 默认端口号 80
    • 路径

    URL 字母不区分大小写。

    HTTP

    HTTP 协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

    • 无连接:使用面向连接的 TCP 作为运输层协议,但其本身无连接。
    • 无状态:同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。

    请求一个万维网文档时间:

    HTTP/1.0 协议每请求一个文档需要 2RTT 的时间。
    HTTP/1.1 协议使用 持续连接 解决 1.0 中服务器处理请求开销大,负担重的问题。
    万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
    这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。

    持续连接的方式:

    • 非流水线方式:客户在收到前一个响应后才能发出下一个请求。比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。
    • 流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT 时间。

    报文结构

    • 请求报文:从客户向服务器发送请求报文
    • 响应报文:从服务器到客户的回答

    由于 HTTP 是 面向文本(text-oriented) 的,因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。

    1. 开始行:请求行(Request-Line)或状态行(Status-Line),用于区分是请求报文还是响应报文。三个字段之间以空格分开。
    2. 首部行:说明浏览器、服务器或报文主体的一些信息。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
    3. 实体主体(entity body),在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。
    请求报文
    GET /xbyx/zxq.htm HTTP/1.1
    Host: www.dlut.edu.cn
    Connection: close
    User-Agent: Mozilla/5.0
    Accept-Language: cn
    
    

    方法:对所请求的对象进行的操作,实际上也就是一些命令。

    方法 意义
    OPTION 查询支持的方法,请求一些选项的信息
    GET 获取资源,请求读取由 URL 所标志的信息
    HEAD 获取报文首部,请求读取由 URL 所标志的信息的首部
    POST 传输实体主体,给服务器添加信息
    PUT 上传文件,在指明的 URL 下存储一个文档
    DELETE 删除文件,删除指明的 URL 所标志的资源
    TRACE 追踪路径,用来进行环回测试的请求报文
    CONNECT 要求建立隧道,用于代理服务器,使用SSL/TLS加密

    GET 与 POST 区别:

    1. GET 用于获取资源;POST 用于传输数据
    2. GET 参数以查询字符串的形式出现在 URL 中,明文显示,且需要转码;POST 常用于提交表单,参数存储在实体主体中,可通过抓包工具查看
    3. GET 是安全的,不会改变服务器状态;POST 可能改变服务器状态,不是安全的
    响应报文
    HTTP/1.1 200 OK
    Connection: Close
    Date: Thu, 08 May 2014 06:43:16 GMT
    Server: Apache-Coyote/1.1
    Content-Type: image/gif;charset=UTF-8
    Content-Length: 0
    
    

    状态码:3 位数字,5 大类

    • 1xx 通知信息,Information,接受的请求正在处理

      • 100:Continue,表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。
    • 2xx 成功,Success,请求正常处理完毕

      • 200 OK
      • 204 No Content:请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。
      • 206 Partial Content:表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。
    • 3xx 重定向,Redirection,需要完成附加操作

      • 301 Moved Permanently:永久性重定向
      • 302 Found:临时性重定向
      • 303 See Other:和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。
      • 304 Not Modified:如果请求报文首部包含一些条件,例如:If-Match,如果不满足条件,服务器返回 304 状态码。
      • 307 Temporary Redirect:临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的POST 方法改成 GET 方法。
    • 4xx 客户端差错,Client Error,服务器无法处理请求

      • 400 Bad Request:请求报文中存在语法错误。
      • 401 Unauthorized:该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。
      • 403 Forbidden:请求被拒绝。
      • 404 Not Found
    • 5xx 服务端差错,Server Error,服务器处理请求出错

      • 500 Internal Server Error:服务器正在执行请求时发生错误。
      • 503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

    HTTP 是无状态的,使用 Cookie 可以在 客户端 存储一些状态信息。比如存储用户名和密码实现自动登录,或者存储 SessionId 实现 Session 跟踪。

    使用 Cookie 的网站服务器为用户产生一个唯一的识别码。

    • 用户发送请求,服务器在 HTTP 响应报文中添加 Set-cookie 首部行
    HTTP/1.0 200 OK
    Content-type: text/html
    Set-Cookie: yummy_cookie=choco
    Set-Cookie: tasty_cookie=strawberry
    
    [page content]
    
    • 用户收到该响应后,浏览器在 cookie 文件中添加服务器主机名和 cookie 值
    • 用户向该服务器发送的请求,首部都会添加 Cookie 行
    GET /sample_page.html HTTP/1.1
    Host: www.example.org
    Cookie: yummy_cookie=choco; tasty_cookie=strawberry
    
    

    Session

    Session 用于跟踪用户的状态,是在 服务器 存储的数据结构。客户端可以凭借 Cookie 中存储的 SessionId,或者 URL 重写的方式(sid=?),提供 SessionId,服务器根据该 id 识别特定用户。

    Session 可以存储在服务器上的文件、数据库或者内存中。

    • Cookie 只能存储 ASCII 码字符串,而 Session 则可以存储任何类型的数据,因此在考虑数据复杂性时首选 Session;
    • Cookie 存储在浏览器中,容易被恶意查看。如果非要将一些隐私数据存在 Cookie 中,可以将 Cookie 值进行加密,然后在服务器进行解密;
    • 对于大型网站,如果用户所有的信息都存储在 Session 中,那么开销是非常大的,因此不建议将所有的用户信息都存储到 Session 中。

    HTTPS

    HTTP 有以下安全性问题:

    • 使用明文进行通信,内容可能会被窃听
    • 不验证通信方的身份,通信方的身份有可能遭遇伪装
    • 无法证明报文的完整性,报文有可能遭篡改

    HTTPS = HTTP + SSL

    HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer)通信,再由 SSL 和 TCP 通信,也就是说 HTTPS 使用了隧道进行通信。
    通过使用 SSL,HTTPS 具有了 加密(防窃听)、认证(防伪装)和 完整性保护(防篡改)。

    缺点:

    • 因为需要进行加密解密等过程,因此速度会更慢
    • 需要支付证书授权的高额费用

    SSL

    Secure Sockets Layer 安全套接字 协议,及其继任者 传输层安全 (Transport Layer Security)是为网络通信提供安全及数据完整性的一种安全协议。因为历史原因 TLS 仍称呼为 SSL。

    TLS 与 SSL 在传输层与应用层之间对网络连接进行加密。

    加密

    加密方式:

    1. 对称加密:加密和解密使用同一秘钥
    2. 非对称加密:加密和解密使用不同秘钥
      • 加密:公钥加密 私钥解密
      • 认证:私钥加密 公钥解密

    HTTPS 采用 混合 的加密机制,使用 非对称密钥加密传输对称密钥 来保证传输过程的安全性,之后使用 对称密钥加密通信 来保证通信过程的效率。

    认证

    通过使用 证书 来对通信方进行认证。

    数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。

    服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。
    进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。

    完整性保护

    SSL 提供 报文摘要 功能来进行完整性保护。

    HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。

    HTTPS 的报文摘要功能之所以安全,是因为它结合了加密和认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。

    代理服务器

    proxy server,代理服务器,是一种网络实体,它又称为万维网高速缓存(Web cache)。
    代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按 URL 的地址再次去互联网访问该资源。
    代理服务器可在客户端或服务器端工作,也可在中间系统上工作。

    1. 校园网的计算机中的浏览器先和校园网的代理服务器建立 TCP 连接,并向代理服务器发出 HTTP 请求报文。
    2. 若代理服务器已经存放了所请求的对象,代理服务器就把这个对象放入 HTTP 响应报文中返回给计算机的浏览器。
    3. 否则,代理服务器就代表发出请求的用户浏览器,与互联网上的源点服务器建立 TCP 连接,并发送 HTTP 请求报文。
    4. 源点服务器把所请求的对象放在 HTTP 响应报文中返回给校园网的代理服务器。
    5. 代理服务器收到这个对象后,先复制在自己的本地存储器中,然后把这个对象放在 HTTP 响应报文中,通过已建立的 TCP 连接,返回给请求该对象的浏览器。

    五、 动态主机配置协议 DHCP

    Dynamic Host Configuration Protocol,动态主机配置协议,提供即插即用连网(plug-and-play networking)的机制。
    这种机制允许一台计算机加入新的网络和获取 IP 地址而不用手工参与。

    配置项目

    • IP 地址
    • 子网掩码
    • 默认路由器的 IP 地址
    • 域名服务器的 IP 地址

    客户/服务器方式

    • 需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为 DHCP 客户。
    • 本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。回答报文叫做提供报文(DHCPOFFER)。
    • DHCP 服务器先在其数据库中查找该计算机的配置信息。
      • 若找到,则返回找到的信息。
      • 若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。
    • 并不是每个网络上都有 DHCP 服务器,但至少有一个 DHCP 中继代理,它配置了 DHCP 服务器的 IP 地址信息。
    • 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机。

    租用期(lease period)
    DHCP 服务器分配给 DHCP 客户的 IP 地址是临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为 租用期
    租用期的数值应由 DHCP 服务器自己决定。DHCP 客户也可在自己发送的报文中提出对租用期的要求。

    工作流程

    1. DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文。
    2. DHCP 客户从 UDP 端口 68 发送 DHCP 发现报文。
    3. 凡收到 DHCP 发现报文的 DHCP 服务器都发出 DHCP 提供报文。
    4. DHCP 客户从 DHCP 服务器中选择其中的一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文。
    5. DHCP 服务器发送确认报文 DHCPACK。从这时起,DHCP客户就可以使用这个IP地址了。
    6. DHCP 客户根据租用期 T 设置两个计时器 T1 = 0.5T 和 T2 = 0.875T。T1 到时 DHCP 发送请求报文要求更新租用期。
    7. DHCP 服务器若同意,则发回确认报文 DHCPACK。DHCP 客户得到了新的租用期,重新设置计时器。
    8. DHCP 服务器若不同意,则发回否认报文 DHCPNACK。这时 DHCP 客户必须立即停止使用原来的 IP 地址,回到 2。若 DHCP 服务器不响应 6 的请求报文 DHCPREQUEST,则在 T2 到时重新发送请求报文 DHCPREQUEST。
    9. DHCP 客户可以随时提前终止服务器所提供的租用期,这时只需向 DHCP 服务器发送释放报文 DHCPRELEASE 即可。





    参考资料:《计算机网络》 谢希仁 著

  • 相关阅读:
    Archlinux安装搜狗拼音输入法
    Linux下解决zip压缩包文件名乱码问题
    Ubuntu与Windows时间不同步解决办法
    Archlinux安装yaourt
    Archlinux双显卡安装NVIDIA闭源驱动
    java opencv 检测缺口图片是否向左凸出来的
    谷歌recaptcha验证码java解决方案
    自动提交站点最新文章到百度
    如何解决谷歌Chrome浏览器空白页的问题
    Httpclient httpdelete 参数
  • 原文地址:https://www.cnblogs.com/JL916/p/12080884.html
Copyright © 2011-2022 走看看