文章目录
应用层
基本应用模型
互联网由边缘和核心组成
网络核心包括路由器及连接链路,其目的是为网络边缘节点之间提供数据传输服务
网络边缘包括用户侧和服务侧
从用户与服务之间的关系来看,网络应用的基本模型分为两种:CC模型和CS模型
CC模型和CS模型的共同点:均需要服务系统的支撑
CC模型-端服务系统模型
在靠近用户的网络边缘,分别部署端服务系统,各个端服务系统组合起来,共同实现针对某一通信目的的网络应用
例如:E-Mail,VPN,隧道通信等
CC模型-端服务系统模型的特点:
部署可控:网络管理员自主控制在本地网络上部署方式与策略
成本可控:用户规模有限,对服务系统的服务能力没有过高要求
数据可控:服务系统属于本网络,这种部署方式能实现对用户数据管理的自主可控,更好地满足用户个性化需求和隐私保护
用户友好:用户可见的仅包括离自己很近的端服务系统,其配置管理与更新策略较为容易实现
CC模型 – 中心服务系统模型
网络应用的两端仍然是用户,用户之间依赖于统一部署的服务系统实现应用,用户所在网络的管理员无法参与服务系统的部署与管理
例如:电商,即使通信应用
CC模型 – 中心服务系统模型的特点
高成本:服务系统面向全体用户,对系统处理能力要求较高
难管理:为提高系统服务能力,服务商倾向于采用各种分布式部署方案,大大提升了系统复杂度和管理难度
数据泄露:对用户应用策略和用户数据统一管理,带来用户隐私泄露风险
CS模型
服务系统部署于网络中,每个用户通过访问服务系统,获取相应的服务数据
例如:Web、DNS、DHCP、SNMP等,用户访问的目的是获取服务系统所提供的数据,用户之间不需要进行交互
进一步扩展和优化:
往往在靠近用户侧的地方部署本地代理,作为用户访问服务系统的前端环节
降低服务系统工作负载与部署成本、提升用户访问效率、降低用户侧配置复杂度
例如:Web代理、本地域名服务器、DHCP代理
域名系统DNS
DNS (Domain Name System) 将可读的变长名字和定长的数字地址关联映射起来
DNS为几乎所有的互联网网络应用提供基础服务,将主机名 (域名)解析 (映射) 为IP地址
PS:网络中的转换有ARP、NAT、DNS
层次化的命名空间:
域名 (domain name):任何连接在互联网上的主机或路由器都有唯一域名;只是逻辑概念,不代表结点所在的地址
DNS服务器
一个DNS服务器所负责管辖的(或有权限的)范围叫做区 (zone)。DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
每一个区设置相应的权威域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
根域名服务器
- 根域名服务器是最高层次的域名服务器,也是最重要的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址
- 不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就求助于根域名服务器
- 在互联网上共有 13 个不同 IP 地址的根域名服务器,它们的名字是用一个英文字母命名,用A到M来标记
全球顶级域名(Global Top-level domain, gTLD)服务器
- 一般性域名 (e.g. .com, .org, .info)
- 国家地区域名 (e.g. .cn, .hk, .uk)
- 一般由专业机构来维护管理 (e.g. VeriSign 管理 .com和.net域名)
权威(Authoritative)域名服务器
- 负责一个区的域名服务器,提供一个组织内的域名与主机映射关系
- 通常是该组织提供的服务,一般由组织自己维护管理
本地域名服务器(递归服务器)
每一个互联网服务提供者 ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器
这种域名服务器有时也称为默认域名服务器,通常离终端用户比较近
在主机的/etc/resolv.conf中配置,或由DHCP获取
当一个主机发出 DNS 查询请求时,这个查询请求报文就发送给本地域名服务器
提高域名服务的可靠性
DNS 域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器
当主域名服务器出故障时,辅助域名服务器可保证 DNS 查询工作不中断
主域名服务器定期把数据复制到辅助域名服务器中,更改数据只能在主域名服务器中进行,以保证数据的一致性
域名解析
DNS高速缓存
每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录,可大大减轻根域名服务器的负荷,使互联网上的 DNS 查询请求和回答报文的数量大为减少
为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)
当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性
万维网WWW
万维网是一个由许多互相链接的超文本组成的大规模、联机式的资源系统,并非某种特殊的计算机网络
万维网是分布式超媒体系统,是超文本系统的扩充
万维网的工作方式:客户 / 服务器方式
- 链接:万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息
- 超文本(hypertext):万维网的基础,由多个信息源链接成,利用一个链接可使用户找到另一个文档
这些文档可以位于世界上任何一个接在互联网上的超文本系统中 - 超媒体(hypermedia):与超文本的区别是文档内容不同
超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像 - 工作方式:客户/服务器方式
- 客户程序:浏览器
- 服务器程序:万维网文档所驻留的计算机运行,这个计算机也称为万维网 (www/web) 服务器
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的web文档
在一个客户程序主窗口上显示出的web文档称为页面 (page)
统一资源定位符URL (Uniform Resource Locator)
统一资源定位符 URL (Uniform Resource Locator)
- 是对资源的位置和访问方法的一种简洁描述
- 给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位
- 只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性
- URL 相当于一个文件名在网络范围的扩展
- 因此 URL 是与互联网相连的机器上的任何可访问对象的一个指针
URL的格式
超文本传送协议 HTTP
基于HTTP实现Web客户程序与服务器程序之间的交互
HTTP 是面向事务 (transaction-oriented)的应用层协议,是Web能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础
HTTP 1.0 协议是无状态的 (stateless),HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务
PS:面向事务:一系列信息交换是不可分割的整体,所有信息交换需要完整完成,否则信息交换视为不成功(域名解析、TCP连接、http请求、获得html代码、解析html代码并请求资源、渲染呈现)
请求一个万维网文档需要的时间:2*RTT+文档传输时间
代理服务器 (proxy server) ,又称 Web cache
PS:学过的缓存:ARP缓存、DNS缓存、Web缓存
把最近的一些请求和响应暂存在本地磁盘中,当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源
Web缓存不仅可减少网络流量,同时提升传输性能。互联网访问服从Zipf分布,即对少数资源的请求占据了绝大部分的流量
报文格式
HTTP两类报文
- 请求报文 (Request)
从客户向服务器发送请求报文 - 响应报文 (Response)
从服务器到客户的回答
报文由三个部分组成,即开始行、首部行和实体主体。
在请求报文中,开始行就是请求行
PS:常见的方法有GET、POST
HTTP Cookie
Web站点使用 Cookie 来跟踪用户,即在 HTTP 服务器和客户之间传递的状态信息
服务器为用户产生一个唯一的识别码Cookie,发送给客户端,并由客户端保存一段时间
客户端接收到Cookie后,后面每次请求都将Cookie发送给服务器。Cookie在HTTP头部中传输
Cookie保存在浏览器中
客户端可以从其他机器拷贝Cookie来继续访问服务器
Web信息检索
搜索引擎 (search engine)——在Web中对信息进行搜索
主要的两类
-
全文检索搜索引擎
通过搜索软件到互联网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站,然后按照一定的规则建立一个很大的在线数据库供用户查询
用户在查询时只要输入关键词,就从已经建立的索引数据库上进行查询(并不是实时地在互联网上检索到的信息)的URL -
分类目录搜索引擎
不采集网站的任何信息,而是利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询
垂直搜索,如:分类查询、行业查询
电子邮件
电子邮件地址的格式:收件人邮箱名 @ 邮箱所在主机的域名
用户名在该域名的范围内是唯一的
邮箱所在的主机的域名在全世界必须是唯一的
简单邮件传送协议 SMTP
SMTP 定义在两个相互通信的 SMTP 进程之间如何交换信息
SMTP 使用客户/服务器方式
- SMTP 客户:负责发送邮件的 SMTP 进程
- SMTP 服务器:负责接收邮件的 SMTP 进程
SMTP通信三阶段
- TCP连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立
- 邮件传送
- TCP连接释放:邮件发送完毕后,SMTP 释放 TCP 连接
邮局协议 POP
非常简单、但功能有限的邮件读取协议,现在使用的是第三个版本 POP3
使用客户/服务器的工作方式
- POP 客户程序:在接收邮件的用户 PC 机中运行
- POP 服务器程序:在用户所连接的 ISP 的邮件服务器中运行
互联网报文存取协议 IMAP
客户/服务器方式工作
联机协议,用户在自己的 PC 机上就可以操纵 ISP 的邮件服务器的邮箱,就像在本地操纵一样。若用户需要打开某个邮件,则该邮件才传到用户的计算机上
允许收件人只读取邮件中的某一个部分
缺点是如果用户没有将邮件复制到自己的 PC 上,则邮件一直是存放在 IMAP 服务器上
文件传送协议
文件传送协议 FTP
基于 TCP,早期互联网上使用得最广泛的文件传送协议。提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限
FTP的主要功能:
- 减少或消除在不同操作系统下处理文件的不兼容性
- 提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务
FTP的工作方式:
客户/服务器方式;FTP 服务器进程可同时为多个客户进程提供服务,由两大部分组成:
一个主进程,负责接受新的请求 + 若干个从属进程,负责处理单个请求
简单文件传送协议 TFTP
基于 UDP,简单易实现,无庞大的命令集、无目录功能、不能进行身份鉴别
远程终端协议 Telnet
远程终端协议TELNET,也称为终端仿真器
用户用 TELNET 可在其所在地通过 TCP 连接登录到远地的另一个主机上 (使用主机名或 IP 地址)
TELNET 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上
Telnet的工作方式:
客户/服务器方式。本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程
服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接
定义网络虚拟终端 NVT (Network Virtual Terminal) 屏蔽不同操作系统的差异
- 客户软件把用户的击键和命令转换成 NVT 格式,送交服务器
- 服务器软件把收到的数据和命令,从 NVT 格式转换成其所需的格式
- 向用户返回数据时,服务器把其格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式
动态主机配置协议DHCP
主机接入网络需要一些必要的网络配置:IP地址、子网掩码、默认路由器的IP地址、域名服务器的IP地址
动态主机配置协议 DHCP (Dynamic Host Configuration Protocol):提供即插即用连网 (plug-and-play networking) 的配置机制;允许主机加入新的网络和获取IP等配置信息,不用手工参与
工作原理:
主机在启动时,作为客户,广播发送DHCP发现报文 (DHCPDISCOVER)
DHCP 服务器回答此广播报文,尽管本地网络上所有主机都能收到此广播
DHCP 服务器在其数据库中查找该计算机的配置信息,若找到,则返回找到的信息;找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机
简单网络管理协议 SNMP
网络管理,常简称为网管
包括对硬件、软件、人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,从而以合理的价格满足网络的一些需求,如实时运行性能、服务质量等
网络管理的一般模型:
简单网络管理协议 SNMP (Simple Network Management Protocol),管理程序和代理程序按客户/服务器方式工作
- SNMP客户程序:管理程序运行 ,向某个代理程序发出请求 (或命令)
- SNMP 服务器程序:代理程序运行 ,返回响应 (或执行某个动作)
- 在网管系统中往往是一个(或少数几个) 客户程序与很多的服务器程序进行交互
基本功能:
- 包括监视网络性能、检测分析网络差错、配置网络设备等
- 在网络正常工作时,SNMP 可实现统计、配置、和测试等功能;当网络出故障时,可实现各种差错检测和恢复功能
SMI 的功能:
被管对象应怎样命名
用来存储被管对象的数据类型有哪些种
在网络上传送的管理数据应如何编码
管理信息库 MIB (Management Information Base):
被管对象必须维持可供管理程序读写的若干控制和状态信息,这些信息总称为 MBI
管理程序使用 MIB 中这些信息的值对网络进行管理 (如读取或重新设置这些值)
SNMP 的操作只有两种基本管理功能
- “读”操作,用 get 报文来检测各被管对象的状况
- “写”操作,用 set 报文来改变各被管对象的状况
SNMP 的这些功能通过探询操作实现
- 探寻:SNMP 管理进程定时向被管理设备周期性地发送探询信息
- 好处:使系统相对简单,能限制通过网络所产生的管理信息的通信量。
- 缺点:探询管理协议不够灵活,且所能管理的设备数目不能太多;探询系统的开销也较大,如探询频繁而并未得到有用的报告,则通信线路和计算机的 CPU 周期就被浪费了
SNMP 基于UDP,在网络上传送 SNMP 报文的开销较小,但不保证可靠交付
- 在运行代理程序的服务器端,用熟知端口 161,接收 get 或 set 报文和发送响应报文(与熟知端口通信的客户端使用临时端口)
- 运行管理程序的客户端,使用熟知端口 162,接收来自各代理的 trap 报文
应用进程跨越网络的通信
系统调用 (system call):
大多数操作系统使用系统调用机制在应用程序和操作系统之间传递控制权
对程序员来说,系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将控制权传递给了操作系统
连接建立阶段
- 套接字被创建后,其端口号和 IP 地址都是空的,应用进程要调用 bind (绑定)来指明套接字的本地地址
- 在服务器端调用 bind 时就是把熟知端口号和本地IP地址填写到已创建的套接字中
- 服务器调用 bind 后,还必须调用 listen (收听) 把套接字设置为被动方式,以便随时接受客户的服务请求
- UDP 服务器由于只提供无连接服务,不使用 listen 系统调用
- 服务器紧接着调用 accept (接受),以把客户进程发来的连接请求提取出来
- 系统调用 accept 的一个变量就是要指明从哪一个套接字发起的连接
传送阶段
- 客户和服务器都在 TCP 连接上使用 send 系统调用传送数据,使用 recv 系统调用接收数据
- 通常客户使用 send 发送请求,而服务器使用 send 发送回答
- 服务器使用 recv 接收客户用 send 调用发送的请求,客户在发完请求后用 recv 接收回答
连接释放阶段
- 一旦客户或服务器结束使用套接字,就把套接字撤消,此时调用 close 释放连接和撤销套接字