应用层
1.网络应用层协议
1.1 网络应用程序体系结构
- 客户/服务器体系结构
- P2P体系结构
- 客户机/服务器和P2P混合的体系结构
1.1.1 客户/服务器体系结构
服务器
总是打开的主机,具有固定的、众所周知的IP地址
主机群集常被用于创建强大的虚拟服务器
客户机
同服务器端通信,可以间断的同服务器连接
可以拥有动态的IP地址,
客户机相互之间不直接通信
1.1.2 P2P体系结构
没有总是打开的服务器
任意一对主机相互通信
对等方间歇连接并且可以改变IP地址
优点:自扩展性
缺点:难以管理
1.1.3 客户机/服务器和P2P混合的体系结构(更常用)
两种应用:Napster、即时讯息
1.2 进程通信
- 进程:运行在 端系统中的程序
- 同一主机上的两个进程通过内部进程通信机制进行通信
- 不同主机上的进程通过交换报文相互通信
- 客户进程:发起通信的进程
- 服务器进程:等待联系的进程
- 注意:具有P2P体系结构的应用程序既有客户进程和服务器进程
1.3 套接字
- 套接字是进程与计算机网络的接口
- 进程通过它的套接字在网络上发送和接收报文
- 套接字又叫作应用程序编程接口API
- 用户通过API对传输层的控制仅限于:(1)选择传输协议(2)能设定几个参数
1.4 进程寻址
- 主机有唯一的32位IP地址(IPV4)
- 同一个主机上的进程通过端口号进行标识
- 主机上的进程标识包括IP地址和端口号
- 常用应用程序的端口号:(1)Web服务:80(2)邮件服务:25
1.5 应用层协议
1.5.1 内容:
- 交换的报文类型:如请求报文和应答报文
- 报文类型的语法:报文中的各个字段及其详细描述
- 字段的语义,即包括在字段中的信息的含义
- 进程何时、如何发送报文即对报文的响应
1.5.2 类型:
公共领域协议
(1)由RFC文档定义
(2)可供大家使用
(3)例如:HTTP、SMTP
专用协议
(1)例如:KaZaA、Skype等
1.5.3 因特网传输协议提供的服务
TCP服务:
- 面向连接的服务:在客户机程序和服务器程序之间建立连接
- 可靠的传输服务:接收和发送进程间
- 流量控制:发送方不会淹没接收方
- 拥塞控制:网络出现拥塞时抑制发送进程
- 没有提供:时延保护,最小带宽保证
UDP服务:
- 无连接的服务
- 不可靠的数据传输
- 没有提供:建立连接,可靠性,流量控制,拥塞控制,时延和带宽保证
注意:可靠性与连接性没有必然联系,建立连接的服务也可以做成不可靠的
安全TCP:SSL(Security Socket Layer)
- 提供加密的TCP连接
- 保证数据完整性
- 端点认证
2 HTTP
2.1 概述
(1)使用TCP
- 客户初始化一个与HTTP服务器80端口的TCP连接(创建套接字)
- HTTP服务器接受来自客户的TCP可连接请求,建立连接
- Browser(HTTP client)和WEB服务器(HTTP server)交换HTTP消息(应用层协议消息)包括HTTP请求和响应时间
- 最后结束(或叫关闭)TCP连接
(2)HTTP是无状态协议
-
HTTP服务器不维护客户
-
先前的状态消息
-
维护状态的协议非常复杂!!!
-
必须维护过去的历史(状态信息)
-
如果server/client崩溃,它们各自的状态视图可能不一致,因此必须保持维护一致
(3)HTTP报文类型
请求报文和响应报文
请求报文:ASCII文本(易于人读格式)
2.2 非持久连接和持久连接
2.2.1非持久HTTP连接
- 每个TCP连接上只传送一个对象,下载多个对象需要建立多个TCP连接
- HTTP/1.0 使用非持久的HTTP连接
- 每个对象需要2个RTT
- OS必须为每个TCP连接分配主机资源
- 大量客户的并发TCP连接形成服务器的严重负担
2.2.2持久HTTP连接
- 一个TCP连接上可以传送多个对象
- HTTP/1.1默认使用持久HTTP连接
- 服务器发送响应消息后保持连接
- 不带流水线的持久HTTP连接:客户先前响应消息收到,才发出新的请求对象,每个引用对象经历一个RTT
- 带流水线的持久HTTP连接:HTTP/1.1 默认使用客户遇到一个引用对象就发送消息,所有引用对象只经历1个RTT
2.2.3响应时间模型
- RTT(往返时间)的定义:1个分组从客户主机到服务器在到客户主机所花费的时间
- 响应时间分析:1个RTT用于建立TCP连接
- 1个RTT用于HTTP请求/响应时间的交互
- HTML文件传输时间:Total=2RTT+transmit time
3.FTP协议
3.1 文件传输协议(File Transfer Protocol)
3.1.1基本定义
- 传输文件到远程主机/从远程主机下载文件
- client/server模式
- client:发起传输的一方
- server:远程主机
- ftp服务器:端口号21
3.1.2 FTP流程
- 客户首先发起建立一个与服务器21端口(控制连接端口)之间的TCP连接
- 客户在控制连接上进行身份验证
- 客户在控制连接上发送命令来浏览远程主机的目录
- 当服务器接收到一个文件传输命令时,它使用端口20(数据连接端口)创建一个与客户TCP数据连接
- 传输一个文件后,服务器结束这个数据连接
3.1.3 FTP命令和应答
常见命令:
- 在控制连接上发送ASCII文本
- USER username
- PASS password
- LIST:返回当前远程目录的文件列表
- RETR filename:获取远程主机当前目录下的一个文件(get)
- STOR filename:存放一个文件到远程主机当前目录下(put)
常见应答:
状态码及其相应短语(类同HTTP)
- 331 Username OK,password required
- 125 data connection already open;transfer starting
- 425 Can’t open data connection
- 452 Error writing file
3.1.4 FTP数据连接建立模式
主动模式:
- 客户端发送PORT命令
- 服务器根据PORT命令指定的客户端地址和端口号发起数据连接
被动模式: - 客户端发送PASV命令
- 服务器返回监听的地址和端口号
- 客户端发起数据连接
建立数据通道时,用PORT模式还是PASV模式,选择权在于FTP客户端
为什么会有两种模式?
答: 很多内部网络禁止来自外部的连接请求
3.1.5 FTP数据传输模式
1.ASCII模式
假定正在传输的文件为简单的ASCII码文本,此时FTP通常会自动地调整文件内容以便于把文件解释成另外一台计算机存储的文本文件的格式
2.二进制模式
在二进制传输中,保存文件的位序,以便拷贝和原始文件是逐位一一对应的
4.SMTP
-
使用TCP协议
-
服务器端口号:25
-
直接传送:发送服务器到接受服务器
传输的三个阶段 -
握手(问候)
-
传输邮件消息
-
结束
4.1 电子邮件
三个主要组成部分:
- 邮件协议
- 用户代理
- 邮件服务器
4.1.1用户代理
- 允许用户阅读,回复,转发,保存,编辑邮件消息
- 例如:Outlook,firefox等
- 发送/接受邮件消息/从服务器
- 运行邮件协议
4.1.2 邮件服务器
- 用邮箱存放用户接收的邮件消息
- 外出报文队列
- 运行邮件协议
4.1.3 邮件协议
- 邮件发送协议
- 邮件收取协议
4.2 SMTP
例如:Alice 发送邮件给Bob
1)Alice使用用户代理编写给bob@someschool.edu的邮件消息
2)Alice的用户代理发送邮件消息到他的邮件服务器,邮件消息被存放在邮件消息队列
3)Alice邮件服务器的SMTP客户端发起建立一个Bob的邮件服务器的SMTP服务器端的TCP连接,然后经过应用层握手。
4)SMTP客户端在这个TCP连接上发送Alice的邮件消息
5)Bob服务器收到邮件,存放邮件消息存到Bob的邮箱
6)Bob调用他的用户代理读取邮件消息
未完待续----------------------------------