网络复习-笔记03-应用层
网络应用体系结构
- 客户机/服务器结构(Client-Server, C/S)
- 点对点结构(Peer-to-peer, P2P)
- 混合结构(Hybrid)
客户机/服务器结构

服务器
- 7×24小时提供服务
- 永久性访问地址/域名
- 利用大量服务器实现可扩展性
客户机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
-
不会与其他客户机直接通信
例子:Web
web.png
纯P2P结构

- 没有永远在线的服务器
- 任意端系统/节点之间可以直接通讯
- 节点间歇性接入网络
- 节点可能改变IP地址
优点:高度可伸缩
缺点:难于管理
混合结构
两种结构混合在一起使用,兼具两者的优点,规避两者的缺点
Napster
- 文件传输使用 P2P结构
- 文件的搜索采用C/S结构——集中式
-
每个节点向中央服务器登记自己的内容 2. 每个节点向中央服务器提交查询请求,查找感兴趣的内容
napster.png
网络应用的基础:进程间通信
进程:主机上运行的程序
同一主机上运行的进程之间的通信:操作系统提供,进程间通信机制
不同主机上运行的进程间通信:消息交换!
- 客户机进程:发起通信的进程
- 服务器进程:等待通信请求的进程
套接字:socket
-
进程间通信利用socket发送/接收消息实现
socket.png
网络的传输基础设施向进程提供API:
- 传输协议的选择
- 参数的设置
如何寻址进程:
不同主机上的进程间通信,那么每个进程必须用于标识符。
- IP地址——IP地址能够唯一的表示Internet上的一台主机
- 端口号/Port number:为主机上每个需要通信的进程分配一个端口号, HTTP server:80, Mail Server:25
故进程的标识符:IP地址+端口号

应用层协议:
网络应用需遵循应用层协议。
公开协议:
- 由RFC(request for comments)定义
- 允许互操作
- HTTP, SMTP ....
私有协议:
- 多数P2P文件共享应用
应用层协议的内容:
消息的类型:
- 请求消息
- 响应消息
消息的语法(syntax)/格式
- 消息中有哪些字段
- 每个字段如何描述
字段的语义:
- 字段中信息的含义
规则:
- 进程核实发送/响应消息
- 进程如何发送/相应消息
网络应用的需求与传输层服务
- 数据丢失/可靠性
- 某些网络应用能够容忍一定的数据丢失:网络电话
- 某些网络应用要求100%可靠的数据传输:文件传输,telnet
- 时间/延迟
- 有些应用只有在延迟足够低时才有效
- 网络电话/网络游戏
- 带宽
- 某些应用只有在带宽达到最低要求时才有效:网络视频
- 某些应用能够适应任何带宽——弹性应用:email
Internet提供的传输服务
TCP服务:
- 面向连接:客户机/服务器进程间需要建立连接
- 可靠的传输(不丢包,不乱序)
- 流量控制:发送方不会发送速度过快,超过接收方的处理能力
- 拥塞控制:当网络负载过重时能够限制发送方的发送速度
- 不提供时间/延迟保障
- 不提供最小带宽保障
UDP服务:
- 无连接
- 不可靠的数据传输
- 不提供:1.可靠性保障 2.流量控制 3.拥塞控制 4.延迟保障 5.带宽保障
Web应用
World Wide Web.
- 网页
- 网页互相链接
网页(web page)包含多个对象(objects)
- 对象:HTML文件、JPEG图片、视频文件、动态脚本等
- 基本HTML文件:包含对其他对象引用的链接
对象的寻址(addressing)
- URL(uniform resource locator):统一资源定位器
-
Scheme://host.port/path
对象的寻址.png
HTTP协议概述
万维网应该遵循HTTP协议
HTTP:HyperText Transfer Protocol 超文本传输协议
C/S结构:
- 客户——Browser:请求、接收、展示Web对象
- 服务器——Web Server:响应客户的请求,发送对象
使用TCP传输服务:
- 服务器在80端口等待客户的请求
- 浏览器发起服务器的TCP连接(创建套接字socket)
- 服务器接受来自浏览器的TCP连接
- 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
- 关闭TCP连接
无状态:
- 服务器不维护任何有关客户端过去所发请求的信息
HTTP连接
- 非持久性连接
- 每个TCP连接最多允许传输一个对象
- HTTP1.0版本使用非持久性连接
- 持久性连接
- 每个TCP连接允许传输多个对象
- HTTP1.1版本默认使用持久性连接



持久性HTTP.png
DNS概述
DNS:Domain Name System 域名系统
解决的是互联网上主机/路由器的识别问题
- IP地址
- 域名:www.baidu.com
解决域名和IP地址之间的映射问题
域名解析系统DNS:将域名翻译为IP地址
- 多层命名服务器构成的分布式数据库
- 应用层协议:完成名字的解析:1. 互联网的核心功能,用应用层协议实现 2.网络边界复杂
DNS:
- 域名向IP地址的翻译
- 主机别名
- 邮件服务器别名
- 负载均衡:Web服务器
DNS采用分布式层次式数据库:

最顶级被称为根域名服务器.
本地域名解析服务器无法解析域名时,访问根域名服务器
根域名服务器:
- 如果不知道映射,访问权威域名服务器
- 获得映射
- 向本地域名服务器返回映射
第二层称为:顶级域名服务器(TLD,top-level domain):负责com, org, net, edu等顶级域名和国家顶级域名,例如cn, uk, fr等
第三层成为:权威域名服务器:组织的域名解析服务器,提供组织内部服务器的解析服务
- 组织负责维护
- 服务提供商负责维护
本地域名解析服务器:
- 不严格属于层级体系
- 每个ISP有一个本地域名服务器: 默认域名解析服务器
- 当主机进行DNS查询时,查询被发送到本地域名服务器: 作为代理(proxy),将查询转发给(层级式)域名解析服务器系统
DNS记录和消息格式
DNS记录,又称资源记录(RR,resource records)

P2P应用:原理与文件分发
web email dns都是C/S架构
纯P2P架构




在文件分发的情况下,P2P架构有很好的扩展性,当节点数增加时,文件传输速率几乎是不变的
文件分发:BitTorrent (P2P的网络应用)



P2P应用:索引技术
P2P系统的索引:信息到节点位置(IP地址+端口号)的映射
文件共享(电驴)
- 利用索引动态跟踪节点所共享的文件的位置
- 节点需要告诉索引它拥有哪些文件
- 节点搜索索引,从而获知能够得到哪些文件
即时消息(QQ)
- 索引负责将用户名映射到位置
- 当用户开启IM应用时,需要通知索引它的位置
- 节点检索索引,确定用户的IP地址
三种索引的方案:1. 集中式 2. 洪泛式查询 3. 层次式覆盖网络(案例应用:skype)