[A Top-Down Approach][第二章 应用层]
标签(空格分隔): 未分类
网络应用是计算机网络存在的理由
首先从定义几个关键的应用层概念开始
- 应用程序所需要的网络服务,客户和服务器,进程和运输层接口.
- 然后详细考察几种网络应用程序.
- Web,电子邮件,DNS,和对等文件分发.
- 涉及开发运行在
TCP
和UDP
上的应用程序.
- 学习套接字
API
- 浮光掠影的用
Python
写一些简单的客户-服务器应用程序.
- 学习套接字
2.1 应用层协议原理
2.1.1 网络应用程序体系结构
应用程序体系结构(application architecture)
: 由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序.
- 两大主流体系:
- 客户-服务端体系结构(client-server architecture)
- 对等(P2P)体系结构(P2P architecture)
- 两大主流体系:
客户-服务端体系结构
服务器
:有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机.
- 对于某些大型的公司,例如
google
,facebook
,甚至要组建数据中心来处理.
- 对于某些大型的公司,例如
客户互相之间不通信.
常用应用: 典型的有
Web
,Telent
和电子邮件.
P2P体系结构
对位于数据中心的专用服务器有最小(甚至没有)的依赖.
在主机对之间使用直接通信,这些主机被称为对等方
常用应用:
- 文件共享:
BitTorrent
- 对等方协助下载加速器 : 迅雷
- 因特网电话 :
Skype
- IPTV :
PPStream
- 文件共享:
未来P2P应用面临三个主要问题
ISP
友好:大多数住宅ISP
受制于“非对称的” 带宽应用- 安全性: 高度分布和开放特性,会对安全带来挑战
- 激励: 未来P2P应用的成功也取决于说服用户自愿向应用提供宽带,存储和计算资源.
2.1.2 进程通信
- 进行通信的实质是
进程(process)
1. 客户和服务进程
在给定的一对进程之间的通信会话场景中,发起通信(即在该会话开始时发起与其他进程联系)的进程被标识为客户,另一方等待连接的是服务器.
2. 进程与计算机网络之间的接口
套接字(socket)
:进程通过一个称为套接字的软件接口向网络发送电报和从网络接收电报.- 套接字也称为应用层和运输层的
应用程序编程接口(Application Programming Interface ,API)
.
- 套接字也称为应用层和运输层的
应用程序开发者可以控制套接字在应用层端的一切,但是对运输层几乎没有控制,仅限于
- 选择运输层协议
- 设定几个运输层参数(如:最大缓存,最大报文段长度)
在2.7节对套接字进行更为详细的探讨.
3. 进程寻址
目的主机的地址:
IP地址(IP address)
- 第四章详细讨论.
目的主机中的接收进程的标识符:
端口号(port number)
- 第三章学习端口号.
2.1.3 应用程序所需要的运输服务特性
从四个方面对运输服务分类: 可靠数据传输,吞吐量,定时和安全性
可靠数据运输
就是所谓的丢包
可靠运输传输(reliable data transfer)
:提供这种服务,确信数据能无差错到达接收进程.- 电子邮件,文件传输,远程主机访问,Web文档等应用,数据丢失将会造成严重后果.
- 而有些多媒体等应用是
容许丢失的应用(loss-tolerant application)
吞吐量
就是所谓的下载速度
带宽敏感的应用(bandwidth-sensitive application)
- 当前许多多媒体应用都是带宽敏感的,尽管尽可能采用自适应编码技术.
弹性应用(elastic application)
:根据情况利用带宽.- 电子邮件,文件传输和Web.
定时
有的运输层协议也能提供定时保证.
就是所谓的延迟
- 在游戏和因特网电话中有较高的要求.
安全性
- 运输层协议提供一种或多种安全服务.
2.1.4 因特网提供的运输服务
1.TCP服务
TCP服务模型包括面向连接服务和可靠数据传输服务.
- 面向连接服务: 在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息.
- 握手阶段: 提示服务器和客户端.
- 建立一个全双工的
TCP 连接(TCP connection)
- 拆除连接.
- 可靠的数据传送服务:通信进程能够依靠
TCP
,无差错,按适当顺序交付所有发送的数据.
- 面向连接服务: 在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息.
TCP
协议还具有拥塞控制阶段- 这种服务不一定能为通信进程带来直接好处,给因特网带来整体好处
- 出现网络拥堵时,TCP的拥塞控制机制会抑制发送进程.
安全套接字层(Secure Sockets Layer,SSL
:为了提升安全性,提供了一种TCP
的加强版本SSL
- 这种强化是在应用层上的,
SSL
并不是跟TCP/UDP
并列的协议
- 这种强化是在应用层上的,
2.UDP服务
UDP
是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务.
- 无连接的.
- 不可靠数据传送服务
- 没有拥塞控制
3.运输协议所不能提供的服务
- 吞吐量和定时方面不能保证,幸好带宽再不断地扩大,也暂时不需要关注.
2.1.5 应用层协议
应用层协议(application-layer protocal)
: 定义了运行在不同端系统上的应用程序如何相互传递报文.- 交换的报文类型
- 请求报文和响应报文
- 各种报文类型的语法
- 报文的各个字段和这些字段是如何描述的.
- 字段的语义
- 即这些字段包含的信息的含义
- 一个进程何时发送报文,对报文的响应规则
- 交换的报文类型
2.1.6 本书设计的应用协议
- HTTP,FTP,STMP,DNS,P2P
2.2 Web 和 HTTP
- 诞生于 90年代后
2.2.1 HTTP概述
超文本传输协议(HyperText Transfer Protocal,HTTP)
:Web的应用层协议,Web的核心.
HTTP
使用TCP
作为它的支撑运输协议.HTTP
客户向服务器发起一个与服务器的TCP
链接,链接建立后,通过套接字接口访问TCP
HTTP
是一个无状态协议(stateless protocal)
- HTTP不保存客户的任何信息
- 所以需要
cookie
,session
对象(object)
: Web页面由对象组成,一个对象是一个文件- 一个
HTML
页面,JPEG
图形,CSS
文件……….
- 一个
2.2.2 非持续连接和持续连接
非持续连接(non-persistent connection)
- 每个请求/响应对经过一个单独的
TCP
连接发送.
- 每个请求/响应对经过一个单独的
持续连接(persistent connection)
- 所有请求/响应对经过相同的
TCP
连接发送. - 默认情况使用持续连接.
- 所有请求/响应对经过相同的
往返时间(Round-Trip Time,RTT)
:一个短分组从客户到服务端,再从服务端到客户端说花的时间- 包括了之前讨论的各种时延.
建立TCP连接传输一个对象需要的时间为 2个RTT+接受文件时间