## 2.1 应用层协议原理
研发网络的核心是写出能够运行在不同端系统和通过网络彼此通讯的程序。
网络核心设备并不在应用层上作用(路由器、链路层交换机)
### 2.1.1 网络应用程序体系结构
从应用研发者的角度:网络体系结构是固定的,并为应用程序提供了特定的服务集合。
应用程序体系结构(application architecture)规定了如何在各种端系统上组织应用程序。
主流体系结构:
* 客户-服务器体系结构(client-service architecture)
* 对等体系结构(P2P architecture)
#### 客户-服务器体系结构
总有一个打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求。客户相互之间不直接通信。
配备大量主机的数据中心常被用于创建强大的虚拟服务器,用与解决单台服务器跟不上它所用户请求的情况。
#### P2P体系结构
对位于数据中心的专用服务有最小(或无)依赖,相反,应用程序在间断连接的主机之间使用之间通信,这些主机被称为对等方。
自扩展性(self-scalability):通过向其他对等方发送请求以增强系统的服务能力。
主要挑战:
* ISP 友好:大多是ISP已经受限于“非对称的带宽应用”,即上载比下载少
* 安全性:高度分布和开放特性给应用带来的挑战
* 激励:说服用户提供带宽、储存和计算机资源
### 2.1.2 进程通信
在操作系统中,进行通信的实际上是进程(process)而不是程序,它们使用进程间通信机制相互通信。在不同的端系统上的进程,通过跨越计算机网络交换报文(message)而相互通信。
#### 客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。
在给定的一对进程之间的通信会话场景中,发起通信的进程被标识为客户(client),在会话开始时等待联系的进程被标识为服务器(server)。
在P2P体系结构中,一个进程既可以作为服务器,也可以作为客户。
#### 进程与计算机网络之间的接口
进程通过套接字(socket)的软件接口向网络发送报文和从网络接收报文。
套接字也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface, API)。
应用程序开发者可以控制套接字在应用层端的一切,而对于运输层,只限选择运输层协议和传送写参数。
#### 进程寻址
为表示接收进程,需要标识:
* 主机地址(IP)
* 定义在目的主机中的接收进程的标识符(端口号,port number)
### 2.1.3 可供应用程序使用的运输服务
#### 可靠数据传输
可靠数据传输(reliable data transfer):应用程序一端发送的数据正确、完全地交付给该程序的另一端
容忍丢失的应用(loss-tolerant application)可以接受不提供可靠数据交付的服务
#### 吞吐量
可用吞吐量就是发送进程能够向接收进程交付比特速率。
带宽敏感的应用(bandwidth-sensitive application):具有吞吐量要求的应用程序。
弹性应用(elastic application)能够根据情况使用吞吐量的应用程序。
#### 定时
运输层协议也提供定时保证。
#### 安全性
运输协议能为应用程序提供一种或多种安全性服务。
例如在发送数据前加密数据,在接收数据时解密数据。
### 2.1.4 因特网提供的运输服务
#### TCP服务
TCP协议提供的两种服务:
* 面向连接的服务:在数据流动前,客户端和服务器端先通过‘握手’交换信息,从而建立一个TCP连接;交换完数据后必须关闭连接。
* 可靠的数据传输服务:通信进程可以依靠TCP协议进行无差别、无错误的传输。
TCP协议具有拥塞控制协议,虽然不一定为通信进程带来好处,但是对互联无整体带来好处。
_安全套接字层(Secure Sockets Layer,SSL)为一种加强版的TCP协议,这种强化是在应用层上实现的。_
#### UDP服务
UDP是一种不提供不必要服务的轻量级运输协议,仅提供一种不可靠数据传输服务,即不保证报文能到达接收进程;UDP没有拥塞控制协议。
### 2.1.5 应用层协议
应用层协议(application-layer protocol)定义了运行在不同端系统上的应用程序进程如何传递报文:
* 交换报文的类型
* 各种报文的语法
* 字段的语义
* 一个进程何时以及如何发送报文
- 介绍
- 第一章 计算机网络和因特网
- 1.1 什么是因特网
- 1.2 网络边缘
- 1.3 网络核心
- 1.4 分组交换网中的时延、丢包和吞吐量
- 1 .5 协议层次及其服务模型
- 1.6 面对网络攻击
- 1 .7 计算机网络和因特网的历史
- 第二章 应用层
- 2.1 应用层协议原理
- 2.2 Web 和 HTTP
- 2.3 文本传输协议:FTP
- 2.4 因特网中的电子邮件
- 2.5 DNS:因特网的目录服务
- 2.6 P2P应用
- 2.7 套接字编程
- 第三章 运输层
- 3.1 概述和运输层服务
- 3.2 多路复用与多路分解
- 3.3 无连接运输:UDP
- 3.4 可靠数据传输原理
- 3.5 面向连接的运输:TCP
- 3.6 拥塞控制原理
- 3.7 TCP拥塞控制
- 第四章 网络层
- 4.1 概述
- 4.2 虚电路和数据报网络
- 4.3 路由器工作原理
- 4.4 网际协议:因特网的转发和编址
- 4.5 路由选择算法
- 4.6 因特网中的路由选择
- 4.7 广播和多播路由选择
- 第五章 链路层:链路、接入网和局域网
- 5.1 链路层概述
- 5.2 差错检测和纠正技术
- 5.3 多路访问链路和协议
- 5.4 交换局域网
- 5.5 链路虚拟地址:网络作为链路层
- 5.6 数据中心网络
- 5.7 回顾:WEB页面请求的历程
- 第六章 无线网络和移动网络
- 6.1 概述
- 6.2 无线链路和网络特征
- 6.3 WiFi:802.11 无线LAN
- 6.4 蜂窝因特网接入
- 6.5 移动管理:原理
- 6.6 移动IP
- 6.7 蜂窝网中的移动性管理
- 第七章 多媒体网络
- 7.1 多媒体网络应用
- 7.2 流式储存视频
- 7.3 IP语音
- 7.4 实时会话式应用的协议
- 7.5 支持多媒体的网络
- 第八章 计算机网络中的安全
- 8.1 什么是网络安全
- 8.2 密码学的原则
- 8.3 报文完整性和数字签名
- 8.4 端点鉴别
- 8.5 安全电子邮件
- 8.6 使用TCP连接安全:SSL
- 8.7 网络层安全性:IPsec和虚拟专用网
- 8.8 使无线LAN安全
- 8.9 运行安全性:防火墙和入侵检测系统
- 第九章 网络管理
- 9.1 什么是网络管理
- 9.2 网络管理的基础设施
- 9.3 因特网标准管理框架
- 9.4 ASN.1
- 总结
- c.1 第一章小结
- c.2 第二章小结
- c.3 第三章小结
- c.4 第四章小结
- c.5 第五章小结
