tm
【计算机网络:自顶向下方法】(二)应用层
文章目录
- 应用层
- 如何创建一个新的网络应用?
- 2.1 应用层原理
- 网络应用的体系结构
- 对等模式(P2P:Peer To Peer)
- 混合体:客户-服务器和对等体系结构
- 进程通信
- 分布式进程通信需要解决的问题
- 问题1:进程标示和寻址问题(服务用户)
- 问题2:传输层提供的服务-层间信息的代表
- TCP上的socket
- UDP上的socket
- 问题3:如何使用传输层提供的服务实现应用
- 应用层协议
- Internet 传输层提供的服务
- 为什么要有UDP
- 安全&TCP
- 2.2 Web and HTTP
- HTTP
- HTTP连接
- HTTP请求报文
- 用户-服务器状态 : cookies
- Web缓存 (代理(proxy server)服务器)
- 条件GET方法
- FTP: 文件传输协议
- 电子邮件(EMail)
- eg
- 简单的SMTP交互
- 小结
- 邮件报文格式
- POP3
- DNS (53端口, 给应用程序应用的程序 )
- DNS系统需要解决的问题
- 问题2:解析问题-名字服务器(NameServer)
- DNS协议、报文
- 提高性能 -- > 缓存
- 问题3:维护问题:新增一个域
- 攻击DNS
- P2P
- 文件分发
- BitTorrent
- p2p文件共享
- 集中式目录
- 泛洪 (完全分布式)
- 利用不匀称性:KaZaA
- CDN
- 视频流化服务和CDN:上下文
- Socket编程
- TCP Socket
- socket俩个重要的数据结构
- TCP编程
- UDP socket 编程
- 小结
-
==**🌹感谢阅读🌹**==
学习推荐 : 中科大计算机网络自顶向下
应用层
如何创建一个新的网络应用?
- 编程
- 在不同的端系统上运行 通过网络基础设施提供的服 务,应用进程彼此通信
- 如Web: Web 服务器软件与浏览器软件 通信
- 网络核心中没有应用层软件
- 网络核心没有应用层功能
- 网络应用只在端系统上存在 ,快速网络应用开发和部署
2.1 应用层原理
网络应用的体系结构
对等模式(P2P:Peer To Peer)
混合体:客户-服务器和对等体系结构
进程通信
分布式进程通信需要解决的问题
问题1:进程标示和寻址问题(服务用户)
- HTTP默认端口号 80 SMTP : 25
问题2:传输层提供的服务-层间信息的代表
TCP上的socket
UDP上的socket
问题3:如何使用传输层提供的服务实现应用
应用层协议
- 应用需要传输层提供什么样的服务? 如何描述传输层的服务?
- 常见应用对传输服务的要求
Internet 传输层提供的服务
为什么要有UDP
安全&TCP
2.2 Web and HTTP
HTTP
- 超文本传输协议( HyperText Transfer Protocol) : 文本与文本之间任意指向的关系
- Web页面(也叫文档) : 由对象注册的,一个对象只是一个文件.
- 多数Web页面含有一个基本的
HTML
文件
HTTP连接
- 非持久HTTP连接
- 响应时间模型
- 持久HTPP
HTTP请求报文
- 提交表单输入
用户-服务器状态 : cookies
Web缓存 (代理(proxy server)服务器)
- 缓存既是客户端又是 服务器
- 通常缓存是由ISP安 装 (大学、公司、居 民区
ISP
)
为什么要使用Web缓存 ?
降低客户端的请求响应时 间
可以大大减少一个机构内 部网络与Internent接入 链路上的流量
互联网大量采用了缓存: 可以使较弱的ICP也能够 有效提供内容
改进
缓存例子:安装本地缓存
- 总体延迟: = 0.6 * (从原始服务器获取对象的 延迟) +0.4 * (从缓存获取对象的延 迟)
= 0.6 (2.01) + 0.4 (~msecs) = ~ 1.2 secs 比安装154Mbps链路还来得小 (而且 比较便宜!)
条件GET方法
FTP: 文件传输协议
电子邮件(EMail)
- 邮件服务器
- 邮箱中管理和维护发送给用户 的邮件
- 输出报文队列保持待发送邮件 报文
- 邮件服务器之间的SMTP协议 :发送email报文
- 客户:发送方邮件服务器
- 服务器:接收端邮件服务 器
- 使用TCP在客户端和服务器之间传送报文,端口 号为25
- 直接传输:从发送方服务器到接收方服务器
- 传输的3个阶段 握手 传输报文 关闭
- 命令/响应交互 命令:ASCII文本 响应:状态码和状态信息
- 报文必须为7位ASCII码
eg
简单的SMTP交互
- telnet servername 25
- enter HELO, MAIL FROM, RCPT TO, DATA, QUIT commands
小结
- HTPP :拉协议 ,用户使用HTTP从服务器拉取这些信息
- SMTP :推协议,发送邮件服务器把文件推向接受邮件服务器。
邮件报文格式
POP3
DNS (53端口, 给应用程序应用的程序 )
- 负载均衡 : DNS也用于冗余的服务器之间进行负载分配 , 繁忙的站点被冗余分布在多台服务器上,每台服务器均运行在不同的端系统上,每个都有不同的IP地址。
DNS系统需要解决的问题
问题2:解析问题-名字服务器(NameServer)
-
Value : IP
-
T : type
-
区域名字服务器维护资源记录
-
资源记录(resource records)
- 作用:维护 域名-IP地址(其它)的映射关系
- 位置:Name Server的分布式数据库中
-
RR格式: (domain_name, ttl, type,class,Value)
-
Domain_name
: 域名 -
Ttl: time to live
: 生存时间(权威,缓冲记录) -
Class
类别 :对于Internet,值为IN -
Value
值:可以是数字,域名或ASCII串 -
Type
类别:资源记录的类型—见下页
-
DNS协议、报文
提高性能 – > 缓存
一旦名字服务器学到了一个映射,就将该映射 缓存起来
根服务器通常都在本地服务器中缓存着 使得根服务器不用经常被访问
目的:提高效率 可能存在的问题:如果情况变化,缓存结果和 权威资源记录不一致
解决方案:TTL(默认2天)
问题3:维护问题:新增一个域
攻击DNS
P2P
- 纯P2P架构 : 没有(或极少)一直运行的 服务器 任意端系统都可以直接通信 利用peer的服务能力 Peer节点间歇上网,每次IP 地址都有可能变化
- 例子: 文件分发 (BitTorrent) 流媒体(KanKan) VoIP (Skype)
- 非结构化P2P : 集中化目录 , 完全分布式,混合
- 结构化p2p :DHT(分布式散列表)维护环or树的有序拓扑结构( 不断深入的过程)
- 分布式命名
- 哈希值对应唯一的ID
文件分发
- 问题: 从一台服务器分发文件(大小F)到N个peer 需要多少时间?
- CS模式
- 当N足够的大的时候 ,取等号
- P2P模式
BitTorrent
p2p文件共享
- 两大问题: 如何定位所需资源 如何处理对等方的 加入与离开
- 可能的方案 :集中 分散 半分散
集中式目录
泛洪 (完全分布式)
利用不匀称性:KaZaA
- KaZaA:查询
CDN
视频流化服务和CDN:上下文
-
流量大、用户多 、异构性 不同用户拥有不同的能力(例如:有线接入和移 动用户;带宽丰富和受限用户 . — > 解决方案: 分布式的,应用层面的基础设施
-
由于存储下载视频 是一对一的关系,则下载未免有些慢了,于是就有了存储视频的流化服务.
-
多媒体流化服务:DASH
- 互联网络主机-主机之间的通信作为一种服务向用户提供
- OTT 挑战: 在拥塞的互联网上复制内容 “over the top”
1 : 流量服务器
2、向本地DNS服务器解析
3、返回URL
4、 告诉他离他最近的客户端的ip地址
6、再由kingCDN 向客户提供流化服务
Socket编程
TCP Socket
+ 过程
主要!!
- 重点理解堵塞 , 堵塞的时候 可以实现多进程 。。OS的内容
- 服务器一个端口对应许多个客户端端口,每个都是独立的会话关系,对应不同的socket。老师说过要区分端口和socket的概念
- TCP端口整数代表的是一个会话关系
- TCP : 四元组 ! < 1, 2,3, 4>
- 一个端口只能被一个服务器进程绑定,可以被多个进程共用。
- 端口是可以共用的,而socket的整数值不一样的
- Welcome socket : 返回一个整数
socket俩个重要的数据结构
// IP地址和port捆绑关系的数据结构(标示进程的端节点)
struct sockaddr_in {
short sin_family; //地址族
u_short sin_port;// port端口
struct in_addr ,sin_addr; //IP 地址
char sin_zero[8]; // align 对齐
};
//数据结构 hostent 域名和IP地址的数据结构
struct hostent {
char *h_name;//主机域名
char **h_aliases; //数组存储 主机别名
int h_addrtype;
int h_length; /*地址长度*/
char **h_addr_list; // 数组存储 IP地址
#define h_addr h_addr_list[0];
};
TCP编程
-
客户端
-
服务器
UDP socket 编程
- 没有交互
- 客户端
- 服务器
小结