计算机网络自顶而下方法_学习笔记_二
第二章 应用层
网络应用是计算机网络存在的理由
1.应用层协议原理
1.1 体系架构:客户-服务器 结构
P2P体系 结构
1.2 套接字socket = API 应用程序编程接口 (Application Programming Interface)
web 80; 邮件 25;
1.3如何选择运输服务?
讨论这个问题前,先对应用程序的要求进行分类
可靠数据传输 如文件
吞吐量 如视频
定时(同时) 如电话
安全性 如机密
TCP的安全: 用SSL 安全套接字层 SSL(Secure Socker Layer)来加强TCP
UDP 最小服务;无连接不握手;不可靠数据传送;无拥塞控制机制;
如因特网电话可能会使用
一个列表,结合上面给出的因素而给出的列表
应用层 支撑的运输层·
邮件 SMTP TCP
远程终端访问 Telnet TCP
Web HTTP TCP
文件传输 FTP TCP
流式多媒体 HTTP TCP
因特网电话 SIP、RIP UDP或TCP
1.4 应用层协议
定义:如何相互传递报文:交换报文的类型
各种报文类型的语法
字符的语义
一个进程 何时 如何 发送、响应报文
下面介绍几个最重要的
2.Web和HTTP
2.1 超文本传输协议 HyperText Transfer Protocol 即 HTTP
URL地址 = 存放对象的服务器主机名 + 对象的路径名
HTTP 无状态协议;不存储不保存
非持续连接的HTTP
总响应时间 = 两个RTT(Round-TripTime 往返时间)+服务器传输HTML文件时间
持续连接的HTTP
2.2 HTTP报文格式
(至此以下的所有格式中(不仅是HTTP)都含有cr lf的换行 空行等标识 勿忘)
请求报文格式:请求行 首部行 实体体
请求行:方法字段(GET、POST、等)、URL字段、HTTP版本字段
首部行 即 包含了各种属性
实体体 如web搜索中,POST请求会在实体体中表示相关的内容;
响应报文格式:状态行 首部行 实体体
状态行:协议版本字段 状态码 响应状态信息
首部行 即 同样包含各种属性
2.3 用户和服务器之间的交互 cookie
由前面的无状态HTTP引申的cookie
cookie可用于标识一个用户
2.4 web缓存 又叫做 代理服务器(proxy server)
其中web缓存器既是服务器又是客户;
原因(为什么用它). 迅速把对象给客户
减少通信量
相比于增加带宽,很明显!加web缓存可以大大大大减少成本
2.5 条件GET
由于2.4中介绍的web缓存和实际web服务器中存在可能对象不一致的情况而存在的
即 允许缓存器验证它的对象是最新的
Last-Modified:
If-modified-since:
HTTP/1.1 304 Not Modified
3.电子邮件
3.1 有三个主要组成:用户代理;邮件服务器;简单邮件传输协议.
3.2 SMTP:用于发送方的邮件服务器 发送报文到 接受方的邮件服务器
限制(缺点):所有邮件报文 体部分 只能 用简单的 7bitASC2码表示
它将二级制多媒体数据编码为ASC2码,到达之后在解码还原
3.3 STMP和HTTP的比较
HTTP是拉协议,STMP是推协议
SMTP有7bit限制 HTTP无
在处理一个既包含文本又包含图片的文档时,HTTP把每个对象封装到主机的HTTP响应报文中,STMP则把所有的报文对象放在同一个报文之中.
3.4 STMP格式
3.5 其它的拉操作协议
POP3 Post Office Protocol-Version 3
特许 事务处理 更新
IMAP Internet Mail Access Protocol
基于Web的电子邮件
4.DNS:因特网的目录服务
4.1 识别主机 主机名(如www.facebook.com)
IP地址 四个字节
域名系统 Domain Name System
主要服务:将主机名转换到IP地址的目录服务
DNS是一个由分层的DNS服务器实现的分布式数据库
是一个使得主机能够查询分布式数据库的应用层协议
DNS服务器是运行BIND软件的UNIX机器
DNS协议运行在UDP之上,使用53号端口 web是80 邮件是25
DNS其它服务 主机别名;邮件服务器别名;负载分配;
4.2 DNS工作原理
分析了单个总DNS服务器的不可行性
于是有 根服务器;顶级域DNS服务器(TLD);权威DNS服务器;本地DNS服务器
400多个;com\org\net\edu\uk\cn;
查询方式也有两类:递归查询和迭代查询
在实际中,插叙一般都是 从请求主机到本地DNS服务器是递归的,而其它的查询都是迭代的.
4.3 DNS缓存 顾名思义 这其中 一般两天 即会丢弃缓信息
4.4DNS记录和报文
资源记录(Resource Record) RR
构成(Name, Value, Type, TTL)
其中Type决定了Name和Value的值类型
DNS报文的 查询和回答报文 的格式 是一致的
如何在DNS数据库中插入记录
即"如何构建新的网址" 注册登记机构 registrar
5.P2P文件分发 这一节是我读下来觉得最有意思的.
5.1 两种结构在大文件传输上的比较 有一张坐标轴比较很形象,
5.2 BitTorrent
追踪器
最稀缺优先 目的:大致均衡每个块在洪流中的副本数量
6.视频流和内容分发网
6.1 因特网视频 比特率
6.2 DASH技术 正是它完成了 智能调节分辨率的功能 全称叫 经HTTP的动态适应性流
6.3 内容分发网CDN
CDN操作DNS重定向
集群选择策略
6.4 给出了 Netflix YouTube 和 迅雷看看 的例子
7.套接字编程:生成网络应用
用的刚好是我稍微熟悉的python
UDP套接字编程
TCP套接字编程 这两个例子可以更好地理解TCP和UDP之间的差异
8.小结
客户-服务器 P2P
HTTP SMTP POP3 DNS
P2P
CDN
TCP和UDP 套间字编程