《计算机网络基础》笔记 -----应用层(六)

每个应用协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。
应用层的许多协议都是基于客户服务器方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务的关系。客户是服务请求方,服务器是服务提供方。

应用层目录

1.域名系统

  • 域名系统概述

    • 许多应用层软件经常使用域名系统DNS(Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。
    • 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS
    • 名字到IP地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的节点上运行,运行该程序的机器称为域名服务器
  • 互联网的域名结构

    • 互联网采用了层次树状结构的命名方法
    • 任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
    • 域名的结构由标号序列组成,各标号之间用电话隔开:

      ··· 三级域名·二级域名·顶级域名

    • 各标号代表不同级别的域名。
    • 域名只是个逻辑概念
      • 域名只是个逻辑概念,并不代表计算机所在的物理地点
      • 变长的域名和使用有助于记忆的字符串,是为了便于人来使用。而IP地址是定长的32位二进制数字则非常便于机器进行处理。
      • 域名中的“点”和点分十进制IP地址中的“点”并无一一对应关系。点分十进制IP地址一定是包含三个点,但是每一个域名中的“点”的数目则不一定正好是三个。
    • 顶级域名TLD(Top Level Domain)
      • 国家顶级域名
        • .cn表示中国
        • .us表示美国
        • .uk表示英国,等等
      • 通用顶级域名gTLD
        • 最早的顶级域名是:
          • .com(公司和企业)
          • .net(网络服务机构)
          • .org(非盈利性组织)
          • .edu(美国专用的教育机构)
          • .gov(美国专用的政府部门)
          • .mil(美国专用的军事部门)
          • .init(国际组织)
      • 基础结构域名(infrastructure domain)
        - 这种顶级域名只有一个,即arpa
        - 用于反向域名解析,因此又称为反向域名
        • 新增了下列的通用顶级域名
          • .aero (航空运输企业)
          • .biz (公司和企业)
          • .cat (加泰隆人的语言和文化团体)
          • .coop(合作团体)
          • .info (各种情况)
          • .jobs (人力资源管理者)
          • .mobi(移动产品与服务的用户和提供者)
          • .museum (博物馆)
          • .name(个人)
          • .pro (有证书的专业人员)
          • .travel(旅游业)
      • 互联网的域名空间
        互联网的域名空间
  • 域名服务器

    • 一个服务器所负责管辖的(或有权限的)范围叫做区(Zone)
    • 各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。
    • 每一个去设置相应的权限域名服务器,用来保存该区中所有的主机域名到IP地址的映射。
    • DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
    • 区的不同划分方法举例
      区的不同划分方法举例
  • 树状结构的DNS域名服务器
    树状结构的DNS域名服务器

    • 根域名服务器

      • 根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名都知道所有的顶级域名服务器的域名和IP地址。
      • 不管是哪一个本地域名服务器,如要对互联网上任何一个域名进行解释,只要自己无法解析,就首先求助于根域名服务器
      • 在互联网上共有13个不同IP地址的根域名服务器,他们的名字是用英文字母命名,从a一直到m(前13个字母)
      • 根域名服务器共有13套装置,不是13个机器
      • 这些根域名服务器相应的域名分别是:
      • 到2016年2月,全世界已经再588个地点安装了根域名服务器,使世界上大部分DNS域名服务器都能就近找到一个根域名服务器
      • 根域名服务器L分布在世界150个地点
        • 根域名服务器并不直接把域名直接转换成IP地址
        • 在使用迭代查询时,根域名服务器把下一步应当找的顶级域名服务器的IP地址告诉本地域名服务器
    • 顶级服务器

      • 顶级域名服务器(即TLD服务器)负责管理在该顶级域名服务器注册的所有二级域名
      • 当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)
    • 权限域名服务器

      • 负责一个区的域名服务器
      • 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉出查询请求的DNS客户,下一步应当找哪一个权限域名服务器
    • 本地域名服务器

      • 本地域名服务器对域名系统非常重要。
      • 当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器。
      • 每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,
      • 这种域名服务器有时也称为默认域名服务器。
  • 提高域名服务器的可靠性

    • DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器
    • 当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断。
    • 主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证数据的一致性。
  • 域名的解析过程

    • 主机向本地域名服务器的查询一般都是递归查询。如果主机所查询的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的请求报文时。
    • 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续查询。
      本地域名服务器采用迭代查询
  • 名字的高速缓存

    • 每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。
    • 可大大减轻根域名服务器的负荷,使互联网上的 DNS 查询请求和回答报文的数量大为减少。
    • 为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)。
    • 当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。

2.文件传输协议

  • FTP概述

    • 文件传输协议FTP(File Transfer Protocol)是互联网上使用的最广泛的文件传输协议
    • FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
    • FTP屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件
    • RFC 959很早就成为了互联网的正式标准。

    文件传送并非很简的问题
    1.网络环境中一项基本应用就是将文件从一台计算机复制到另一台可能相距很远的计算机中。
    2.初看起来,在两个主机之间传送文件是很简单的事情
    3.其实这往往非常困难。原因是众多的计算机厂商研制的文件系统多达数百种,且差别很大。

  • FTP的基本工作原理

    • 网络环境下复制文件的复杂性:
      • 计算机存储数据的格式不同
      • 文件的目录结构和文件命名的规定不同
      • 对于相同文件存取功能,操作系统使用的命令不同
      • 访问控制方法不同
    • FTP的特点
      • 文件传输协议FTP只提供文件传送的一些基本协议的服务,他使用TCP可靠的传输服务
      • FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性
      • FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程有两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。
  • 主进程的工作步骤

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

    • 控制连接在整个会话期间一直保持打开,FTP客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。
    • 实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP客户发来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程
    • 数据传送进程实际完成文件的传送,在传送完毕后关闭“数据连接”并结束运行。
      FTP使用的两个连接
  • 使用两个不同端口的好处

    • 使协议更加简单和容易实现
    • 在传输文件时还可以利用控制连接(例如,客户发送请求终止传送)
  • NFS采用另一种思路

    • NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。
    • NFS可使用户复制一个大文件中很小的片段,而不需要重复复制整个大文件
    • 例如,计算机A的NFS客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地计算机B的NFS服务器。NFS服务器更新文件后返回应答信息。
    • NFS在网络上传送的只是少量的修改数据。
  • 简单文件传送协议TFTP

    • TFTP(Trivial File Transfer Protocol)是一个很小且易于实现的文件传输协议
    • TFTP使用客户服务器方式和使用UDP数据报,因此TFTP需要有自己的差错改正措施
    • TFTP只支持文件传输而不支持交互
    • TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户身份鉴别
    • TFTP的主要特点
      • 每次传送的数据PDU中有512字节的数据,但最后一次可不足512字节
      • 数据PDU也称为文件块(block),每个块序编号,从1开始
      • 支持ASCII码或二进制传送
      • 可对文件读或写
      • 使用很简单的首部
    • TFTP的工作很想停止等待协议
      • 发送完一个文件块就等待对方的确认,确认时应指明所确认的快编号。
      • 发完数据后在规定的时间内收不到确认就要重发数据PDU
      • 发送确认PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU。这样可以保证文件的传送不致因某一个数据报丢失而告失败。
      • 开始工作时,TFTP客户进程发送一个读请求PDU或写请求PDU给TFTP服务器进程,其熟知端口号码为69。
      • TFTP服务器进程要选择一个新的端口和TFTP客户进程进行通信
      • 若文件长度恰好为512字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据PDU。
      • 若文件长度不是512的整数倍,则最后传送数据PDU的数据字段不满512字节,这正好可作为文件结束的标志。

3.远程终端协议TELNET

  • TELNET是一个简单的远程终端协议,也是互联网的正式标准。
  • 用户用TELNET就可以在其所在地通过TCP连接注册(即登登录)到远地的另一个主机上(使用主机名或IP地址)。
  • TELNET能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。
  • 客户 - 服务器方式
    • 现在由于PC的功能越来越来强,用户已经较少使用TELENT了
    • TELNET也使用客户服务器方式。在本地系统TELNET客户进程,而在远地主机则运行TELNET服务器进程
    • 和FTP的情况相似,服务器中的主进程等待的请求,并产生从属进程来处理每一个连接。
      TELNET使用NVT格式
    • 网络虚拟终端NVT格式
      • 客户软件把用户的击键和命令转换成NVT格式,并送交服务器
      • 服务器软件把收到的数据和命令,从NVT格式转换成远地系统所需的格式
      • 向用户返回数据时,服务器把远地系统的格式转换为NVT格式,本地客户再从NVT格式转换到本地系统所需的格式

4.万维网WWW

  • 万维网概述

    • 万维网WWW(World Wide Web)并非某种特殊的计算机网络
    • 万维网是一个大规模的,联机式的信息储藏所
    • 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地获取丰富的信息。
    • 这种访问方式成为"链接"
      万维网提供分布式服务
      • 超媒体与超文本
        • 万维网是分布式超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。
        • 一个超文本由多个信息源链接成。利用一个链接可使用用户找到另个文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础。
        • 超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他方式的信息,如图形,图像,声音,动画,甚至活动视频图像。
      • 万维网的工作方式
        • 万维网以客户-服务器方式工作
        • 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务程序,因此这个计算机也称为万维网服务器。
        • 客户程序向服务器程序请求,服务器程序向客户程序送回客户所要的万维网文档。
        • 在一个客户程序主窗口上显示的万维网文档称为页面(Page)
      • 万维网必须解决的问题
        • 1.怎样标志分布在整个互联网上的万维网文档?
          • 使用统一资源定位符URL(Uniform Resource Locator)来标志万维网上的各种文档。
          • 使每一个文档在整个互联网的范围内具有唯一的标识符URL
      • 2.用何协议实现万维网上各种超链接?
        • 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传输协议HTTP(HyperText Transfer Protocol)
        • HTTP是一个应用层协议,它使用TCP连接进行可靠传送
      • 3.怎样使万维网文档都能在互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在超链接?
        • 超文本标记HTML(HyperText Markup Language)使得万维网页面的设计者可以很方便地用一个超链从本页面的某处链接到互联网上的任何万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。
      • 4. 怎样使用户能够很方便地找到所需的信息?
        • 为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)。
  • 统一资源定位符URL

    • URL的格式
      • 资源定位符URL是对可以从互联网上得到的资源位置和访问方法的一种简洁表示
      • URL给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位
      • 只要能够对资源定位,系统就可以对资源进行各种操作,如存取,更新,替换和查找其属性。
      • URL相当于一个文件名在网络范围的扩展。因此URL是与互联网相连的机器上任何可访问对象的一个指针。
    • URL的一般形式
      • 由以冒号隔开的两大部分组成,并且在URL中的字符对大写或小写没有要求。
        • URL的一般形式是:
          URL的一般形式
          • 现在有些浏览器为了方便用户,在输入 URL 时,可以把最前面的“http://”甚至把主机名最前面的“www”省略,然后浏览器替用户把省略的字符添上。
          • 例如,用户只要键入 ctrip.com,浏览器就自动把未键入的字符补齐,变成http://www.ctrip.com。
    • 使用HTTP的URL
      http://<主机>:<端口>/<路径>
      http   	----- 这表示使用HTTP协议
      ://  	----- 冒号和两个斜线是规定的格式
      <主机> ----- 这里写主机域名
      <端口> ----- HTTP的默认端口是80,通常可以省略
      <路径> ----- 若再省略文件的<路径>项,则 URL 就指到互联网上的某个主页 (home page)。更复杂一些的路径是指向层次结构的从属页面。例如:http://www.tsinghua.edu.cn/publish/newthu/newthu_cnt/faculties/index.html
      
      
      
  • 超文本传输协议HTTP

    • HTTP的操作过程
      • 为了使超文本的链接能够高效地完成,需要用HTTP协议来传送一切必须的信息
      • 从层次的角度看,HTTP是面向事务的(transaction-orientation)应用层协议,它是万维网上能够可靠交换文件(包括文本,声音,图像等各种多媒体文件)的重要基础
      • 万维网的工作过程
        万维网的工作过程
        • 每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向它发出建立请求
        • 一旦监听到连接建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应
        • 最后,TCP连接就被释放了。
        • 在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。这些格式和规则就是超文本传送协议HTTP
        • HTTP规定在HTTP客户与HTTP服务器之间的每次交互,都由一个ASCII码串构成的请求个一个类似的通用联网扩充,即“类MIME(MIME-like)”的响应组成
        • HTTP报文通常都是使用TCP连接传送
      • 用户浏览网页的两种方法
        • 在浏览器的地址窗口中键入所要的页面的URL
        • 在某一个页面中用鼠标点击一个可选部分,这是浏览器会自动在互联网上找到所要链接的页面
      • HTTP的主要特点
        • HTTP使用了面向连接的TCP作为运输层的协议,保证了数据的可靠传输
        • HTTP协议本身也是无连接的,虽然它使用了面向连接的TCP向上提供服务
        • HTTP是面向事务的客户服务器协议
        • HTTP1.0协议是无状态的
        • 请求一个万维网文档所需的时间
          在这里插入图片描述
          • 持续连接
            • HTTP/1.1协议使用持续连接(persistence connection)
            • 万维网服务器在发送响应后仍然在一段时间内保持这条连接,是同一个客户(浏览器)和服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。
            • 这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
            • 目前一些流行的浏览器(例如,IE6.0)默认就是使用HTTP/1.1
          • 持续连接的两种方式
            • 非流水线方式:客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍RTT的开销节省了建立TCP连接所需的一个RTT时间。但服务器在发送完一个对象后,其TCP链接就处于空闲状态,浪费了服务器资源。
            • 流水线方式:客户在收到HTTP的响应报文前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可持续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个RTT时间,使TCP连接中的空闲时间减少,提高了下载文档效率。
    • 代理服务器
      • 代理服务器(proxy server)又称为万维网高速缓存(Web cache),她代表浏览器发出HTTP请求
      • 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中
      • 当与暂时存放的请求相同的请求到达时,万维网高速缓存的响应发送出去,而不需要按URL的地址再去互联网访问该资源。
    • HTTP的报文结构
      • HTTP有两类报文:
        • 请求报文---- 从客户向服务器发送请求报文
        • 响应报文---- 从服务器到客户的回答
        • 由于HTTP是面向正文的(text-orientated),因此在报文中的每一个字段都是ASCII码串,因而每个字段的长度都是不确定的
      • HTTP请求报文
        HTTP请求报文
        • 响应报文
          HTTP响应报文
    方法(操作)意义
    OPTION请求一些选项信息
    GET请求读取URL所标志的信息
    HEAD读取由URL标志的信息首部
    POST给服务器添加信息(例如,注释)
    PUT指明的URL存储一个文档
    DELETE删除指明的URL所标志的资源
    TRACE用来进行环回测试的请求报文
    CONNECT用于代理服务器
    • 在服务器上存放用户信息
      • 万维网站点可以使用Cookie来跟踪用户
      • Cookie标识在HTTP服务器和客户执勤啊传递的转态信息
      • 使用Cookie的网站服务器为用户产生一个唯一的识别码。利用此识别码,网站就能够跟踪该用户在该网站的活动。
  • 万维网文档

    • 超文本标记语言HTML
      • 超文本标记语言HTML中的Markup的意思就是“设置标记”。
      • HTML定义了许多用于排版的命令(即标签)
      • HTML把各种标签嵌入到万维网的页面中。这样就构成了所谓的HTML文档。HTML文档是一种可以用任何文本编辑器创建的ASCII码文件
      • HTML文档
        • 仅当HTML文档是以.html或.htm为后缀时,浏览器才对此文档的各种标签进行解释
        • 如HTML文档改换为以.txt为其后缀,则HTML解释程序就不对标签进行解释,而浏览器只能看见原来的文本文件。
        • 当浏览器从服务器读取 HTML 文档后,就按照 HTML 文档中的各种标签,根据浏览器所使用的显示器的尺寸和分辨率大小,重新进行排版并恢复出所读取的页面。
      • 两种不同的链接
        • HTML还规定了链接的设置方法。每一个链接都有一个起点和终点
        • 远程链接:超链的终点是其他网点上的网页
        • 本地链接:超链指向本计算机中某个文件
      • XML
        • XML(Extensible Markup Language)是可扩展标记语言,它和HTML很相似
        • 但XML的设计宗旨是传输数据,问不是显示数据(HTML是为了在浏览器上显示数据)
        • XML不是要替换HTML,而是对HTML的补充。
      • XHTML
        • XHTML(Extensible HTML)是可扩展超文本标记语言,它与HTML4.01几乎是相同的
        • 但XHTML是更严格的HTML版本,也是一个W3C标准(2000年1月),是作为一种XML应用被重新定义的HTML,并将逐渐取代HTML
        • 新的浏览器都支持XHTML
      • CSS
        • CSS(Cascading Style Sheets)是层叠样式表,它是一种样式语言,用于为HTML文档定义布局。
        • CSS与HTML的区别就是:HTML用于结构化内容,而CSS则用于格式化结构化的内容
    • 动态万维网文档
      • 静态文档是指改文档创作完毕后就存放在万维网服务器中,在被用户浏览器的过程中,内容不会改变。
      • 动态文档是指文档的内容是在浏览器访问万维网服务器是才由应用程序动态创建。
      • 动态文档和静态文档之间的主要差别体现在服务器一端。这主要是文档内容的生成方法不同。而从浏览器的角度看,这种文档并没有区别。
      • 万维网服务器功能的扩充
        • 应增加另一个应用程序,用来处理浏览器发来的数据,并创建动态文档
        • 应增加一个机制,用来是万维网服务器把浏览器发来的数据传送给这个应用程序,然后万维网服务器能够解释这个应用程序 的输出,并向浏览器返回HTML文档。
          扩充了的万维网服务器
        • 通用网关接口CGI
          • CGI(Common Gateway Interface)是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。
          • 万维网服务器与CGI的通信遵循CGI标准
            • “通用”:CGI标准所定义的规则对其他任何语言都是通用的
            • “网关”:CGI程序的作用像网关
            • “接口”:有一些已定义好的变量和调用等可供其他
        • CGI程序
          • CGI程序的正式是CGI脚本(script)
          • “脚本”指的是一个程序,它被另一个程序(解释程序)而不是计算机的处理机解释或执行
          • 脚本运行起来比一般的编译程序要慢,因为他的每一条指令先要被另一个程序来处理(这就要一些附加的指令),而不是直接被指令处理器处理
    • 活动的万维网文档
      • 活动文档(active document)技术把所有的工作都转移给浏览器
      • 每当浏览器请求一个活动文档时,服务器返回一段程序副本 在浏览器端运行
      • 活动文档程序可与用户直接交互,并可连续地改变屏幕的显示。
      • 由于活动文档技术不需要服务器的连续更新传送,对网络宽带的要求也不会太高。
        活动文档在客户端创建
    • 用Java技术创建活动文档
      • 由美国Sun公司开发的Java语言是一项用于创建和运行的活动文档技术。
      • 在Java技术中使用“小应用程序”(applet)来描述活动文档程序
      • 用户从万维网服务器下载嵌入了Java小应用程序的HTML文档后,可在浏览器的屏幕上点击某个图像,就可以看到动画效果,或在下拉式菜单中点击某个项目,就可以看到计算结果
      • Java技术是活动文档技术的一部分
        • Java技术有三个主要组成部分
          • 程序设计语言。Java 包含一个新的程序设计语言,用来编写传统的计算机程序和 Java 小应用程序。
          • 运行 (runtime) 环境。这是运行 Java 程序所必须的运行环境,其中包括 Java虚拟机(简称为JVM),该软件定义了Java二进制代码的执行模型。
          • 类库 (class library)。为了更容易编写Java小应用程序,Java提供了强大的类库支持。
        • Java
          • Java是一种面向对象的高级语言,从C++派生出来的,它省略了C++很多复杂的,很少用的语言特点。
          • Java的每一个数据项都有一个确定的类型。对数据的操作严格按照该数据类型进行。
          • Java的编译程序将源程序转换成Java字节码(bytecode),这是一种与机器无关的二进制代码。计算机程序调用解释程序读取字节码,并解释执行。
        • 计算机硬件无关
          • Java语言,字节码以及Java运行系统都被设计成与计算机硬件无关。一旦形成了字节码,就在任何计算机上运行并产生相同的输出
          • Java小应用程序与机器无关可使在任何计算机上运行的浏览器程序能够下载并运行活动文档可保证活动文档
          • 可保证活动文档在所有浏览器上产生同样的正确输出
          • 可大大地降低活动文档的创建和测试费用,因为不必为每一种计算机都制作一个副本。
        • Java
          • 运行 Java 的浏览器需要有 HTML 解释程序和 Java 小应用程序解释程序。
          • 解释程序的核心是一个模仿计算机的简单循环。
          • 解释程序维持一个指令指针,在初始化时指在小应用程序的开始处。
          • 在每一次循环操作时,解释程序在指令指针指向的地址读取字节码。然后解释程序对字节码进行解码,并完成指明的操作。
  • 万维网的信息检索系统

    • 全文检索搜索和分类目录搜索
      • 在万维网中用来进行搜索的程序叫做搜索引擎。
      • 全文检索搜索引擎是一种纯技术型的检索工具。它的工作原理是通过搜索软件到互联网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站。然后按照一定的规则建立一个很大的在线数据库供用户查询。
      • 用户在查询时只要输入关键词,就从已经建立的索引数据库上进行查询(并不是实时地在互联网上检索到的信息)。
    • 分类目录搜索
      • 分类目录搜索引擎并不采集网站的任何信息,而是利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询。
      • 分类目录搜索也叫做分类网站搜索。
    • 一些著名的搜索引擎
    • 垂直搜索引擎
      • 垂直搜索引擎 (Vertical Search Engine) 针对某一特定领域、特定人群或某一特定需求提供搜索服务。
        垂直搜索也是提供关键字来进行搜索的,但被放到了一个行业知识的上下文中,返回的结果更倾向于信息、消息、条目等。
  • 博客和微博

    • 博客
      • 博客是万维网日志 (weblog) 的简称。也有人把 blog 进行音译,译为“部落格”,或“部落阁”。还有人用“博文”来表示“博客文章”。
      • Weblog 这个新词是 Jorn Barger 于 1997 年创造的。
      • 简写的 blog(这是今天最常用的术语)则是 Peter Merholz 于 1999 年创造的。
      • 有人把 blog 既当作名词,也当作动词,表示编辑博客或写博客。
      • 博客已经极大地扩充了互联网的应用和影响 。
      • 在博客出现以前,网民是互联网上内容的消费者。
      • 但博客改变了这种情况,网民不仅是互联网上内容的消费者,而且还是互联网上内容的生产者 。
    • 微博
      • 微博就是微型博客 (microblog),又称为微博客。
      • 微博不同于一般的博客。微博只记录片段、碎语,三言两语,现场记录,发发感慨,晒晒心情,永远只针对一个问题进行回答。
      • 用户可以通过网页、WAP 网、手机短信彩信、手机客户端等多种方式更新自己的微博。
      • 每条微博字数最初限制为140英文字符,但现在已增加了“长微博”的选项,可输入更多的字符。微博还提供插入图片、视频、音乐等功能。
    • 轻博
      • 轻博就是轻博客 (light blogging) 。
      • 轻博客是一种介于博客和微博之间的网络服务,同样 为用户提供生成内容表达自己的平台。
      • 轻博可以发送博文,没有字数限制。
      • 轻博发表后,其界面会好看些。
      • 在轻博中,推荐与发现的内容比较丰富。
  • 社交网络

    • 目前世界上排名第一且分布最广的社交网站是脸书 (Facebook)。
    • 排名第二的社交网站是视频分享网站优兔YouTube(被谷歌收购)。
    • 国内类似的视频分享网站有优酷 (www.youku.com)、土豆 (movie.tudou.com)、56网 (56.com) 等。
    • 另一种能够提供微博服务的社交网络现在也很流行。例如推特 Twitter (twitter.com) 网站可以让用户发表不超过140个字符的消息。这些消息也被称为“推文”(Tweet)。
    • 我国的新浪微博 (www.weibo.com)、腾讯微博 (t.qq.com) 等就是这种性质的社交网站。
    • 职业性社交网站领英 LinkedIn 也很受欢迎。
    • 目前在我国最为流行的社交网站就是微信,微信最初是专为手机用户使用的聊天工具,现在微信的功能已远远超越了社交领域。

5.电子邮件

  • 电子邮件概述

    • 电子邮件 (e-mail):指使用电子设备交换的邮件及其方法。
    • 电子邮件是互联网上使用得最多的和最受用户欢迎的一种应用。
    • 优点:使用方便,传递迅速,费用低廉,可以传送多种类型的信息(包括:文字信息,声音和图像等)。
    • 电子邮件的重要标准
      • 简单邮件发送协议:SMTP
      • 互联网文本报文格式
      • 通用互联网邮件扩充MIME
      • 邮件读取协议:POP3 和 IMAP
    • 电子邮件的组成:三个主要构件
      电子邮件的主要构件
    • 用户代理UA(User Agent)
      • 用户代理UA就是用户与电子邮件系统的接口,是电子邮件客户端软件
      • 用户代理的功能:撰写,显示,处理和通信。
      • 邮件服务器的功能是发送和接收邮件,同时还要向发件人报告邮件传送的情况(已交付,被拒绝,丢失等)。
      • 邮件服务器按照客户-服务器方式工作。邮件服务器需要使用发送和读取两个不同的协议。
        用户代理和邮件服务器
      • 应当注意
        • 一个邮件服务器既可以作为客户,也可以作为服务器
        • 例如,当邮件服务器A向里一个邮件服务器B发送邮件时,邮件服务器A就作为SMTP客户,而是SMTP服务器。
        • 当邮件服务器A从另一个邮件服务器B接收邮件时,邮件服务器A就作为SMTP服务器,而B是SMTP客户。
        • 邮件服务器必须能够同时充当客户和服务器。
        • SMTP和POP3(或IMAP)都是使用TCP连接来传送邮件的,目的是为了可靠地传送邮件。
      • 发送和接收电子邮件的几个重要步骤
        • 发起人调用PC中的用户代理PC中的用户代理撰写和编辑要发送的邮件
        • 发送的用户代理把邮件用SMTP协议发送方邮件服务器
        • SMTP服务器把邮件临时存放在邮件缓存队列中,等待发送
        • 发送方邮件服务器的SMTP客户与接收方邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存中的邮件一次发送出去。
        • 运行在接收方邮件服务器中SMTP服务器进程接收到邮件后,把邮件放入收件人的用户邮件中,等待收件人进行读取
        • 收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。
      • 电子邮件的组成
        • 电子邮件由信封和内容两部组成
        • 电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户从自己的邮箱中读取邮件时才能见到邮件的内容
        • 在邮件的信封上,最重要的就是收件人的地址。
      • 电子邮件地址的格式
        • TCP/IP体系的电子邮件系统规定电子邮件地址的格式
          收件人邮箱名@邮箱所在主机的域名  
        
  • 简单邮件传送协议SMTP

    • 简单邮件传送协议SMTP简单邮件传送协议SMTP
      • SMTP规定了在两个相互通信的SMTP进程交换信息的方法
      • SMTP使用客户-服务器方式
      • SMTP基于TCP实现客户与服务器的通信
      • SMTP是一个基于文本的(即ASCII码)的协议
      • SMTP客户与服务器之间采用命令-响应方式进行交互
      • SMTP基于TCP实现客户与服务器之间通信
    • SMTP通信的三个阶段
      • 连接建立
        • 连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的。SMTP不使用中间的邮件服务器
          连接建立
      • 邮件发送
        邮件传送
      • 连接释放:邮件发送完毕后,SMTP应释放TCP连接
        连接释放
  • 电子邮件的信息格式

    • 一个电子邮件分为信封和内容两大部分。
    • RFC 5322 只规定了邮件内容中的首部 (header) 格式,而对邮件的主体 (body) 部分则让用户自由撰写。
      电子邮件格式
    • 电子邮件首部内容
      • “To:” 后面填入一个或多个收件人的电子邮件地址。用户只需打开地址簿,点击收件人名字,收件人的电子邮件地址就会自动地填入到合适的位置上。
      • “Subject:” 是邮件的主题。它反映了邮件的主要内容,便于用户查找邮件。
      • “Cc:” 表示应给某某人发送一个邮件副本。
      • “From” 和 “Date” 表示发信人的电子邮件地址和发信日期。
      • “Reply-To” 是对方回信所用的地址。
        邮件首部
  • 邮件读取协议POP3和IMAP

    • 两个常用的邮件读取协议:
      • POP3:邮局协议(Post Office Protocol)第三个版本
      • IMAP:网际报文存取协议(Internet Message Access Protocol)
    • POP3协议
      • POP3使用客户-服务器方式
      • POP3基于TCP实现客户与服务器的通信
        POP3协议
      • POP3支持用户鉴别
      • POP3服务器删除被用户读取了的邮件
    • IMAP协议
      IMAP协议
      • IMAP 使用客户–服务器方式。
      • IMAP 基于TCP实现客户与服务器的通信。
      • IMAP是一个联机协议。
      • IMAP特点
        • 连接后只下载邮件首部(部分下载)。
        • 用户直接在IMAP服务器上创建和管理文件夹。
        • 用户可以搜索邮件内容。
        • 用户可以在不同的地方使用不同的计算机随时上网 阅读和处理自己的邮件。
        • 允许收信人只读取邮件中的某一个部分。
        • 缺点:要想查阅邮件,必须先联网。
    • IMAP与POP3比较
      • 邮件读取协议 POP 或 IMAP 与邮件传送协议 SMTP 完全不同。
      • 发信人的用户代理向源邮件服务器发送邮件,以及源邮件服务器向目的邮件服务器发送邮件,都是使用 SMTP 协议。
      • 而 POP 协议或 IMAP 协议则是用户从目的邮件服务器上读取邮件所使用的协议。
        IMAP与POP3比较
操作位置操作内容IMAPPOP3
收件箱阅读,标记,移动,删除邮件等客户端与邮箱更新同步尽在客户端内
发件箱保存到已发送客户端与邮件更新同步仅在客户端内
创建文件夹新建自定义的文件夹客户端与邮件同步仅在客户端内
草稿保存草稿客户端与邮件更新同步仅在客户端内
垃圾文件夹接收并移入垃圾文件夹的邮件支持不支持
广告邮件接收并移入广告邮件夹得邮件支持不支持
  • 基于万维网的电子邮件

    • 用户代理(UA)的特点:
      • 必须在计算机中安装用户代理软件
      • 但可能不能安装或不允许安装
      • 因此,不方便收发邮件。
    • 万维网电子邮件优点
      • 不需要在计算机中再安装用户代理软件
      • 电子邮件界面非常友好
    • 万维网电子邮件
      万维网电子邮件
      • 发送、接收电子邮件时使用 HTTP 协议。
      • 两个邮件服务器之间传送邮件时使用 SMTP。
  • 通用互联网邮件扩充MIME

    • SMTP 有以下缺点:
      • SMTP不能传送可执行文件或其他的二进制对象
      • SMTP限于传送7位的ASCII码。许多其他非英语国家的文字如中文,俄文,甚至带重音符号的法文或德文)就无法传送。
      • SMTP服务器会拒绝超过一定长度的邮件
      • 某些SMTP的实现并没有完全按照(RFC 821)的SMTP标准
    • MIME概述
      • 通用互联网邮件扩充 MIME 并没有改动 SMTP 或取代它。
      • MIME 的意图是继续使用目前的 [RFC 822] 格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
      • MIME 和 SMTP的关系
        MIME 和 SMTP的关系
    • MIME主要包括三个部分
      • 5 个新的邮件首部字段,它们可包含在原有首部中。这些字段提供了有关邮件主体的信息。
      • 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
      • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
    • MIME增加5个新的邮件首部
      • MIME-Version:MIME的版本。如无此行,则为英文文本。
      • Content-Description:这是可读字符串,此邮件的说明。
      • Content-Id:邮件的唯一标识符。
      • Content-Transfer-Encoding:传送时邮件主体使用的编码方法
      • Content-Type:邮件内容/子类型。
    • 内容传送编码
    编码方法说明
    7bit7位ASCII编码,每行不能超过1000个字符(包括回车行)。缺省编码方法
    8bit8位非ASCII编码,每行不能超过1000个字符(包括回车行)。
    Binary8位非ASCII编码,任意长度的字节串
    Base64将任意长度的字节串转换为用 7 位 ASCII 编码表示的字符串。可用于二进制和非文本数据的编码。
    Quoted-printable将任意长度的字节串转换为 ASCII 编码表示的字符串。可用于二进制和非文本数据的编码。

6.动态主机配置协议DHCP

在协议软件中,给协议参数赋值的动作叫做协议配置
一个协议软件在使用之前必须是已正确配置的
连接到互联网的计算机的协议软件需要配置的参数包括:
1.IP地址
2.子网掩码
3.默认路由器的IP地址
4.域名服务器的IP地址

  • 协议配置
    • 在协议软件中给这些参数赋值的动作叫做协议配置
    • 一个软件协议在使用之前必须是已经、正确配置的
    • 具体的配置信息有哪些取决于协议栈
    • 需要配置的项目
      • IP地址
      • 子网掩码
      • 默认路由器的IP地址
      • 域名服务器的IP地址
    • 这些信息通常存储在一个配置文件中,计算机在引导中可以对这个文件进行存取。
  • 动态主机配置协议DHCP
    • 互联网广泛使用的动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了即插即用连网(plug-and-play networking)的机制。
    • 这种机制允许一台计算机加入新的网络和获取IP地址,而不是手工配置。
    • DHCP给运行服务器软件,且位置固定的计算机指派一个永久地址,给运行客户端软件的计算机分配一个临时地址。
  • DHCP使用客户-服务器方式
    • 需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为DCHP客户。
    • 本地网络上所有主机都有收到此广播报文,但只有DHCP服务器才回答此广播报文。
    • DHCP服务器现在其数据库中查找该计算机的配置信息。若找到,则返回找的信息。若找不到,则从服务器的IP地址池(address pool)中取一个地址分配给该计算机。DHCP服务器的回答报文叫做提供(DHCPOFFER)。
  • DHCP工作方式
    • DHCP使用客户-服务器方式,采用请求/应答方式工作
    • DHCP基于UDP工作,DHCP服务器运行在67端口,DHCP客户运行在68号端口。
      DHCP工作
  • DHCP中继代理(relay agent)
    • 并不是每个网络都有DHCP服务器,这样会使服务器的数量太多。现在是每一个网络至少有一个DHCP中继代理,它配置了DHCP服务器的IP地址信息。
    • 当DHCP中继代理收到主机发送的发现报文后,就以单播方式DHCP服务器回答的提供报文, DHCP中继代理再将此提供报文发回给主机。
      DHCP中继代理
  • 租用期 (lease period)
    • DHCP 服务器分配给 DHCP 客户的 IP 地址的临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期。
    • 租用期的数值应由 DHCP 服务器自己决定。
    • DHCP 客户也可在自己发送的报文中(例如,发现报文)提出对租用期的要求。
  • DHCP的工作过程
    DHCP的工作过程

7.简单的网络管理协议SNMP

  • 网络管理的基本概念
    • 网络管理包括硬件,软件和人力的使用,综合与协调,以便对网络资源进行监视,测试,配置,分析,评价和控制,这样就能以合理价格网络的一些需求,如实时运行性能,服务质量等。网络管理常简称为网管。
    • 网络管理并不是指对网络进行行政上的管理。
    • 管理管理的五大功能
      • 故障管理:故障检测,隔离和纠正
      • 配置管理:初始化网络,并配置网络
      • 计费管理:记录网络资源的使用
      • 性能管理:估价系统资源的运行状况及通信效率等
      • 网络安全管理:对授权机制,访问机制,加密和加密关键字的管理。
    • 网络管理的一般模型
      网络管理的一般模型
      • 网络管理模型的主要构件
        • 管理站也常称为网络运行中心NOC(Network Operations Center),是网络管理系统的核心。
        • 管理程序在运行时就成为管理进程
        • 管理站(硬件)或管理程序(软件)都可称为管理者(manager), Manager不是指人,而是指机器或软件。
        • 网络管理员(administrator)指的是负责网络管理的人员
        • 大型网络往往实行多级管理,因而有多个管理者,而不是一个管理者一般只管理本地网络的设备。
      • 被管对象
        • 网络的每一个被管设备中可能有多个被管对象
        • 被管设备有时可称为网络元素或网元。
        • 在被管设备中也会有一些不能被管的对象
      • 代理(agent)
        • 在每一个被管设备中都要运行一个程序以便和管理站中的管理程序进行通信。这些运行着的程勋叫做网络管理代理程序,或简称为代理。
        • 代理程序在管理程序的命令和控制下载被管设备上采取本地的行动。
      • 网络管理协议
        • 网络管理协议简称网管协议
        • 网络管理协议是管理程序和代理程序之间进行通信的规则。
        • 网络管理员利用网络管理协议,通过管理站多网络中的被管设备进行管理
        • 需要注意的是,网管协议本身不管理网络
      • 简单网络管理协议SNMP
        • 简单网络管理协议SNMP(Simple Network Management Protocol)中的管理程序和代理程序按客户-服务器方式工作
        • 管理程序SNMP客户程序,向某个代理程序发出请求(或命令),代理程序运行SNMP服务器程序,返回响应(或执行某个动作)。
        • 在网管系统中,往往是一个(或少数几个)客户程序与很多的服务器程序进行交互。
      • 网络管理的基本原理
        • 若要管理某个对象,就必然会给该对象添加一下软件或硬件,但这种“添加”必须对原有对象的影响尽量小些。
      • SNMP的指导思想
        • SNMP的指导思想就是要尽可能简单
        • SNMP 的基本功能包括监视网络性能、检测分析网络差错和配置网络设备等。
        • 在网络正常工作时,SNMP 可实现统计、配置、和测试等功能。当网络出故障时,可实现各种差错检测和恢复功能。
        • 虽然 SNMP 是在 TCP/IP 基础上的网络管理协议,但也可扩展到其他类型的网络设备上。
      • SNMP的基本功能
        • SNMP 最重要的指导思想就是要尽可能简单。
          SNMP 的基本功能包括:
          1.监视网络性能
          2.检测分析网络差错
          3.配置网络设备等
      • SNMP的管理站和委托代理
        • 整个系统必须有一个管理站。
        • 若网络元素使用的不是 SNMP 而是另一种网络管理协议,SNMP 协议就无法控制该网络元素。这时可使用委托代理 (proxy agent)。
        • 委托代理能提供协议转换和过滤操作等功能,对被管对象进行管理。
      • SNMP网络管理组成
        • SNMP的网络管理理由三个部分组成
          • 1.SNMP本身
          • 2.管理信息结构SMI(Structure of Managerment Information)
          • 3.管理信息库MIB(Management Information Base)
      • 简单网络管理协议SNMP
        • SNMP定义了管理站和代理之间所交换的分组格式
        • 所交换的分组包含代理中的对象(变量)名及其转态(值)
        • SNMP负责读取和改变这些数值。
      • 管理信息结构SMI
        • SMI 定义了命名对象和定义对象类型(包括范围和长度)的通用规则,以及把对象和对象的值进行编码的规则。
        • 这样做是为了确保网络管理数据的语法和语义的无二义性。但从 SMI 的名称并不能看出它的功能。
        • SMI 并不定义一个实体应管理的对象数目,也不定义被管对象名以及对象名及其值之间的关联。
      • 管理信息库MIB
        • MIB 在被管理的实体中创建了命名对象,并规定了其类型。
        • 管理程序使用 MIB 中的信息,对网络进行管理。
  • 管理信息结构SMI
    • SMI的功能:
      • 被管对象应该怎样命名;
      • 用来存储被管对象的数据类型有哪些种
      • 在网络上传送的管理数据应如何编码
    • SMI规定所有被管对象必须在命名树上
    • SMI标准指明:所有的MIB变量必须使用抽象语法记法1(ASN.1)
    • SMI既是ASN.1的子集,又是ASN.1的超集。
    • ASN.1的记法很严格,他使得数据的含义不存在任何可能的二义性。数据包括类型(值集合的名字)和值(某个值集合中的一个元素)两部分。
    • SMI把数据分为两大类:
      • 简单类型

      • 结构化类型

        分类 数据类型名称 含义
        简单类型 INTEGER 任意长度整数
        BIT STRING 0位或多位组成的二进制
        OCTET STRING 0位或多位组成的字节串
        OBJECT IDENTIFIER 定义的数据类型
        结构化类型SEQUENCE由多个数据类型按序组成的值
        SEQUENCE OF由一个数据类型按序组成的值
        CHOICE可以从多个数据类型中选择一个
        ANY任何数据类型
    • 基本编码规则BER
      • ISO在制订ASN.1语言的同时也为它定义了一种标准的编码方案,即基本编码规则BER(Basic Encoding Rule)。
      • BER指明了每种数据类型中每个数据的值的表示。
      • 发送端用BER编码,可将用ASN.1所表述的报文转换成唯一的比特序列。
      • 接收端用BER进行解码,得到该比特序列所表示的ASN.1报文。
    • 用TLV方法进行编码
      用TLV方法进行编码
      • TLV中的T字段定义数据的类型
        TLV中的T字段定义数据的类型
      数据类型类别格式 编号T字段(二进制)T字段(十六进制)
      INTEGER000000100000001002
      数据类型类别格式 编号T字段(二进制)T字段(十六进制)
      OCTET STRING000001000000010004
      OBJECT INDENTIFIER000 001100000011006
      NULL000 001010000010105
      Squence,squence of001 100000011000030
      IPAdress010 000000100000040
      Counter010 000010100000141
      Gauge010 000100100001042
      TimeTicks010 000110100001143
      Opaque010 001000100010044
    • TLV中的L字段定义V字段的长度
      TLV中的L字段定义V字段的长度
      类型大小说明
      INTEGER4字节在-231到231-1之间的整数
      Integer324字节在-231到231-1之间的整数
      Unsigned324字节在0到232-1之间的整数
      OCTET STRING可变不超过65535字节长的字节串
      OCTET INDENTIFIER可变对象表示符
      IPAddress4字节由 4 个整数组成的IP地址
      Counter324字节可从 0 增加到 232 的整数;当它到达最大值时就返回到 0
      TimerTicks4字节记录时间的计数值,以 1/100 秒为单位
      BITS-比特串
      Opaque可变不解释的串
    • TLV中的V字段定义数据的值
      • 例如,INTEGER15,其字段是02,INTEGER类型要用4字节编码。最后得出TLV编码为 02 04 00 00 0F
      T
      02
      L
      04
      V
      00 00 0F
      - 例如,IPAddress 192.1.2.3,其 T 字段是 40,V 字段需要 4 字节表示,因此得出 TLV 编码是 40 04 C0 01 02 03。
      T
      40
      L
      04
      V
      C0 01 02 03
    • TLV 中的 V 字段可嵌套其他数据元素的 TLV 字段
      TLV 中的 V 字段可嵌套其他数据元素的 TLV 字段
  • 管理信息库MIB
    • 被管对象必须维持可供管理程序读写的若干控制和状态信息。这些信息总称为管理信息库 MIB(Manangement Information Base)
    • 管理程序使用MIB中的信息的值对网络进行管理(如读取或重新设置这些值)
    • 只有在MIB的对象才是SNMP所能管理的。
  • SNMP的协议数据单元和报文
    • SNMP的操作只有两种基本的管理功能
      • “读”操作,用get报文来检测各被管对象的状况
      • “写操作”,用set报文来改变各被管对象的状况。
    • SNMP的这些功能通过探询操作来实现
    • SNMP的探询操作
      • 探询操作–SNMP管理进程定时想被管设备周期性地发送探询信息。
      • 探询的好处
        • 可使系统相对简单
        • 能限制通过网络产生的管理信息的通信量
      • 探询的缺点
        • 不够灵活,而且所能管理的设备数目不能太多
        • 开销也较大
    • 陷阱(trap)
      • SNMP不是完全的探询协议,它允许不经过询问就能发送某些信息。这种信息称为陷阱,表示它能够捕捉“事件”。
      • 当被管对象的代理检测到有时间发生时,就检查其门限值。代理只向管理进程报告到达某些门限值的事件(即过滤)
      • 过滤的好处是:
        • 仅在严重事件发生时才发送陷阱
        • 陷阱信息很简单且所需要字节数很少
    • SNMP是有效的网络管理协议
      • 使用探询(至少是周期性地)以维持对网络资源的实时监视
      • 同时也采用陷阱机制报告特殊事件,使得SNMP成为一种有效的网络管理协议。
    • SNMP使用无连接的UDP
      • SNMP使用无连接的UDP。但UDP不保证可靠交付
      • 在运行代理程序的服务器用熟知端口161来接受get或set报文和发送响应报文(与熟知端口通信的客户端使用零食端口)
      • 运行管理程序的客户端则使用熟知端口162来接收来自各自代理的trap报文
    • SNMPv1定义的协议数据单元(PDU)类型
      PDU编号(T字段)PDU名称用途
      0 (A0)GetRequest用来查询一个或一组变量的值
      1(A1)GetNextRequest允许在MIB树上读取下一个变量,此操作可反复进行
      2 (A2)Response代理向管理者或管理者向管理者发送响应
      3 (A3)SetRequest对一个或多个变量进行设置
      5 (A5)GetBulkRequest管理者从代理读取大数据块的值
      6 (A6)InformRequest管理者从另一管理者读取代理的变量
      7 (A7)SNMPv2Trap代理向管理者报告异常事件
      8 (A8)Report管理者之间报告某些差错
    • SNMP的报文格式
      SNMP的报文格式
      • GetRequest报文 ASN.1 编码
        GetRequest报文 ASN.1 编码
      • Get-request 报文的 BER 编码
        Get-request 报文的 BER 编码

8.应用进程间跨越网络的通信

  • 系统调用和应用编程接口
    • 大多数操作系统使用系统调用(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创建套接字
          调用socket创建套接字
  • 几种常用的系统调用
    • 当应用进程需要使用网络进行通信时,就发出系统调用。
    • 使用 TCP/IP 应用编程接口 API,就可以编写基于互联网的网络应用程序了。
    • 调用 API 时,用户可以使用 TCP 服务,也可以使用 UDP 等其他服务。
    • TCP提供面向连接的服务
    • 使用TCP服务需要经历3个阶段
      • 1.连接建立阶段
      • 2.数据传送阶段
      • 3.连接释放阶段
    • 连接建立阶段
      • 当套接字被创建后,它的端口和IP地址都是空的,因此应用进程要调用bind(绑定)来指明套接字的本地地址。在服务器端调用bind时就是把熟知端口号和本地IP地址填写到已创建的套接字中。这就叫把本地地址绑定到套接字。
      • 服务器在调用bind后,还必须调用listen(收听)把套接字设置为被动方式,以便随时接受客户的服务请求。UDP服务器由于只提供无连接,不使用listen系统调用。
      • 服务器接着调用accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用accept的一个变量就是指明哪一个套接字发起的连接。
        连接建立阶段

      调用accept要完成的动作较多。这是因为一个服务器必须能够同时处理多个连接。这样的服务器长称为并发方式(concurrent)工作的服务器。

    • 传送阶段
      • 客户和服务器都在 TCP 连接上使用 send 系统调用传送数据,使用 recv 系统调用接收数据。
      • 通常客户使用 send 发送请求,而服务器使用 send 发送回答。
      • 服务器使用 recv 接收客户用 send 调用发送的请求。客户在发完请求后用 recv 接收回答
    • 连接释放阶段
      • 一旦客户或服务器结束使用套接字,就把套接字撤消。这时就调用 close 释放连接和撤销套接字。

9.P2P应用

  • 具有集中目录服务器的P2P工作方式
    • P2P工作方式
      • P2P 工作方式受到广大网民的欢迎。
      • 在 P2P 工作方式下,所有的音频/视频文件都是在普通的互联网用户之间传输。
      • 这种工作方式解决了集中式媒体服务器可能出现的瓶颈问题。
      • 在互联网流量中,P2P 工作方式下的文件分发已占据了最大的份额,比万维网应用所占的比例大得多。
      • 集中目录服务器的P2P工作方式
        • Napster 最早使用 P2P 技术,提供免费下载 MP3 音乐。
        • Napster 将所有音乐文件的索引信息都集中存放在 Napster 目录服务器中。
        • 使用者只要查找目录服务器,就可知道应从何处下载所要的MP3文件。
        • 用户要及时向 Napster 的目录服务器报告自己存有的音乐文件。
        • Napster 的文件传输是分散的,文件的定位则是集中的。
    • Napster 的工作过程
      Napster 的工作过程
      • 用户 X 向 Napster 目录服务器查询(客户–服务器方式)谁有音乐文件 MP3#
      • Napster 目录服务器回答 X:有三个地点有文件 MP3#,即 A, B 和 C(给出了这三个地点的IP地址)。于是用户 X 得知所需的文件 MP3# 的三个下载地点。
      • 用户 X 可以随机地选择三个地点中的任一个。假定 X 向 A 发送下载文件 MP3#的请求报文。双方都使用 P2P 方式通信。
      • 对等方A(现在作为服务器)把文件MP3#发送给X。
    • 集中式目录服务器的缺点
      • 可靠性差。
      • 会成为性能的瓶颈。
  • 具有全分布式结构的P2P文件共享程序
    • Gnutella 是第二代 P2P 文件共享程序,采用全分布方法定位内容的 P2P 文件共享应用程序。
    • Gnutella 与 Napster 最大的区别是:不使用集中式的目录服务器,而是使用洪泛法在大量 Gnutella 用户之间进行查询。
    • 为了不使查询的通信量过大,Gnutella 设计了一种有限范围的洪泛查询,以减少倾注到互联网的查询流量,但也影响到查询定位的准确性。
    • eMule的其他特点
      • eMule 使用了一些服务器。这些服务器并不是保存音频/视频文件,而是保存用户的有关信息,因而可以告诉用户从哪些地方可以下载到所需的文件。
      • eMule 使用了专门定义的文件夹,让用户存放可以和其他用户共享的文件。
      • eMule 的下载文件规则是鼓励用户向其他用户上传文件。用户上传文件越多,其下载文件的优先级就越高(因而下载就越快)
    • 使用P2P的比特洪流BT
      • BitTorrent所有对等方集合称为一个洪流(torrent)
      • 下载文件的数据单元为长度固定的文件块(chunk)
      • 基础设施节点,叫做追踪器(tracker)
      • A 就和这些对等方建立了 TCP 连接。所有与 A 建立了 TCP 连接的对等方为“相邻对等方”(neighboring peers)。
        使用 P2P 的比特洪流 BT
    • BT协议
      • 问题1:哪些文件块是首先需要向其相邻对等方请求的?
        • A 使用最稀有的优先 (rarest first) 的技术,首先向其相邻对等方请求对应的文件块。
        • 所谓稀有是指:如果A所缺少的文件块在相邻对等方中的副本很少,那就是“很稀有的”。
      • 问题2:在很多向A请求文件块的相邻对等方中,A应当向哪些相邻对等方发送所请求的文件块?
        • 凡当前以最高数据率向 A 传送文件块的某相邻对等方,A 就优先把所请求的文件块传送给该相邻对等方。
  • P2P文件分发的分析
    • 从互联网传送数据到主机,叫做下载 (download),

    • 从主机向互联网传送,则称为上传 (upload) 或上载。
      P2P 文件分发的分析

      • 有 N 台主机从服务器下载一个大文件,其长度为 F bit。假定主机与互联网连接的链路的上传速率和下载速率分别为 ui 和 di ,单位都是 bit/s。
      • 从服务器端考虑,所有主机分发完毕的最短时间 Tcs 不可能小于 NF/us ;
      • 下载速率最慢的主机的下载速率为 dmin,则 Tcs 不可能小于 F/dmin 。
      • 由此可得出所有主机都下载完文件 F 的最少时间是:
        Tcs=max( NF/us,F/dmin )
    • 初始服务器文件分发的最少时间不可能小于 F/us ;

    • 下载文件分发的最少时间不可能小于 F/dmin ;

    • 上载文件分发的最少时间不可能小于 NF/uT ,其中是 uT 是上传速率之和。

    • 所有主机都下载完文件 F 的最少时间的下限是:
      Tp2p >= max( F/us , F/dmin, NF/uT )

  • 在P2P对等方中搜索对象
    • Napster在一个集中式目录服务器中构建的查找数据库虽然很简单,但性能上却有瓶颈。
    • Gnutella是一种采用全分布方法定位内容的P2P文件共享应用程序,它解决了集中式目录服务器所造成的瓶颈问题。然而Gnutella是在非结构化的覆盖网络中采用查询洪泛的方法来进行查找的,因此查找的效率较低。
    • 现在广泛使用的索引和查找技术叫做分布式散列表 DHT (Distributed Hash Table)。DHT 也可译为分布式哈希表,它是由大量对等方共同维护的散列表。
    • 广泛使用的 Chord 算法是美国麻省理工大学于2001 年提出的。
    • 分布式散列表 DHT 利用散列函数,把资源名 K 及其存放的结点 IP 地址 N 都分别映射为资源名标识符 KID 和结点标识符 NID。
    • Chord 把结点按标识符数值从小到大沿顺时针排列成一个环形覆盖网络。
    • 基于DHT的Chord环上与其标识符值最接近的下一个节点提供服务
      基于 DHT 的 Chord 环
    • 为了加速查找,在 Chord 环上可以增加一些指针表(finger table),它又称为路由表或查找器表。
      对于结点 N4, 第 1 列第 i 行计算(N4 + 2i – 1),得出后继结点。
      通过指针表加速 Chord 表查找
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值