- 应用层的具体内容就是规定应用进程在通信时所遵循的协议
- 应用层的许多协议都是基于客户服务器方式,客户是服务请求方,服务器是服务提供方
应用进程通信的方式:
1、客户/服务器(C/S, Client/Server)方式
应用层的许多协议是基于C/S方式,例如,在移动互联网环境下,每个应用APP都是一个客户端
C/S方式可以是面向连接的,也可以是无连接的
客户进程的特点:
主动
向远地服务器发起通信服务器进程的特点:
必须始终处于运行状态才有可能提供服务
被动等待
并接受来自多个客户的通信请求2、浏览器/服务器(B/S,Browser/Server) 方式
B/S方式可以看做C/S方式的特例,即客户软件改为浏览器了
B/S方式采取浏览器请求、服务器响应
的工作模式
在B/S方式下,用户界面完全通过Web浏览器实现
,一部分事务逻辑在前端实现,但主要的事务逻辑在服务器端实现
数据库服务器承担数据处理逻辑
,其任务是接受Web服务器对数据库服务器提出的数据操作请求,然后由数据库服务器进行数据处理并把处理结果返回给web服务器Web服务器承担业务处理逻辑和页面存储管理
,接受客户浏览器的任务请求,执行相应的事务处理3、对等(P2P,Peer to Peer)方式
对等方式是指两个进程在通信时并不区分服务的请求方和服务的提供方
音频/视频应用推动了P2P对等通信方式的发展
音频/视频流量已占主要比例
P2P方式从本质上看仍然是使用了C/S方式,但强调的是通信过程中的对等,这时每一个P2P进程既是客户同时也是服务器
DNS:是互联网重要的基础设施之一,向所有需要域名解析的应用提供服务,主要负责将可读性好的域名映射成IP地址
任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名
域还可以划分为子域,还能继续划分,就形成了顶级域,二级域,三级域等等
每一个域名都是由标号序列组成,各标号之间用点“.”隔开
域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写字母,标号中除连字符(“-”)外不能使用其他标点符号。完整域名总共不超过255个字符。
级别最低的域名卸载最左边
每一级域名由其上一级的域名管理机构管理,顶级域名由ICANN进行管理
顶级域名TLD(Top Level Domain):
1、国家顶级域名nTLD
2、通用顶级域名gTLD
3、基础顶级域名,只有一个,即arpa,用于反向域名解析,又称为反向域名
实现域名系统是使用分布在各地的域名服务器
因特网上的DNS域名服务器是按照层次安排的
1、根域名服务器:最高层次的最重要的域名服务器。
所有的根域名服务器都知道所有顶级域名服务器的域名和IP地址。
因特网上共有13个不同IP地址的根域名服务器,a~m,域名分别是a.rootserver.net,…,m.rootserver.net
并不是13个机器,而是13套装置
大多情况下,根域名服务器并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询
2、顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。收到DNS查询请求时,就给出相应的回答,可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址
3、权限域名服务器:负责一个区的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发送查询请求的DNS客户,下一步应当找哪一个权限域名服务器。
4、本地域名服务器:当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。每个因特网服务器提供者ISP,或一个大学,甚至一个系,都可以拥有一个本地域名服务器,有时也称为默认域名服务器。
为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其他的是辅助域名服务器。
当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断
主域名服务器定期把数据复制到辅助域名服务器中,更改数据只发生在主域名服务器。
1、主机向本地域名服务器的查询一般都是采用递归查询。
即本地域名服务器不知道被查询域名的IP时,本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让主机自己进行进一步查询。
递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
2、本地域名服务器向根域名服务器的查询通常是采用迭代查询。即当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应该向哪个域名服务器进行查询。然后本地域名服务器进行后续的查询。
下面的摘自https://www.cloudflare.com/zh-cn/learning/dns/dns-records/
A 记录 - 保存域的 IP 地址的记录。
AAAA 记录 - 包含域的 IPv6 地址的记录(与 A 记录相反,A 记录列出的是 IPv4 地址)。
CNAME 记录 - 将一个域或子域转发到另一个域,不提供 IP 地址。
MX 记录 - 将邮件定向到电子邮件服务器。
TXT 记录 - 可让管理员在记录中存储文本注释。这些记录通常用于电子邮件安全。
NS 记录 - 存储 DNS 条目的名称服务器。
SOA 记录 - 存储域的管理信息。
SRV 记录 - 指定用于特定服务的端口。
PTR 记录 - 在反向查询中提供域名。
分为三部分:基础结构(报文首部)、问题、资源记录(RR, Resource Record)
报文类型分为查询请求(query)和查询响应(reply)
两类,请求和响应的报文结构基本相同
事务ID:DNS报文的ID标识。对于请求报文和其对应的响应报文,该字段的值是相同的。通过它可以区分 DNS 应答报文是对哪个请求进行响应的
标志:DNS报文中的标志字段
QR(Query/Response):查询请求/响应的标志信息。查询请求时值为0;响应时值为1
Opcode:操作码。其中,0表示标准查询;1表示反向查询;2表示服务器状态请求
AA(Authoritative):授权应答,该字段在响应报文中有效。值为1时表示名称服务器是权威服务器;值为0时表示不是权威服务器
TC(Truncated):表示是否被截断。值为1时,表示响应已超过512字节并已被截断,只返回前512个字节
RD(Recursion Desired):期望递归。该字段能在一个查询中设置,并在响应中返回。该标志告诉域名服务器必须处理这个查询,这种方式被称为一个递归查询。如果该位为0,且被请求的域名服务器没有一个授权回答,它将返回一个能解答该查询的其他域名服务器列表。这种方式被称为迭代查询
RA(Recursion Available):可用递归。该字段只出现在响应报文
中。当值为1时,表示服务器支持递归查询
Z:保留字段,在所有的请求和响应报文中,它的值必须为0
Rcode(Reply code):返回码字段,表示响应的差错状态。常用Rcode有
问题计数:DNS查询请求的数目
回答资源记录数:DNS响应的数目
权威资源记录数:权威资源记录的数目
附加资源记录数:额外的记录数目(权威名字服务器对应IP地址的数目)
用来显示DNS查询请求的问题,通常只有一个问题
包含正在进行的查询信息,包含查询名(被查询主机名字)、查询类型、查询类
资源记录部分是DNS报文格式的最后3个字段,只有在DNS响应报文中
才出现,包括回答问题区域字段、权威名字服务器区域字段、附加信息区域字段
。这3个字段都采用资源记录
的格式
万维网使用统一资源定位符URL来标志万维网上的各种文档,并使每一个文档在整个原认为的范围内都具有唯一的标识符URL。
用超文本传送协议HTTP来实现万维网上的各种链接
HTTP是一个应用层协议,使用TCP连接进行可靠的传送
使用超文本标记语言HTML使得万维网页面的设计者可以很方便地用链接从本页面的某处链接到因特网上任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来
格式:
<协议>://<主机>:<端口>/<路径>
是面向事务的应用层协议,是万维网上能够可靠地交换文件的重要基础
是无状态的
本身是无连接的
开始行、首部行和实体主体
在请求报文中,开始行就是请求行
HTTP无状态协议,服务器用cookies保持用户状态
HTTP在响应的首部行里使用一个关键字头set-cookie:选择的cookie号具有唯一性
后继的HTTP请求中使用服务器响应分配的cookie:
Cookie文件保存在用户的主机中,内容是服务器返回的一些附加信息,由用户主机中的浏览器管理
Web服务器建立后端数据库,记录用户信息,cookie作为关键字
Cookies一般包含5个字段
怎样将内容(如从百万的视频中选定的内容)分发给同时发起访问的数百万用户?
单个、大型的“服务器”?
- 单点故障
- 网络拥塞
- 远程用户的长路径
内容分发网络CDN
Content Delivery Network,or Content Distribution Network
主要优点
- 降低响应时延,避免网络拥塞
- 避免原始服务器过载及防止DDoS攻击
- 分布式架构,具有良好的可扩展性
- 对用户透明,无需用户感知
CDN服务器布局
——在多个地理分布的位置存储/服务 多个视频拷贝
CDN缓存位置和内容——在CDN节点上存储内容拷贝
订阅者(subscriber)请求内容,服务提供者返回清单CDN
- 通过清单,客户端以可支持的最高速率检索到内容
- 如果网络路径拥塞,可能会选择不同的拷贝或网络速率
CDN可以扩展Web 服务器的客户端,这些客户端从就近的CDN结点(或缓存)处得到内容