计算机网络学习笔记-应用层
网络应用层概述
网络应用的基本原理
网络应用的体系结构
CS结构
客户机-服务器结构(Client-Server , CS)
P2P结构
点对点结构(Peer-to-Peer , P2P)
混合结构
CS和P2P的混合结构
网络应用的进程通信
进程间通信
网络应用的基础:进程间通信
进程:主机上运行的程序
同一主机上运行的进程间通信:
- 进程间的通信机制
- 操作系统提供
不同主机上运行的进程间通信:
-
消息交换(报文交换)
-
不同主机上运行的进程可分为:
- 客户机进程:发起通信请求的进程
- 服务器进程:等待通信请求的进程
P2P结构的应用也存在客户机进程/服务器进程之分,因为P2P也是有请求方和响应方之分
Socket套接字
不同主机上的进程间通信依靠Socket机制来实现,这是操作系统提供的一种抽象,它把网络的硬件基础设施和网络协议栈抽象为Socket。
进程通过Socket这个抽象来使用下层(链路层、网络层、传输层)网络协议栈,进程间通信利用socket发送/接受消息来实现
不同主机上的进程间通信类似于寄信:
-
Socket相当于一个门
-
发送方将消息送到门外邮箱
-
发送方依赖(门外的)传输基础设施将消息传输到接收方所在主机,并送到接收方的门外
-
接收方从门外获取消息
不同主机上的进程间通信依赖传输基础设施,传输基础设施由网络协议栈构成,
Socket相当于操作系统提供的网络编程API,网络应用开发也称为Socket编程
Socket向进程提供的API功能包括:
- 消息传输(报文传输)
- 传输协议的选择
- 参数的设置
寻址进程
在进行不同主机上的进程间通信时,为了让消息能够正确的传输到目的主机上的目的进程(即寻址进程),需要对进程进行标识,即不同主机上的进程间通信时,每个进程必须拥有标识符
为了寻址进程,先要寻址主机;为了寻址主机,先要标识主机;如何标识主机?——IP地址
主机有了IP地址后,还不足以寻址进程。因为同一主机上可能同时又多个进程需要通信。
如何标识进程?——端口号(Port number)
- 主机上每个需要通信的进程都会被分配一个端口号
- HTTP Server : 80
- Mail Server : 25
不同主机上的进程的标识符:
- IP地址 + 端口号
应用层协议
规定消息交换中的格式、顺序
网络应用应遵循应用层协议
应用层协议类型:
- 公开协议
- 由RFC(Request For Comments)定义,RFC文档是由IETF(Internet Engineering Task Force)组织发布和维护的。
- 允许互操作
- HTTP、SMTP,······
- 私有协议
- 多数P2P文件共享应用
应用层协议的内容:
- 以HTTP协议为例:
- 规定消息的类型(type)
- 请求消息
- 响应消息
- 规定消息的语法/格式(syntax)
- 消息中有哪些字段?
- 每个字段如何描述?
- 规定字段的语义(semantics)
- 字段中信息的含义
- 规定一些规则
- 进程何时发送/响应消息
- 进程如何发送/响应消息
网络应用的需求
不同网络应用对消息交换的需求不同。
网络应用的需求类型:
- 数据丢失(data loss)和可靠性(reliability)
- 某些网络应用能够容忍一定的数据丢失:网络电话,在线视频
- 某些应用要求100%可靠的数据传输:网上银行
- 时间(timing)/时延(delay)
- 某些网络应用只有在延迟足够低时才”有效“:网络电话、网络游戏
- 带宽(bandwidth)
- 某些网络应用只有在带宽达到最低要求时才”有效“:网络视频
- 某些网络应用能够适应任何带宽:email
底层(传输层及以下层)为应用层提供什么服务:
总结
网络应用依靠的是相同的应用层协议来正确的进行不同主机的进程间消息交换。
消息交换并非由应用层独自来实现,而是由传输层、网络层、数据链路层、物理层共同提供传输服务。
Web应用
概述
万维网WWW是World Wide Web的简称,也称为Web、3W等。WWW是基于客户机/服务器方式的信息发现技术和超文本技术的综合。WWW服务器通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本,利用链接从一个站点跳到另个站点。这样一来彻底摆脱了以前查询工具只能按特定路径一步步地查找信息的限制
web的构成:
- 网页
- 网页之间互相链接
网页的构成:
-
网页(Web Page)包含多个对象(objects)
-
基本HTML文件:包含对其他对象引用的链接
-
对象:HTML文件、JPEG图片、视频文件、动态脚本等
对象的寻址(addressing):
- URL(U你form Resource Locator):统一资源定位符——RFC1738
- URL:Scheme://host:port/path
- 意义:互联网上所有的资源都有唯一的标识符
web应用层遵循的协议:HTTP协议
-
HyperText Transfer Protocol(超文本传输协议)
-
C/S结构
-
版本:
- 1.0——RFC 1945
- 1.1——RFC 2068
-
无状态(stateless):服务器不维护任何有关客户端过去所发请求的信息(不记录客户的历史行为)
-
传输层协议:TCP协议
- 服务器在80端口等待客户的请求
- 浏览器发起到服务器的TCP连接(创建Socket套接字)
- 服务器接受来自浏览器的TCP连接
- 浏览器(HTTP客户端)与Web服务器(HTTP服务器)交换HTTP消息
- 关闭TCP连接
-
总结:web应用层遵循HTTP协议,传输层遵循TCP协议
HTTP连接类型
HTTP对下层TCP的使用有两种不同的方法:
非持久性连接
持久性连接
HTTP消息格式
HTTP请求消息
在TCP连接成功建立后,客户端发送HTTP请求消息
请求消息采用ASCII编码,人直接可读
例:
HTTP响应消息
Email应用
概述
Email应用的组成:
-
邮件客户端(User agent)
- 读写Email消息
- 与服务器交互,收/发Email消息‘
-
邮件服务器(Mail Server)
- 邮箱:存储发给该用户的Email
- 消息队列(message queue):存储等待发送的Email
-
SMTP协议(Simple Mail Transfer Protocol)
-
邮件服务器之间传递消息所使用的协议
-
客户端:发送消息的服务器
-
服务器:接收消息的服务器
-
使用TCP进行Email消息的可靠传输
-
端口25
-
传输过程的三个阶段
- 握手
- 消息传输
- 关闭
-
命令/响应交互模式
- 命令:ASCII文本
- 响应:状态代码和语句
-
Eamil消息只能由7位ASCII码构成
-
使用持久性连接
-
SMTP协议与HTTP协议对比:
- 不同
-
HTTP:拉式(PULL)
SMTP:推式(PUSH)
-
HTTP:每个对象封装在独立的响应消息中
SMTP:多个对象在由多个部分构成的消息中发送
- 相同
- 都使用命令/响应交互模式
- 命令和状态代码都是ASCII码
Email消息格式与POP3协议
Email消息格式
头部行(Header)
- TO
- From
- Subject
- MIME:多媒体邮件扩展
- 通过在邮件头部增加额外的行以声明MIME的内容类型
消息体(body)
- 消息本身
- 只能是ASCII字符
邮件访问协议
Email在应用层上不只使用了SMTP这一种协议,还使用了邮件访问协议
邮件访问协议:
- 从服务器获取邮件
- POP:Post Office Protocol
- 认证/授权(客户端–服务器)和下载
- IMAP:Internet Mail Access Protocol
- 更多功能
- 更加复杂
- 能够操纵服务器上存储的消息
- HTTP:163、QQ Mail等
POP协议
IMAP协议
DNS应用
概述
DNS:Domain Name System-域名系统
DNS域名解析系统:
-
多层命名服务器构成的分布式数据库
-
应用层协议:完成域名的解析
- Internet核心功能,用应用层协议实现
- 网络边界复杂
-
分布式层次式数据库
-
DNS根域名服务器工作过程:
- 当本地域名服务器无法解析域名时,访问根域名服务器
- 当根域名服务器不知道映射时,访问权威域名服务器获得映射,然后向本地域名服务器返回映射
-
TLD(top-level domain)顶级域名解析服务器
- 负责com、org、net、edu等顶级域名和国际顶级域名(cn、uk、fr等)
-
权威(Authoritative)域名解析服务器
- 组织的域名解析服务器,提供组织内部服务器的解析服务
-
本地域名解析服务器
- 不严格属于层级体系
-
每个ISP有一个本地域名服务器
-
当主机进行DNS查询时,查询首先被发送到本地域名服务器
DNS查询示例:
假如主机Cis.poly.edu要获得gain.cs.umass.edu域名的IP地址
-
迭代查询
-
递归查询
DNS记录缓存和更新
DNS记录和消息格式
DNS记录
数据库中记录的格式
资源记录(resource records)
DNS协议与消息
如何注册域名:
P2P应用
p2p结构:
- 没有服务器
- 任意端系统之间直接通信
- 节点阶段性接入Internet
- 节点可能更换IP地址
以具体应用为例:
文件分发
从一个服务器向N个节点分发一个文件所需时间