讨论各种应用进程通过什么样的应用层协议来使用网络所提供的这些通信服务
域名系统 DNS
互联网域名结构
- 采用层次树状结构的命名方式
- 域名等级的划分:顶级域名、二级域名、三级域名…
- 域名只是个逻辑概念,并不代表计算机所在的物理地点
- DNS服务具有层次性和分布性的特点
- 域名中的点和IP中的点没有关系
- 每个域名服务器都有一个高速缓存
域名服务器
- 一个域名服务器管理的范围叫做区,区是域的子集
- 四种类型
- 根域名服务器:根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址
- 顶级域名服务器:顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)
- 权限域名服务器:负责一个区的域名服务器,当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器
- 本地域名服务器:当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器,每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器。
- 域名的解析过程
- 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
- 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。
- 名字的高速缓存
- 每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
文件传送协议
FTP 概述
- 文件传送协议 FTP (File Transfer Protocol) 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限,屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件
FTP 的基本工作原理
- FTP 使用客户-服务器方式
- 一个服务器可为多个客户进程服务
- 服务器分为一个主进程和许多附属进程,主进程接受新的请求,从属进程处理单个请求
- 过程:
- 主进程是先打开21号端口,等待客户机连接
- 客户连接上之后告诉服务器自己任意的接听端口号
- 服务器控制进程调用传送数据的20号端口与客户端建立数据传送连接
- 建立两个并行的 TCP 连接
- 控制连接:在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。
- 数据传送连接:实际用于传输文件,服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。
简单文件传送协议 TFTP
- TFTP (Trivial File Transfer Protocol) 是一个很小且易于实现的文件传送协议。
- TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施
- TFTP 的工作很像停止等待协议
远程终端协议 TELNET
- 和FTP一样,采用客服服务器方式
- 基于TCP,端口号为23
- 被SSH替代,端口号是22
万维网 WWW
万维网概述
- 万维网是一个大规模的、联机式的信息储藏所。
- 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息
- 万维网提供分布式服务
- 万维网以客户-服务器方式工作
- 万维网要解决的问题
- 怎样标志分布在整个互联网上的万维网文档?
- 使用统一资源定位符 URL (Uniform Resource Locator) 来标志万维网上的各种文档,使每一个文档在整个互联网的范围内具有唯一的标识符 URL。
- 用何协议实现万维网上各种超链的链接?
- 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议 HTTP (HyperText Transfer Protocol),HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送
- 怎样使各种万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链?
- 超文本标记语言 HTML (HyperText Markup Language) 使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。
- 怎样使用户能够很方便地找到所需的信息? 、
- 为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)。
- 怎样标志分布在整个互联网上的万维网文档?
统一资源定位符 URL
URL的格式
- 资源定位符 URL 是对可以从互联网上得到的资源的位置和访问方法的一种简洁表示
- URL 相当于一个文件名在网络范围的扩展。因此 URL 是与互联网相连的机器上的任何可访问对象的一个指针
- 一般形式
使用 HTTP 的 URL
超文本传送协议 HTTP
HTTP 协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
HTTP 的操作过程
- 面向事务的应用层协议
- 万维网工作过程
- 用户点击 URL http://www.tsinghua.edu.cn/chn/yxsz/index.htm后所发生的事件
- 浏览器分析超链指向页面的 URL。
- 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
- 域名系统 DNS 解析出清华大学服务器的 IP 地址。
- 浏览器与服务器建立 TCP 连接。
- 浏览器发出取文件命令:GET /chn/yxsz/index.htm。
- 服务器给出响应,把文件 index.htm 发给浏览器。
- TCP 连接释放。
- 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。
- 请求一个万维网文档所需的时间
- HTTP/1.0的主要缺点就是每请求一个文档就要有两倍 RTT 的开销,非持续连接,使用并行 TCP 连接可以缩短响应时间。
- HTTP/1.1 协议使用持续连接 (persistent connection)。
- 万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
- 两种工作方式:
- 非流水线方式:客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
- 流水线方式:客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。
代理服务器
- 代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。
- 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。
- 当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。
- 使用高速缓存可减少访问互联网服务器的时延
- 使用高速缓存
- 浏览器访问互联网的服务器时,要先与校园网的高速缓存建立 TCP 连接,并向高速缓存发出 HTTP 请求报文。
- 若高速缓存已经存放了所请求的对象,则将此对象放入 HTTP 响应报文中返回给浏览器。
- 否则,高速缓存就代表发出请求的用户浏览器,与互联网上的源点服务器建立 TCP 连接,并发送 HTTP 请求报文。
- 源点服务器将所请求的对象放在 HTTP 响应报文中返回给校园网的高速缓存。
- 高速缓存收到此对象后,先复制在其本地存储器中(为今后使用),然后再将该对象放在 HTTP 响应报文中,通过已建立的 TCP 连接,返回给请求该对象的浏览器。
HTTP 的报文结构
- 两类报文
- 请求报文:从客户向服务器发送请求报文。
- 响应报文:从服务器到客户的回答。
- “方法”是面向对象技术中使用的专门名词。所谓“方法”就是对所请求的对象进行的操作,因此这些方法实际上也就是一些命令。因此,请求报文的类型是由它所采用的方法决定的。
- 状态行包括三项内容,即 HTTP 的版本,状态码,以及解释状态码的简单短语。
- 状态码都是三位数字
- 1xx 表示通知信息的,如请求收到了或正在进行处理。
- 2xx 表示成功,如接受或知道了。
- 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
- 4xx 表示客户的差错,如请求中有错误的语法或不能完成。
- 5xx 表示服务器的差错,如服务器失效无法完成请求。
- 状态码都是三位数字
- 万维网站点使用 Cookie 来跟踪用户,Cookie 表示在 HTTP 服务器和客户之间传递的状态信息,使用 Cookie 的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。
万维网的文档
- XML是传输数据,HTML是显示数据
- 静态文档是指该文档服务器中,在被用户浏览的过程中,内容不会改变。
- 动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建
- 动态文档通过CGI来创建(通用网关接口),CGI脚本
- CGI 是一种标准。它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用
- 活动文档可直接与用户交互,由浏览器来执行
万维网的信息检索系统
- 全文检索
- 不是实时从互联网上检索的信息
- 把各网站信息放到很大的服务器上
- 分类目录检索
- 把申请的网站分门别类存放数据库
- 垂直搜索引擎:针对特定需求
电子邮件
电子邮件概述
- 电子邮件的一些标准
- 发送邮件的协议:SMTP
- 读取邮件的协议:POP3 和 IMAP
- MIME 在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等),使用 MIME 可在邮件中同时传送多种类型的数据
- 电子邮件的最主要的组成构件
- 步骤
- 发件人调用 PC 中的用户代理撰写和编辑要发送的邮件
- 发件人的用户代理把邮件用 SMTP 协议发给发送方邮件服务器
- SMTP 服务器把邮件临时存放在邮件缓存队列中,等待发送
- 发送方邮件服务器的 SMTP 客户与接收方邮件服务器的 SMTP 服务器建立 TCP 连接,然后就把邮件缓存队列中的邮件依次发送出去。
- 运行在接收方邮件服务器中的SMTP服务器进 程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取
- 收件人在打算收信时,就运行 PC 机中的用户代理,使用 POP3(或 IMAP)协议读取发送给自己的邮件
- 电子邮件 = 信封 + 内容
- 信封中有地址:xx@baidu.com
简单邮件传送协议SMTP
- 发送邮件,直接建立连接,不使用中间的邮件服务器
- 基于TCP,端口号25
- 不能传送可执行文件或其他二进制对象,只能传送一定长度的7位ASCII码
电子邮件的信息格式
- 一个电子邮件分为信封和内容两大部分。
- 规定了邮件内容中的首部 (header) 格式,而对邮件的主体 (body )部分则让用户自由撰写。
邮件读取协议 POP3 和 IMAP
POP3
- 读取邮件
- 基于TCP
- 由客户发起,即客户占有主动权
- 将邮件全部内容发送给客户
- 必须使用 POP客户程序
网际报文存取协议IMAP
- 联网读取邮件
- 用户选择服务器将哪些邮件发送到客户端
- 缺点:需要经常与IMAP服务器建立连接
基于万维网的电子邮件
- 电子邮件从 A 发送到网易邮件服务器使用 HTTP 协议。
- 两个邮件服务器之间的传送使用 SMTP。
- 邮件从新浪邮件服务器传送到 B 是使用 HTTP 协议。
- 万维网电子邮件的好处:只要能够找到上网的计算机,打开任何一种浏览器就可以非常方便地收发电子邮件。
通用互联网邮件扩充 MIME
MIME概述
- 通用互联网邮件扩充 MIME 并没有改动 SMTP 或取代它。
- 增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
- 包括三个部分
- 5 个新的邮件首部字段,它们可包含在 [RFC 822] 首部中。这些字段提供了有关邮件主体的信息。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
内容传送编码
- 7 位 ASCII 码,每行不能超过 1000 个字符。MIME 对这种由 ASCII 码构成的邮件主体不进行任何转换
- quoted-printable,这种编码方法适用于当所传送的数据中只有少量的非 ASCII 码。
- 对于任意的二进制文件,可用 base64 编码。
内容类型
- Content-Type 说明必须含有两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。
- MIME 标准定义了 7 个基本内容类型和 15 种子类型。
动态主机配置协议 DHCP
-
基于UDP,67号端口
-
即插即用连网
-
动态主机配置协议:自动配置DNS、网关、掩码、IP
-
流程
- 需要IP的主机像DHCP的67号端口广播发送报文,称为DHCP的客户
- DHCP在数据库中查找该客户的配置信息,找到则返回,找不到则从IP池中分配一个
- 凡收到 DHCP 发现报文的 DHCP 服务器,都发出 DHCP 提供报文,因此 DHCP 客户可能收到多个DHCP 提供报文
- 客户从多个中选择一个,并向其发送请求报文
- DHCP服务器发送确定,许可其使用临时IP
- 当客户的租用期到0.5T和0.875T时,就需要更新租用期
- 如果服务器不同意更新租用期,那么主机需要重新申请
- 主机可提前释放租用期
- renew(用于更新租约)和release(用于释放租约)
-
不是每个网络都有DHCP,每个网络至少有一个DHCP中继代理。当中继代理发现主机请求报文后,中继代理以单播形式向DHCP为该主机请求IP
-
租用的IP是临时的,DHCP 协议称这段时间为租用期。 租用期的数值由DHCP服务器自己觉定,主机也可请求租用期
简单网络管理协议 SNMP
网络管理的基本概念
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能,服务质量等。网络管理常简称为网管。
- 网络管理协议简称为网管协议。
- 网管协议是管理程序和代理程序之间进行通信的规则。
- 网络管理员利用网管协议通过管理站对网络中的被管设备进行管理。
简单网络管理协议 SNMP
- 管理程序和代理程序按客户服务器方式工作。
- 若要管理某个对象,就必然会给该对象添加一些软件或硬件,但这种“添加”必须对原有对象的影响尽量小些。
- SNMP 最重要的指导思想就是要尽可能简单。
- SNMP 的基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。
- 在网络正常工作时,SNMP 可实现统计、配置、和测试等功能。当网络出故障时,可实现各种差错检测和恢复功能。
- SNMP 使用无连接的 UDP
管理信息结构 SMI
- SMI 的功能:
(1) 被管对象应怎样命名;
(2) 用来存储被管对象的数据类型有哪些种;
(3) 在网络上传送的管理数据应如何编码。
管理信息库MIB
- 被管对象必须维持可供管理程序读写的若干控制和状态信息。这些信息总称为管理信息库 MIB (Management Information Base)
- 管理程序使用 MIB 中这些信息的值对网络进行管理(如读取或重新设置这些值)
SNMP 的协议数据单元和报文
- SNMP 的操作只有两种基本的管理功能
- “读”操作,用 get 报文来检测各被管对象的状况;
- “写”操作,用 set 报文来改变各被管对象的状况。
SNMP 的探询操作
- SNMP 管理进程定时向被管理设备周期性地发送探询信息
- 好处
- 可使系统相对简单
- 能限制通过网络所产生的管理信息的通信量
- 但探询管理协议不够灵活,而且所能管理的设备数目不能太多。探询系统的开销也较大。如探询频繁而并未得到有用的报告,则通信线路和计算机的 CPU 周期就被浪费了。
- 使用探询(至少是周期性地)以维持对网络资源的实时监视,同时也采用陷阱机制报告特殊事件,使得 SNMP 成为一种有效的网络管理协议。
报文格式
应用进程跨越网络的通信
系统调用和应用编程接口
- 大多数操作系统使用系统调用 (system call )的机制在应用程序和操作系统之间传递控制权。
- 应用编程接口API
- 当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口。
- 此接口再将控制权传递给计算机的操作系统。操作系统将此调用转给某个内部过程,并执行所请求的操作。
- 内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程。
- 把套接字作为应用进程和运输层协议之间的接口
- 调用socket创建套接字
常用的系统调用
- 连接建立
- 当套接字被创建后,它的端口号和 IP 地址都是空的,因此应用进程要调用 bind(绑定)来指明套接字的本地地址。在服务器端调用 bind 时就是把熟知端口号和本地IP地址填写到已创建的套接字中。这就叫做把本地地址绑定到套接字。
- 服务器在调用 bind 后,还必须调用 listen(收听)把套接字设置为被动方式,以便随时接受客户的服务请求。UDP 服务器由于只提供无连接服务,不使用 listen 系统调用。
- 服务器紧接着就调用 accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用 accept 的一个变量就是要指明从哪一个套接字发起的连接。
- 数据传送
- 客户和服务器都在 TCP 连接上使用 send 系统调用传送数据,使用 recv 系统调用接收数据。
- 通常客户使用 send 发送请求,而服务器使用 send 发送回答。
- 服务器使用 recv 接收客户用 send 调用发送的请求。客户在发完请求后用 recv 接收回答。
- 连接释放
- 一旦客户或服务器结束使用套接字,就把套接字撤消。这时就调用 close 释放连接和撤销套接字。
- 系统调用顺序
P2P应用
- P2P 体系结构就是在网络应用在中,没有(或只有极少数)固定的服务器,而绝大多数的交互都是使用对等方式进行的。