五、应用层
需要掌握的内容
-
服务名称
-
服务的主要内容
-
用到的应用层的协议
-
用到的运输层的协议
-
端口号
-
应用的工作的过程
-
每项服务用到的技术
应用层协议
作用: 精确定义不同主机中的多个应用进程之间的通信规则。
通信规则包括以下几方面:
- 应用进程交换的报文类型,如请求报文和响应报文。
- 各种报文类型的语法,如报文中的各个字段及其详细描述。
- 字段的语义,即包含在字段中的信息的含义。
- 进程何时、如何发送报文,以及对报文进行响应的规则。(同步)
域名系统概述
许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。
互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。
名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
互联网的域名结构
互联网采用了层次树状结构的命名方法。
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
表示:
域名的结构由标号序列组成,各标号之间用 点 隔开:
… . 三级域名 . 二级域名 . 顶级域名
各标号分别代表不同级别的域名。
域名只是个逻辑概念
域名只是个逻辑概念,并不代表计算机所在的物理地点。
变长的域名和使用有助记忆的字符串,是为了便于人来使用。而 IP 地址是定长的 32 位二进制数字则非常便于机器进行处理。
域名中的“点”和点分十进制 IP 地址中的“点”并无一一对应的关系。点分十进制 IP 地址中一定是包含三个“点”,但每一个域名中“点”的数目则不一定正好是三个。
顶级域名 TLD (Top Level Domain)
国家顶级域名 nTLD
有可能是国家,有可能是地区(如中国香港)
例如:
.cn 表示中国,
.us 表示美国,
.uk 表示英国,等等。
顶级域名 TLD (Top Level Domain)
通用顶级域名 gTLD
最早的顶级域名是:
.com(公司和企业)
.net(网络服务机构
.org(非赢利性组织)
.edu(美国专用的教育机构)
.gov(美国专用的政府部门)
.mil(美国专用的军事部门)
.int(国际组织)
基础结构域名 (infrastructure domain)
这种顶级域名只有一个,即 arpa,
用于反向域名解析,因此又称为反向域名。
新顶级域名
任何公司、机构都有权向ICANN申请新的顶级域名
真正的企业网络商标
互联网的域名空间
注意:
- 每个域名,由父亲节点直接分配
- 域名树的树叶就是计算机的名字,不能再继续向下划分子域了
域名服务器
作用:
- 登记
- 解析
区 (zone)
一个服务器所负责管辖的(或有权限的)范围叫做区 (zone)。
各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。
每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
注意:
DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
域和区不一定相同
分类(树状结构)
顶级域名服务器只登记二级域名服务器,
根域名服务器:
{所有顶级域名服务器域名,IP}
顶级域名服务器
二级域名,IP
(包括二级域名 和 服务器IP)
域名就类似于 主机名 。当主机可以被互联网上的主机访问时,就是服务器,就需要有域名
域名服务器有以下四种类型
根域名服务器
顶级域名服务器
权限域名服务器
本地域名服务器
根域名服务器
根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。
所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
服务过程:
不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
根域名服务器会返回 顶级域名服务器地址;
然后本地域名服务器再次询问顶级域名服务器,顶级域名服务器返回权限域名服务器地址
然后本地域名服务器再次询问权限域名服务器,权限域名服务器返回服务器地址
总结就是:
- 根域名服务器并不直接把域名直接转换成 IP 地址。
- 在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的 IP 地址告诉本地域名服务器。
作用:
负责其顶级域名服务器的域名和IP的登记和解析。
( 收到解析请求,会给对方提供对应的顶级域名服务器的IP地址。)
在互联网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,从 a 一直到 m(前 13 个字母)。
根域名服务器共有 13 套装置
根域名服务器共有 13 套装置,不是 13 个机器。
这些根域名服务器相应的域名分别是:
a.rootservers.net b.rootservers.net … m.rootservers.net
到2016年2月,全世界已经在 588 个地点安装了根域名服务器,使世界上大部分 DNS 域名服务器都能就近找到一个根域名服务器。
顶级域名服务器
作用:
负责其下的二级域名的登记和解析。
权限域名服务器
作用:
负责本区域内,下级域名的登记和解析。
本地域名服务器
本地是指离主机较近的域名解析服务器,不是指同一个网络。
本地域名服务器对域名系统非常重要。
当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
这种域名服务器有时也称为默认域名服务器。
服务器分类:
DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器。
当主域名服务器出故障时,辅助域名服务器可以保证 DNS 的查询工作不会中断。
主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。
目的: 提高域名服务器的可靠性
作用:
负责本机域名的解析(不负责登记),主机会自动配置自己的域名。
域名的解析过程
主机向本地域名服务器的查询一般都是采用递归查询。
如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
本地域名服务器向根域名服务器的查询通常是采用迭代查询。
当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
本地域名服务器采用迭代查询
服务过程:
不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
根域名服务器会返回 顶级域名服务器地址;
然后本地域名服务器再次询问顶级域名服务器,顶级域名服务器返回权限域名服务器地址
然后本地域名服务器再次询问权限域名服务器,权限域名服务器返回服务器地址
名字的高速缓存
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
可大大减轻根域名服务器的负荷,使互联网上的 DNS 查询请求和回答报文的数量大为减少。
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时
器,并处理超过合理时间的项(例如,每个项目只存放两天)。
当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。
查看电脑的DNS缓存记录
命令行命令:ipconfig /displaydns
gsp0.baidu.com ---------------------------------------- 记录名称. . . . . . . : gsp0.baidu.com 记录类型. . . . . . . : 5 生存时间. . . . . . . : 215 数据长度. . . . . . . : 8 部分. . . . . . . . . : 答案 CNAME 记录 . . . . . : delegation.a.shifen.com 记录名称. . . . . . . : delegation.a.shifen.com 记录类型. . . . . . . : 1 生存时间. . . . . . . : 215 数据长度. . . . . . . : 4 部分. . . . . . . . . : 答案 A (主机)记录 . . . . : 112.34.113.250
Telnet协议
服务:远程接入服务
提供内容:
应用层协议:telnet协议
网络层协议:TCP
端口:201
万维网
基于超链接实现。
服务:万维网服务
协议:
提供内容:
超链接:
超文本,超媒体
万维网是个分布式系统
工作方式:客户服务器
内容:万维网文档(html(用于显示)等等)
定位文档:URL
传输:HTTP协议
HTTP是解释执行。一行一行的解释,如果某行出错,下行内容可能 正常。
HTTP 的操作过程
为了使超文本的链接能够高效率地完成,需要用 HTTP 协议来传送一切必须的信息。
从层次的角度看,HTTP 是面向事务的 (transaction-oriented) 应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
HTTP/1.0的主要缺点:没有持续连接。
每次请求内容,都会重新建立TCP连接。
持续连接
HTTP/1.1 协议使用持续连接 (persistent connection)。
万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
非流水线方式
:客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
流水线方式
客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。
使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。
加上连接需要一个RTT。
因此持续链接的流水线方式:大约只需要两个RTT时间。
HTTP/2
可以并行运算,允许客户端复用TCP连接,采用新的压缩算法。
代理服务器
现在不常用,用于之前外网带宽小的情况
代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。
工作方式:
万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。
当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。
高速缓存会定期向服务器询问,如果服务器内容更新,高速缓存则获取更新内容。
HTTP 的报文结构
HTTP 有两类报文:
- 请求报文——从客户向服务器发送请求报文。
- 响应报文——从服务器到客户的回答。
由于 HTTP 是面向正文的 (text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。
请求报文
HTTP 的报文结构(请求报文)
报文由三个部分组成,即
- 开始行
- 首部行
- 实体主体
在请求报文中,开始行就是请求行。
“方法”
是面向对象技术中使用的专门名词。
所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。
“URL” 是所请求的资源的 URL。
“版本” 是 HTTP 的版本。
响应报文
响应报文的开始行是状态行。
状态行包括三项内容,即
- HTTP 的版本
- 状态码
- 解释状态码的简单短语。
状态码
都是三位数字
1xx 表示通知信息的,如请求收到了或正在进行处理。
2xx 表示成功,如接受或知道了。
3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
4xx 表示客户的差错,如请求中有错误的语法或不能完成。
5xx 表示服务器的差错,如服务器失效无法完成请求。
Cookie
Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。
实现:
使用 Cookie 的网站服务器为用户产生一个唯一的识别码。
作用:
在服务器上存放用户的信息
万维网站点可以利用此识别码,跟踪该用户在该网站的活动。
万维网的文档
分类:
静态文档
是指该文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。
HTML,CSS 等等前端代码都是静态文档。
动态文档
是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。
编程语言写的后端都是动态文档。
活动文档
把所有的工作都转移给浏览器端,由浏览器端改变文档的内容。
每当浏览器请求一个活动文档时,服务器就返回一段程序副本在浏览器端运行。
活动文档程序可与用户直接交互,并可连续地改变屏幕的显示。
注意:
动态文档和静态文档之间的主要差别体现在服务器一端。
这主要是文档内容的生成方法不同。
从浏览器的角度看,这两种文档并没有区别。
超文本标记语言 HTML
超文本标记语言 HTML 中的 Markup 的意思就是“设置标记”。
标签(标记)
HTML 定义的许用于排版的命令。
HTML 文档
HTML 把各种标签嵌入到万维网的页面中。这样就构成了所谓的 HTML 文档。
HTML 文档是一种可以用任何文本编辑器创建的 ASCII 码文件。
THML作用:
当浏览器从服务器读取 HTML 文档后,就按照 HTML 文档中的各种标签,根据浏览器所使用的显示器的尺寸和分辨率大小,重新进行排版并恢复出所读取的页面。
<HTML> <HEAD> <TITLE>一个 HTML 的例子</TITLE> </HEAD> <BODY> <H1>HTML 很容易掌握</H1> <P>这是第一个段落。虽然很 短,但它仍是一个段落。</P> <P>这是第二个段落。</P> </BODY> </HTML>
注意:
仅当 HTML 文档是以 .html 或 .htm 为后缀时,浏览器才对此文档的各种标签进行解释。
如 HTML 文档改换以 .txt 为其后缀,则 HTML 解释程序就不对标签进行解释,而浏览器只能看见原来的文本文件。
可扩展标记语言 XML
XML (Extensible Markup Language) 是可扩展标记语言,它和 HTML 很相似。
设计宗旨: 传输数据,而不是显示数据(HTML 是为了在浏览器上显示数据)。
XML 不是要替换 HTML,而是对 HTML 的补充。
XHTML
XHTML
XHTML (Extensible HTML) 是可扩展超文本标记语言,它与 HTML 4.01 几乎是相同的。
但 XHTML 是更严格的 HTML 版本,也是一个 W3C 标准(2000年1月),是作为一种 XML 应用被重新定义的 HTML,并将逐渐取代 HTML。
新的浏览器都支持 XHTML。
层叠样式表 CSS
CSS (Cascading Style Sheets) 是层叠样式表,它是一种样式表语言,
作用:
为 HTML 文档定义布局。
CSS 与 HTML 的区别就是:
HTML 用于结构化内容,而 CSS 则用于格式化结构化的内容。
万维网服务器功能的扩充
就是增加了数据库
(1) 应增加另一个应用程序,用来处理浏览器发来的数据,并创建动态文档。
(2) 应增加一个机制,用来使万维网服务器把浏览器发来的数据传送给这个应用程序,然后万维网服务器能够解释这个应用程序的输出,并向浏览器返回 HTML 文档。
万维网的应用
万维网的信息检索系统
分类:
- 全文检索搜索
- 分类目录搜索
在万维网中用来进行搜索的程序叫做搜索引擎。
全文检索搜索引擎
是一种纯技术型的检索工具。它的工作原理是通过搜索软件到互联网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站。然后按照一定的规则建立一个很大的在线数据库供用户查询。
用户在查询时只要输入关键词,就从已经建立的索引数据库上进行查询(并不是实时地在互联网上检索到的信息)。
最著名的全文检索搜索引擎:
Google(谷歌)(www.google.com)
百度 (www.baidu.com)
分类目录搜索引擎
并不采集网站的任何信息,而是利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询。
分类目录搜索也叫做分类网站搜索。
最著名的分类目录搜索引擎:
雅虎 (www.yahoo.com)
雅虎中国 (cn.yahoo.com)
新浪 (www.sina.com)
搜狐 (www.sohu.com)
网易 (www.163.com)
垂直搜索引擎 (Vertical Search Engine)
针对某一特定领域、 特定人群或某一特定需求提供搜索服务。
垂直搜索也是提供关键字来进行搜索的,但被放到了一个行业知识的上下文中,返回的结果更倾向于信息、消息、条目等。
博客、微博和社交网站
博客是万维网日志 (weblog) 的简称。
Weblog 这个新词是 Jorn Barger 于 1997 年创造的。
简写的 blog(这是今天最常用的术语)则是 Peter Merholz 于 1999 年创造的。
博客已经极大地扩充了互联网的应用和影响 。
在博客出现以前,网民是互联网上内容的消费者。
但博客改变了这种情况,网民不仅是互联网上内容的消费者,而且还是互联网上内容的生产者 。
微博:微型博客
微博不同于一般的博客。微博只记录片段、碎语,三言两语,现场记录,发发感慨,晒晒心情,永远只针对一个问题进行回答。
社交网站 SNS (Social Networking Site) 是近年来发展非常迅速的一种网站,其作用是为一群拥有相同兴趣与活动的人创建在线社区。
电子邮件
电子邮件 (e-mail):指使用电子设备交换的邮件及其方法。
电子邮件是互联网上使用得最多的和最受用户欢迎的一种应用。
优点:使用方便,传递迅速,费用低廉,可以传送多种类型的信息(包括:文字信息,声音和图像等)。
电子邮件的重要标准
- 简单邮件发送协议:SMTP
- 互联网文本报文格式
- 通用互联网邮件扩充 MIME
- 邮件读取协议:POP3(收) 和 IMAP(发)
注意:发送协议和接受协议是分开的
电子邮件的组成:三个主要构件
- 用户代理
- 邮件服务器
- 邮件发送和读取协议。
两种方式
用户代理 UA 方式
用户代理 UA (User Agent) 就是用户与电子邮件系统的接口,是电子邮件客户端软件。
功能:撰写、显示、处理和通信。
邮件服务器的功能
- 发送和接收邮件,
- 同时要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
通信要点:
注意:
- 邮件服务器按照客户 - 服务器方式工作。
- 邮件服务器需要使用发送和读取两个不同的协议。
缺点:
必须在计算机中安装用户代理软件。
但可能不能安装或不允许安装。
因此,不方便收发邮件。
基于WEB方式
基于万维网的电子邮件
要点:
- 发送、接收电子邮件时使用 HTTP 协议。
- 两个邮件服务器之间传送邮件时使用 SMTP。
邮件的信息格式
一个电子邮件分为信封和内容两大部分。
RFC 5322 只规定了邮件内容中的首部 (header) 格式,而对邮件的主体 (body) 部分则让用户自由撰写。
内容的首部
“To:” 后面填入一个或多个收件人的电子邮件地址。用户只需打开地址簿,点击收件人名字,收件人的电子邮件地址就会自动地填入到合适的位置上。
“Subject:” 是邮件的主题。它反映了邮件的主要内容,便于用户查找邮件。
“Cc:” 表示应给某某人发送一个邮件副本。
“From” 和 “Date” 表示发信人的电子邮件地址和发信日期。
“Reply-To” 是对方回信所用的地址。
内容的主体:只能是文本
简单邮件发送协议 SMTP协议
SMTP 规定了在两个相互通信的 SMTP 进程交换信息的方法。
SMTP 使用客户–服务器方式。
SMTP 基于 TCP 实现客户与服务器的通信。
SMTP 是一个基于文本的 (即 ASCII 码) 的协议。
SMTP 客户与服务器之间采用命令-响应方式进行交互。
注意: SMTP协议也是基于连接的,但是这个连接和TCP的连接不同
通信过程
SMTP 通信的三个阶段
- 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP不使用中间的邮件服务器。
- 邮件传送
- 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。
连接建立
邮件传送
连接释放
SMTP 有以下缺点:
SMTP 不能传送可执行文件或其他的二进制对象。
SMTP 限于传送 7 位的 ASCII 码。许多其他非英语国家的文字(如中文、俄文,甚至带重音符号的法文或德文)就无法传送。
SMTP 服务器会拒绝超过一定长度的邮件。
某些 SMTP 的实现并没有完全按照 SMTP 标准。
通用互联网邮件扩充 MIME
通用互联网邮件扩充 MIME 并没有改动 SMTP 或取代它。
MIME 在使用目前的 [RFC 822] 格式的基础上 ,增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
MIME 和 SMTP 的关系
MIME底层还是SMTP,但是MIME在用户和SMTP传输之间进行了编码。
主要部分
5 个新的邮件首部字段,它们可包含在原有首部中。这些字段提供了有关邮件主体的信息。
定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
MIME 举例
内容类型
MIME 着标准规定 Content-Type 说明必须含有两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。
MIME 标准原先定义了 7 个基本内容类型和 15 种子类型。
MIME允许发件人和收件人自己定义专用的内容类型。但为避免可能出现名字冲突,标准要求为专用的内容类型选择的名字要以字符串 X-开始。
IMAP 与 POP3协议
用途:用于接收文件
动态主机配置协议 DHCP
协议配置
在协议软件中,给协议参数赋值的动作叫做协议配置。
一个协议软件在使用之前必须是已正确配置的。
连接到互联网的计算机的协议软件需要配置的参数包括:
- IP 地址
- 子网掩码
- 默认路由器的 IP 地址
- 域名服务器的 IP 地址
动态主机配置协议 DHCP (Dynamic Host Configuration Protocol)
作用: 提供 即插即用连网 (plug-and-play networking) 的机制。
(允许一台计算机加入新的网络和获取 IP 地址,而不用手工配置。)
工作原理:
DHCP给运行服务器软件、且位置固定的计算机指派一个永久地址,给运行客户端软件的计算机分配一个临时地址。
DHCP 使用客户 - 服务器方式
-
需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为 DHCP 客户。
-
本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
-
DHCP 服务器先在其数据库中查找该计算机的配置信息。
若找到,则返回找到的信息。
若找不到,则从服务器的 IP 地址池 (address pool) 中取一个地址分配给该计算机。
DHCP服务器的回答报文叫做提供报文(DHCPOFFER)。
DHCP 工作方式
DHCP 使用客户-服务器方式,采用请求/应答方式工作。
- DHCP 基于 UDP 工作
- DHCP 服务器运行在 67 号端口, DHCP客户运行在 68 号端口
需要IP地址的主机向DHCP服务器广播发送发现报文 (DHCPDISCOVER) 。
DHCP服务器回答提供报文 (DHCPOFFER),表示“提供”IP地址等配置信息。
DHCP 中继代理(relay agent)
每一个网络至少有一个 DHCP 中继代理(一般就是出口路由器),它配置了 DHCP 服务器的 IP 地址信息。
工作过程:
当 DHCP 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。
收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机。
租用期 (lease period)
DHCP 服务器分配给 DHCP 客户的 IP 地址的临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期。
注意:
- 租用期的数值应由 DHCP 服务器自己决定。
- DHCP 客户也可在自己发送的报文中(例如,发现报文)提出对租用期的要求。
DHCP 协议的工作过程
:DHCP 服务器被动打开 UDP 端口 67,
等待客户端发来的报文。
❷:DHCP 客户从 UDP 端口 68
发送 DHCP 发现报文 DHCPDISCOVER。
❸:凡收到 DHCP 发现报文的 DHCP 服务器
都发出 DHCP 提供报文 DHCPOFFER,因此
DHCP 客户可能收到多个 DHCP 提供报文 。
❹:DHCP 客户从几个 DHCP 服务器中选择
其中的一个,并向所选择的 DHCP 服务
器发送 DHCP 请求报文 DHCPREQUEST。
❺:被选择的 DHCP 服务器发送确认报文
DHCPACK,进入已绑定状态,并可
开始使用得到的临时 IP 地址了。
DHCP 客户现在要根据服务器提供的租用期 T 设置两个计时器 T1 和 T2,它们的超时时间分别是 0.5T 和 0.875T。当超时时间到就要请求更新租用期。
❻:租用期过了一半(T1 时间到),DHCP 发送
请求报文 DHCPREQUEST,要求更新租用期。
❼:DHCP 服务器若同意,则发回确认报文
DHCPACK。DHCP 客户得到了新的租
用期,重新设置计时器。
❽:DHCP 服务器若不同意,则发回否认报 DHCPNACK。
这时 DHCP 客户必须立即停止使用原来的 IP 地址,
而必须重新申请 IP 地址(回到步骤 ❷)。
若 DHCP 服务器不响应步骤 ❻ 的请求报文 DHCPREQUEST,则在租用期过了 87.5% 时,DHCP 客户必须重新发送请求报文 DHCPREQUEST(重复步骤 ❻),然后又继续后面的步骤。
❾:DHCP 客户可随时提前终止服务器所提供的
租用期,这时只需向 DHCP 服务器发送释
放报文 DHCPRELEASE 即可。
简单网络管理协议 SNMP
网络管理
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能,服务质量等。网络管理常简称为网管。
网络管理并不是指对网络进行行政上的管理。
网络管理的五大功能
- 故障管理:故障检测、隔离和纠正。
- 配置管理:初始化网络、并配置网络。
- 计费管理:记录网络资源的使用。
- 性能管理:估价系统资源的运行状况及通信效率等。
- 网络安全管理:对授权机制、访问控制、加密和加密关键字的管理。
被管设备
网络的每一个被管设备中可能有多个被管对象。
被管设备有时可称为网络元素或网元。
在被管设备中也会有一些不能被管的对象。
SNMP组成
SNMP 的网络管理由三个部分组成:
- SNMP 本身:在管理程序和被管设备之间传输信息的协议。服务器是服务端,管理员设备是 客户端。
- 管理信息结构 SMI (Structure of Management Information)
- 管理信息库 MIB (Management Information Base)
管理信息结构 SMI
SMI 的功能:
被管对象应怎样命名;
用来存储被管对象的数据类型有哪些种;
在网络上传送的管理数据应如何编码。
SMI 规定所有被管对象必须在命名树上
管理信息库 MIB
(类似数据库,但是不是)
MIB 在被管理的实体中创建了命名对象,并规定了其类型。
管理程序使用 MIB 中的信息,对网络进行管理。
数据单元和报文
SNMP 的操作只有两种基本的管理功能:
- “读”操作,用 get 报文来检测各被管对象的状况;
- “写”操作,用 set 报文来改变各被管对象的状况。
SNMP 的这些功能通过探询操作(底层数据获取的方式)来实现。
探询操作
主流
探询操作 —— SNMP 管理进程定时向被管理设备周期性地发送探询信息。
探询的好处:
- 可使系统相对简单。
- 能限制通过网络所产生的管理信息的通信量。
探询的缺点:
- 不够灵活,而且所能管理的设备数目不能太多。
- 开销也较大。
陷阱(trap)
SNMP 不是完全的探询协议,它允许不经过询问就能发送某些信息。这种信息称为陷阱,表示它能够捕捉“事件”。
当被管对象的代理检测到有事件发生时,就检查其门限值。代理只向管理进程报告达到某些门限值的事件(即过滤)。
好处:
- 仅在严重事件发生时才发送陷阱;
- 陷阱信息很简单且所需字节数很少。
应用进程跨越网络的通信
系统调用和应用编程接口
大多数操作系统使用系统调用 (system call ) 的机制在应用程序和操作系统之间传递控制权。
是将程序的控制权 暂时交给操作系统。
对程序员来说,每一个系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将控制权传递给了操作系统。
应用编程接口 API
应用编程接口 API (Application Programming Interface)
就是系统调用接口,也就是应用进程的控制权和操作系统的控制权进行转换的一个接口。
使用系统调用之前要编写一些程序,特别是需要设置系统调用中的许多参数。
几种应用编程接口 API
-
Berkeley UNIX 操作系统定义了一种 API,它又称为套接字接口 (socket interface)。
-
微软公司在其操作系统中采用了套接字接口 API,形成了一个稍有不同的 API,并称之为 Windows Socket。
-
AT&T 为其 UNIX 系统 V 定义了一种 API,简写为 TLI (Transport Layer Interface)。
套接字
应用进程通过套接字接入到网络
套接字的作用
当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。
操作系统为这些资源的总和用一个叫做套接字描述符的号码来表示。
应用进程所进行的网络操作都必须使用这个套接字描述符。
通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该套接字描述符相关的所有资源。
调用 socket 创建套接字
类似操作系统中的 PCB
网络编程的流程
TCP 提供面向连接的服务。
使用TCP服务需要经历 3 个阶段:
- 连接建立阶段
- 数据传送阶段
- 连接释放阶段
UDP没有accept等连接部分
当套接字被创建后,它的端口号和 IP 地址都是空的,因此应用进程要调用 bind
(绑定)来指明套接字的本地地址。在服务器端调用 bind 时就是把熟知端口号和本地 IP 地址填写到已创建的套接字中。这就叫做把本地地址绑定到套接字。
服务器在调用 bind 后,还必须调用 listen(收听)把套接字设置为被动方式,以便随时接受客户的服务请求。UDP 服务器由于只提供无连接服务,不使用 listen 系统调用。
服务器紧接着就调用 accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用 accept 的一个变量就是要指明从哪一个套接字发起的连接。
本文作者:kingwzun
本文链接:https://www.cnblogs.com/kingwz/p/16851023.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步