应用体系结构
- C/S架构:如Web应用
- P2P架构:一个进程既可以是客户机进程,也可以是服务器进程。P:Peer,对等方。
应用层协议原理
应用层与运输层之间用Socket(套接字)进行连结。
两种运输层协议
- TCP:面向连接、可靠数据传输、拥塞控制、流量控制
- UDP:无连接、不可靠、没有拥塞控制和流量控制
HTTP协议
超文本传输协议。定义了浏览器和Web服务器之间进行消息交换的方式。
在运输层采用TCP协议,默认端口80。
HTTP版本
- HTTP 0.9:非持久连接
- HTTP1.0/1.1:持久连接,一个TCP连接可以请求多个Web页面
- 并行TCP连接:浏览器可以同时打开多个TCP连接请求对象
- 流水线:在单个持久连接中客户端可以连续发送多个对象请求而不需要等待上一个响应
往返时间RTT
指一个分组从客户端到服务器然后再返回客户端所花费的时间。
非持久HTTP响应时间=2*RTT+传输文档的时间
状态码
Cookie
HTTP没有状态,为了跟踪用户状态,服务器为用户产生一个唯一的识别码(在HTTP响应中set-cookie,请求中带cookie)。
Web缓存(代理服务器)
可以配置用户的浏览器, 使得用户的所有HTTP请求首先指向Web缓存。
条件Get
利用Get请求中If-modified-since字段告诉服务器,如果自指定日期后修改过,那么重新发送该对象,反之不要。
FTP协议
文件传输协议。使用两个并行的TCP连接来传输文件(带外传输控制信息)。
两个连接
- 控制连接:传输控制信息
- 数据连接:实际传输一个文件
控制连接贯穿了整个用户会话,但是每一次文件传输都需要建立一个新的数据连接。
两种模式
-
主动模式
客户端连服务器的21,建立控制连接,告知N+1端口。服务器主动使用20端口连接N+1,建立数据连接。
-
被动模式
客户端连服务器的21。服务器告知客户端P端口,客户端用N+1连P。
电子邮件系统
SMTP(推邮件)
用于发送邮件。TCP连接,服务器端口号25。报文必须按照7比特ASCII编码,这使得它对文件支持不好。
POP3(拉邮件)
用于接收邮件。服务器端口号110。
IMAP(拉邮件)
用于接收邮件。服务器端口号143。
IMAP与POP3的区别
IMAP客户端与服务器更新同步,而POP3仅在客户端内。
只要用户从POP3服务器读取了邮件,POP3服务器就把该邮件删除。IMAP复杂得多,允许用户部分读取邮件(例如摘要功能),同时提供本地和云端进行双向同步功能。
DNS域名解析服务
将主机名解析为IP地址。通常采用UDP,使用53号端口。
分布式、层次化的DNS架构
- 根DNS服务器:全世界400多个
- 顶级域DNS服务器:对于每个顶级域(com、net、cn)都有的服务器(TLD服务器)
- 权威DNS服务器:提供公共可访问主机的每个组织机构部署的服务器(如amazon.com下的)
- 本地DNS服务器:不属于DNS层次结构,通常由ISP部署,离用户最近。起着代理的作用, 将请求转发到DNS 服务器层次结构中。
两种查询方式
-
递归查询
服务器帮你问,问到了告诉你
-
迭代查询
服务器告诉你下一步找谁问,你自己去问
缓存
低层级的DNS服务器可以缓存高层级的内容,从而实现负载均衡。
DNS记录
- A记录:主机名到IP地址的映射
- AAAA记录:IPV6下的A记录
- CNAME别名记录:主机名和规范主机名的映射
- NS记录:域-域的权威DNS服务器主机名
- MX记录:邮件服务器的别名记录
消息
DNS只有查询和回答消息,并具有相同的格式。回答、授权、额外信息字段仅出现在应答报文中。
DNS攻击
- DDoS攻击
- 中间人共计
- DNS污染
P2P文件分发
两种文件分发方式
- C/S:服务器将文件分发给N个客户端,需要发送N份文件。分发时间随着N线性增长
- P2P:服务器至少发送1份文件。分发时间更少,因为其他节点也能上传。当对等点数量足够多的时,时间趋于(NF/Nu=F/u),与N无关(F:文件大小;N:下载数量;u:对等点上传速度)
BitTorrent(BT)
Alice加入时,向Tracker进行注册,Tracker随机发送一些Peer结点。Alice与它们进行连接,获取到块。Alice对它当前还没有的块发请求。
-
最稀罕优先策略
Alice优先请求那些整个网络中最稀罕的块
-
对换算法
当前能够以高速率供给数据的邻居具有高的优先权
Alice对于她的邻居持续地测量连接速率,确定以最高速率流入的4个邻居,然后将数据块发给这4个邻居。每过10秒,重新计算速率并可能修改这4个peer节点。
更重要的是,每过30秒,随机地选择一个另外的邻居并向它发送块(试探)。
P2P下的资源搜索
-
集中式索引
利用集中式索引服务器保存内容信息和处理查询
-
查询洪范
利用对等方的能力进行互相查询
-
DHT
KID:资源ID;NID:对等方结点ID。利用哈希,两者映射到相同范围内。
当对等方结点发生变化时,每个资源由DHT环上与其标识符值最接近的下一个结点提供服务
因为NID在环上的分布可能是稀疏的,故为了加速查找, 在DHT环上可以增加一些指针表
视频流和CDN
视频流压缩编码
- 空间冗余压缩
- 时间冗余压缩
- 经HTTP的动态适应性流(DASH):视频编码为不同比特率的几个不同的版本,客户端根据实际带宽情况请求合适质量的版本
内容分发网络CDN
在多个地理位置分散的节点中存储多个副本,使用户就近获取所需内容