第二部分——应用层协议
网络应用程序的体系结构:
- 客户机/服务器体系(C/S):一般来说通过一对进程之间通信,发起通信的为客户机,等待通信的为服务器
- 对等体系:多用于构建流量密集型应用,因为其有高度分布和开放的性质,也因此,安全是其一个重要的问题
套接字(Socket):同一台主机应用程序与传输层之间的接口(应用层与传输层的接口,通过套接字可以控制应用层一侧的所有东西)
应用程序的服务要求:
- 可靠数据传输
- 吞吐量(对带宽敏感的应用)
- 实时性(对时延敏感的应用)
- 安全性
应用层协议:
HTTP:传输层使用TCP协议
无状态,本身不会保留用户状态,需要通过Cookie或者Session技术保留状态
持久连接(默认):可选非持久连接,但会多花费RTT(因为会多次建立TCP连接,增加握手次数)
使用WEB缓存:
优点:减少客户机的响应时间、减少主机通信量、减少带宽占用,降低费用、提高性能
FTP(文件传输协议):
两个TCP连接:
控制连接:使用主机的21端口,通过它传输用户标识、口令、改变远程目录的命令
数据连接:使用20端口,只用来传输文件,用完一次即断开,下次再连接
带外传输:因为控制命令是在另一个连接中传输的,不在本条连接内,所以称为带外传输
SMTP(简单邮件传输协议,注意,仅仅是传输,不包括查看邮件的功能):基于TCP协议
一般不使用中间邮件服务器发送邮件,也就是说邮件只有在发送方邮件服务器和接收方邮件服务器两种情况
以前的邮件只支持简单邮件,现在可以通过设置MIME类型支持多媒体文件
两个邮件访问协议
POP3:动作是下载邮件并且查看,此协议将会下载服务器上的邮件,下载时有下载并删除、下载并保留两种情况
IMAP:预览邮件头部信息,不下载全部,适用于现在的移动端,减少流量
DNS(域名系统):下层使用UDP,使用端口号53
DNS的作用:将域名,类似于baidu.com这样的字符串解析成对应的IP地址,进而可以访问到具体的服务器地址。
具体实现,需要DNS服务器中储存域名与IP地址的映射表(资源记录),有请求查询域名时通过映射表找到相应IP
DNS服务器的结构:
根DNS服务器:映射root后缀(每一个网址后默认都有.root,但是省略了)全球有13个根域名服务器,注意是13个服务器集群,而不是简简单单的13台服务器
顶级域名服务器(TLD):映射.com、.org、.cn等后缀
权威服务器:提供公有的DNS记录
此外还有本地DNS服务器,由ISP(互联网服务提供商)提供,用于接入DNS结构体系
DNS查询域名的方式:两种
迭代查询:
- 本地服务器先从后向前,取得要查询域名的第一部分后缀比如.root向根域名服务器查询,得到一个顶级域名服务器的IP
- 本地服务器用获取到的顶级域名服务器IP,找到顶级域名服务器,向其查找要查询域名的下一部分后缀,比如.com对应的IP,获取到权威域名服务器的IP
- 本地服务器用获取到的权威域名服务器的IP,找到权威域名服务器,向其查找要查询域名的下一部分后缀,比如.baidu 的IP,获取到baidu.com.root的真实IP,可以访问了
递归查询:
- 本地服务器向根域名服务器查询域名,根域名服务器不先应答本地服务器,而是通过要查询域名的第一部分后缀,比如.root 得到一个顶级域名服务器IP
- 根域名服务器用获取到的顶级域名服务器IP,找到顶级域名服务器,向其查找域名,比如 .com ,顶级域名服务器不先应答根域名,而是通过要查询域名的下一部分后缀,得到一个权威域名服务器的IP
- 顶级域名服务器用获取到的权威域名服务器的IP,找到权威域名服务器,向其查询域名 ,比如 .baidu ,权威域名服务器查到了对应的IP地址,返回IP
- 顶级域名服务器获得权威域名服务器的返回结果,这个时候,自己再向根域名服务器返回结果
- 根域名服务器获得顶级域名服务器的返回结果,这个时候,自己再向本地服务器返回结果,本地服务器得到真实IP,可以访问了。
过程很麻烦,真实情况中,各级域名服务器会缓存经常用到的各级DNS映射记录,并且设置存活时间(TTL),一般越高层次的域名服务器对应条目的存活时间越长,因为高层次的域名服务器相比低层次的更加不容易变动。
DNS资源记录(RR)
格式:Name Value Type TTL
Type种类:
- A:Name是主机名,Value是IP地址
- NS:Name是域名,Value是能找到域名的权威DNS服务器的主机名
- CName:Name是主机名的别名,Value是规范的主机名
- MX:Name是邮件服务器的别名,Value是对应邮件服务器的规范主机名
DNS报文:有查询应答报文两种,DNS报文结构相同, 有一位标识位标记是应答还是查询报文,在首部(共12字节)还有16个比特标识符用来特异标识一对查询/应答
P2P应用:客户端也可上传分享,减轻服务端压力
BitTorrent协议(一个P2P分享协议)
两个特殊策略:为了提高分享能力和光下载不上传问题
- 最稀罕优先:一个文件被分块,一般256KB一块,分享次数最少的块被有限分享
- 对换算法:给本机告诉提供数据的对等放优先分享
集中式相对于P2P应用的缺点:单点故障、通信容量低、远距离时延大