- 域名系统DNS
- 万维网和HTTP协议,万维网两种不同的搜索引擎
- 电子邮件的传送过程
- 动态主机配置协议DCHP
- 网络管理的三个组成部分
- P2P文件系统
应用层的协议多是基于客户-服务器方式。这里的客户和服务器都是应用进程。
应用层协议规定了应用进程通信时遵循的协议。
域名系统 DNS 是互联网使用的命名系统,用来把便于识别的名字转换为 IP 地址。
DNS 是一个联机分布数据库系统,采用客户-服务器方式。
DNS 使大多数名字在本地进行解析,只有少量解析要在互联网上通信。
域名到 IP 地址的解析是由互联网上的许多域名服务器共同完成的。
域名到 IP 地址的解析过程:
互联网采用层次树状结构的命名方法,任何一台连接在互联网上的主机或路由器都有唯一一个域名。
如以下两个网站采用了不同的四级域名:
www.buaa.edu.cn :北航主页
yzb.buaa.edu.cn :北航研招办
顶级域名 TLD 包括:
我国的二级域名分为两类:
域名服务器分为根域名服务器、顶级域名服务器、权限域名服务器和本地域名服务器。
域名解析过程中主机向本地域名服务器的查询是递归查询。
本地域名服务器向根域名服务器的查询是迭代查询,即当根域名服务器无法完成解析时,就把下一步应该查询的域名服务器告诉本地域名服务器。
为提高查询效率,域名服务器中采用了高速缓存,存放最近查询过的域名信息。
文件传送协议 FTP 使用 TCP 的可靠运输服务,为客户-服务器模式。
简单文件传送协议 TFTP 使用 UDP 协议。
FTP 和 TFTP 都属于文件共享协议中的一大类:复制整个文件。
特点:
FTP 主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
FTP 的服务器进程
一个 FTP 服务器进程可以同时为多个客户进程提供服务。
FTP 的服务器进程包括一个主进程和若干个从属进程:
服务器进程中的主进程和从属进程是并发执行的。
文件传输功能的实现
文件传输时,FTP 的客户和服务器之间会建立两个并行的 TCP 连接:控制连接和数据连接,其中数据连接用于传输文件。因此 FTP 要使用两个端口号。
两个连接对应服务器端的两个从属进程:控制进程和数据传送进程。
FTP 客户发送的传送请求通过控制连接发送给控制进程。然后控制进程创建数据传送进程和数据连接。
简单文件传送协议 TFTP 使用 UDP 协议。
TFTP 的主要优点是可用于 UDP 环境,代码简便。
TFTP 采用了类似停止等待协议的重传机制。即发送后就等待确认,没有确认就重传。
远程终端协议 TELNET 采用客户服务器模型。
能将客户端的操作传到服务器端,然后将服务器端的输出返回到客户端屏幕。
TELNET 采用 TCP 协议。
TELNET 的服务器进程
TELNET 的服务器进程类似 FTP,由主进程等待新的请求,并产生从属进程来处理每一个连接。
万维网 WWW 是一个大规模的、联机式的信息储藏所。
万维网的简称是 Web。
超文本指的是包含指向其他文档的链接的文本,一个超文本由多个信息源链接组成。
超文本仅包含文本信息,超媒体扩充为包含图形、声音、视频等。
万维网是一个分布式的超媒体系统。
Web 的客户程序向互联网中的服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
页面就是在客户程序主窗口显示出的万维网窗口。
Web 要处理的几个问题及解决方式:
万维网使用统一资源定位符 URL 来标志万维网上的各种文档,每个文档有在互联网内唯一的 URL。
URL 相当于指向互联网上任何可访问对象的一个指针。
URL 的一般形式:<协议>://<主机>:<端口>/<路径>
输入 URL 时协议和 www 都可以省略,浏览器会自动补上。
使用 HTTP 的 URL
HTTP 的默认端口号是 80,通常都省略掉了。
当路径也省略掉,则 URL 指向互联网上的某个主页,比如 http://www.buaa.edu.cn
。
主页可以是:
HTTP 是面向事务的应用层协议。事务指的是一系列的不可分割的信息交换(即这些信息交换是一个整体)。
万维网客户与服务器程序之间交互使用的协议是 HTTP 协议。万维网的客户就是浏览器
HTTP 本身是无连接、无状态的,使用可靠传输的 TCP 协议。
HTTP连接的建立与释放
每个万维网网点都有一个服务器进程,它不断地监听 TCP 的端口 80,当发现有浏览器向它发来 TCP 的连接建立请求并建立连接后,浏览器就会发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。最后 TCP 连接释放。
注意这个过程:
首先建立 TCP 连接,且该连接的端口为 80。客户会把 HTTP 请求报文作为 TCP 连接三次握手中的第三个报文的数据。然后服务器直接返回文档作为响应。
HTTP/1.1
HTTP/1.1 协议使用了持续连接。就是万维网服务器在发送响应后一段时间内仍保持这条连接,当客户继续访问时不需要重新建立 TCP 连接。
HTTP/1.1 协议的持续连接有两种工作方式:
代理服务器
代理服务器又称万维网高速缓存,它把最近的一些请求和响应暂存在本地磁盘中。当新请求与暂存的请求相同,就返回暂存的响应。
代理服务器可以在客户端或服务端工作,也可以在中间系统上工作。
比如某个校园网使用了代理服务器,当校园网中某个主机的浏览器请求服务时,先和代理服务器建立 TCP 连接并发出 HTTP 请求报文,如果代理服务器有所请求对象就返回这个对象,如果没有,代理服务器就代表用户与源点服务器建立连接并发送 HTTP 请求报文。
HTTP 的报文结构
HTTP 报文的每一个字段都是 ASCII 码串。
HTTP 有请求报文和响应报文两类报文。
HTTP 报文由三部分组成:
注意:HTTP 报文中,请求行最后有一个 CRLF,其他所有首部之间也都有一个 CRLF,首部与实体主体之间有两个 CRLF。
一个 HTTP 请求报文的例子:
GET /dir/index.htm HTTP/1.1 //请求行,这里使用了相对 URL
Host:www.buaa.edu.cn //第一个首部行,给出了主机的域名
Connection:close //告诉服务器发送完请求的文档后就可以释放连接。
User-Agent:Mozilla/5.0 //表明用户代理使用了火狐浏览器
Accept-Launguage:cn //表明用户希望优先收到中文版本的文档
//请求报文的最后还有一个空行
HTTP 请求报文的一些方法
HTTP 响应报文的 5 大类状态码:
在服务器上存放用户的信息
HTTP 是无状态的。当有时想要保存一些信息,比如保存某网站的账号与密码,就需要采用 Cookie 技术。万维网站点可以使用 Cookie 来跟踪用户。
Cookie 的工作原理:
当用户 A 浏览某网站,该网站的服务器就为 A 产生一个唯一的识别码,并存储在数据库中,接着在给 A 的响应报文中添加一个字段名为 Set-cookie,值为识别码的首部行,A 收到此响应报文后把它存储在自己的 Cookie 文件中。这样服务器就能够知道用户 A 什么时候访问了哪些页面。当 A 之后再次访问时,服务器可以识别出 A,这样就不需要用户 A 再次输入姓名,密码等。
万维网使用超文本标记语言 HTML 来显示各种万维网页面。
其他语言
可扩展标记语言 XML 和 HTML 很相似。但从设计宗旨而言,XML 用于传输数据,而 HTML 用于显示数据。
可扩展超文本标记语言 XHTML 是作为一种 XML 应用被重新定义的 HTML,将逐步取代 HTML。
层叠样式表 CSS 是一种样式表语言,用于为 HTML 文档定义布局。如规定在浏览器上显示的字体、颜色、边距等。
静态文档
万维网静态文档:文档创作完毕后就存放在万维网服务器中,在用户浏览过程中,内容不会变。
动态文档
动态文档:文档的内容是在浏览器访问万维网服务器时由应用程序动态创建的。每次访问用户看到的内容都是不一样的。
比如天气预报、股市行情等都要用动态文档。
动态文档和静态文档的差别主要在服务器一端。
通用网关接口 CGI 是一种标准,定义了动态文档如何创建。服务器端使用 CGI 程序来创建动态文档。
脚本指的是被另一个程序而非处理器来解释或执行的程序。JavaScript 等就是脚本语言。
活动文档
活动文档:可以使浏览器屏幕连续更新。
当浏览器请求一个活动文档,服务器直接返回一段活动文档程序的副本,使该程序副本在浏览器端运行。活动文档程序可以与用户直接交互,并可以连续地改变屏幕的显示。
搜索引擎是在万维网中进行搜索的工具,可以分为全文搜索引擎(百度、谷歌等) 和 分类目录搜索引擎(搜狐、新浪等门户网站)两大类。
全文检索搜索引擎的工作原理:通过搜索软件(如爬虫程序)到各网站搜集信息,像蜘蛛爬行一样从一个网站连接到另一个网站,然后建立一个在线索引数据库。当用户查询时,就从已经建立的索引数据库中进行查询。
Google 搜索技术的特点
Google 的核心技术是 PageRank,即网页排名。
将搜索结构根据重要性排名。关键字频率、是否知名网站等都会影响重要性。
电子邮件系统包括三个主要构件:用户代理、邮件服务器、邮件协议(包括邮件发送协议和邮件读取协议)。
用户代理就是电脑上的邮件客户端。
从用户代理把邮件发送到邮件服务器,以及邮件服务器之间的传送都要使用 SMTP 协议。用户代理从邮件服务器读取邮件时则使用 POP3 或 IMAP 协议。
发送邮件的过程
用户代理使用 SMTP 协议把邮件发给“发送方邮件服务器”,然后“发送方邮件服务器”与“接收方邮件服务器”建立 TCP 连接并把邮件发送过去,邮件不会在某个中间服务器落地。收件人收信时,使用 POP3 协议从“接收方邮件服务器”读取邮件。
一个邮箱地址的格式是:用户名@邮件服务器的域名,如:
[email protected]
SMTP 采用客户-服务器模式。
发件人的邮件会存在发送方邮件服务器的邮件缓存中,发送方邮件服务器(此时它是 SMTP 客户)定期扫描邮件缓存,如果有邮件就与接收方邮件服务器建立连接并发送过去。
SMTP 的熟知端口是 25。
SMTP 发送的是明文,不利于保密;发送邮件不需要鉴别,方便了垃圾文件的泛滥。新出的扩展的 SMTP 即 ESMTP 对这些进行了改进。
略。
常用的邮件读取协议有 POP3 和 IMAP。
POP3
POP3 采用客户-服务器模式,它非常简单、但功能有限。POP3 的特点是只要用户从 POP3 服务器读取了邮件,服务器就把该邮件删除。
IMAP
IMAP4 也采用客户-服务器模式,但是复杂地多。IMAP4 是一个联机协议,用户在自己计算机上就可以操纵邮件服务器的邮箱。
用户打开邮件时,邮件才传到用户的计算机上。用户未主动删除邮件前,IMAP 服务器邮箱中的邮件就一直保存着。
IMAP 的缺点是如果用户没有将邮件复制到自己计算机上,每次查阅邮件都必须上网。
网易邮箱大师中的服务器设置
基于万维网的电子邮件即用户使用浏览器收发电子邮件,这种情况用户浏览器和邮件服务器之间的传送使用 HTTP 协议,邮件服务器之间的传送仍使用 SMTP 协议。
万维网电子邮件不需要在计算机中安装用户代理软件。
SMTP 只能传送 ASCII 码,不能传送非英语文字,也不能传送可执行文件等。
通用互联网邮件扩充 MIME 对 SMTP 进行了扩充,它定义了传送非 ASCII 码的编码规则。
网络中传送的还是 ASCII 码,MIME 采用一些编码方式来用 ASCII 码表示其他字符。
MIME 指定了几百上千种可传送的文件类型,这些类型涵盖了常用的各种文件类型。
因为 IP 地址中包含了网络号,而计算机第一次使用前不知道它会连到哪个网络,所以无法在出厂前就设置好 IP 地址。
当计算机的 IP 地址发生变化,比如计算机到了一个新的网络中,就要使用动态主机配置协议 DHCP 来配置 IP 地址,通过 DHCP 可以实现即插即用联网,而不需要人工配置 IP 地址。
配置 IP 地址的方法
DHCP 采用了客户-服务器模式。
需要配置 IP 地址的主机启动时就向 DHCP 服务器广播发送发现报文。DHCP 收到后会给该计算机发送一个提供报文来提供分配的 IP 地址。
响应 DHCP 客户的 DHCP 服务器可能有多个,客户机会从中选择一个给其发送请求报文。
每个网络至少有一个 DHCP 中继代理(一般是一个路由器),用来做主机与 DHCP 服务器之间的中转。
DHCP 服务器分配的地址有一个租用期限制。可能是几小时也可能是几年。当接近租用期了 DHCP 会请求更新租用期。
DHCP 客户的熟知端口是 68,DHCP 服务器的熟知端口是 67。
当一个手机从连接到一个新的 wifi 时,就要通过 DHCP 来获取新的 IP 地址。
网络管理包括对硬件、软件和人力的使用、综合和协调。
在一个网络管理系统中会有一个管理者和许多被管设备。被管设备可能是主机、路由器、集线器等。
每个被管设备中都要运行一个网络管理代理程序。代理程序在管理程序的命令和控制下,在被管设备上采取本地的行动。
网络管理采用的协议就是 SNMP 协议。
SNMP 协议
SNMP 协议中,管理程序运行 SNMP 客户程序,代理程序运行 SNMP 服务器程序。被管对象上的 SNMP 服务器程序不停监听 SNMP 客户程序的请求和命令,一旦发现就执行对应动作。
网络管理有一个基本原理:要管理某个对象,就必然要给这个对象添加一些软件或硬件,但是这种添加的影响应该尽量小一些。SNMP 最重要的思想是尽量简单。
简单网络管理协议 SNMP 包括三部分:
SMI 的功能有三个:
被管对象的命名
SMI 规定所有的被管对象的名字都必须在一颗对象命名树上。即类似于 URl 的命名方式。
被管对象的数据类型
SMI 把数据类型分为两大类:简单类型和结构化类型,简单类型有 Interger32 等,结构化类型有 sequence(类似结构体) 和 sequence of(类似数组) 两种。
SMI 采用了抽象语法记法来定义数据类型。抽象语法只描述数据的结构形式,不考虑具体的编码格式,也不考虑数据结构在内存中如何存放。
编码方法
SMI 使用基本编码规则 BER 来进行数据编码,BER 指明了数据类型和值。它把所有的数据元素都组织为一个 T-L-V 三字段序列,T 定义数据类型,L 定义 V 字段的长度,V 定义数据的值。
管理信息就是被管对象的集合。被管对象必须维持供管理程序读写的若干控制和状态信息,这些被管对象就构成了一个虚拟的信息存储器,称为管理信息库 MIB。
只有 MIB 中的对象才是 SNMP 可以管理的。
实际上 SNMP 的操作只有两种基本的管理功能:
SNMP 使用无连接的 UDP。
SNMP 实现管理功能的方式:
系统调用接口是应用进程的控制权和操作系统的控制权进行转换的接口,又称为应用编程接口 API。
API 就是应用程序和操作系统之间的接口。
API 和一般的函数调用很相似,应用程序调用 API 来将控制器传递给操作系统。
现在的 TCP/IP 协议软件是驻留在操作系统中的。套接字接口就是一种供应用程序使用 TCP/IP 服务的 API,Windows 系统就采用了套接字接口。
套接字是应用进程和运输层协议之间的接口,是应用进程为了获得网络通信服务而与操作系统进行交互时使用的一种机制。
理解:套接字实际上就是一套 API 接口,应用进程(应用层)通过套接字来使用位于操作系统内核的 TCP/IP 服务(运输层)。
套接字描述符
应用进程需要使用网络时,就要请求系统为其创建一个套接字,这个请求实际上是请求操作系统把网络通信所需的一些系统资源(如存储器时间、CPU 时间、网络带宽等)分配给它,操作系统使用一个套接字描述符来表示这些资源的总和,并将这个套接字描述符返回给应用进程。此后,应用进程的所有网络操作都要使用这个套接字描述符。
套接字描述符是套接字接口中的第一个参数。
通信完毕后,系统要回收该套接字描述符相关的所有资源。
套接字的数据结构
在机器中有一个套接字描述符表,其中存储了多个套接字描述符,每个进程对应一个套接字描述符,每个描述符有一个指针指向存放套接字的地址。
在套接字的数据结构中有很多参数要填写,如协议族(PF_INET 表示 TCP/IP 协议族)、服务(SOCK_STREAM 表示 TCP 服务)、本地和远地 IP 地址、本地和远地端口等。
下面以使用 TCP 服务为例介绍了几种常用的系统调用
P2P 应用采用了 P2P 体系结构:没有固定的服务器,绝大多数交互都使用对等方式。
目前 P2P 工作方式下的文件共享占据了互联网流量中最大的份额,比万维网所占比例大得多。
第一代的 P2P 文件共享网站采用了这种方式。
这种方式下,所有用户机上文件的地址存放在一台服务器上,某个用户要下载资源时首先向该服务器询问资源地址,再从存储资源的计算机下载资源。
BT 是一种很流行的 P2P 应用,采用“最稀有的优先”的技术,尽快把最稀有的文件块收集到。
BT中参与某个文件分发的所有对等方构成了一个“洪流”,每一个洪流都有一个“追踪器”,当有对等方加入洪流时,要向追踪器登记。
如果有当前以最高数据率向某个对等方传送文件块的相邻对等方,该对等方就要优先把所请求的文件块传送给这些相邻对等方。这样使对等方彼此都能以较高的速率交换文件块。
当对等方的数量很大时,采用 P2P 下载文件比传统的客户-服务器模型快很多。
P2P 中广泛使用的索引和查找技术是分布式散列表 DHT,它实际上是一个分布式数据库。
数据库中仅包含两部分信息:关键字是资源名,值是存放对象的节点的 IP 地址,只要给出资源名就能查到 IP 地址。但是数据库是分布式的,资源名保存在哪一台主机中呢?这就要用到基于 DHT 技术的算法。
Chord 算法是一种基于 DHT 的算法,它采用了散列函数来将资源名映射为了一个均匀分布的数字(标识符),然后将其放到 Chord 环上。
保存资源名的主机也通过散列函数映射为一个标识符放到 Chord 环上作为环上的结点(显然结点数目远少于资源名数目),然后每个资源名就保存到 Chord 环上离他最近的结点所对应的主机中。