五、应用层
1.基本原理
1.体系结构
a.客户端服务器
服务器server:一直在线的主机,具有永久的IP地址,有可扩展的服务器池(多个服务器的连接扩展)
客户端client:与服务器通信,可以间歇性联网,可以有动态IP地址,客户端彼此不能直接通信
b.P2P对等体系结构
终端之间可以直接通信,IP可变,高度可扩展
c.Hybrid of client-server and P2P
文件传输是P2P的,文件检索实现CS(每个终端需要在中央服务器注册,一上线就注册,在中央服务器中检索)。
2.进程通信
进程process:主机里的程序
同一主机的两个进程是在IPC进行的
客户端进程:首次发起本次通信的进程
服务器进程:等待联系的进程
3.套接字socket
接收发送信息,可编程接口。
API:传输层使用什么协议,设定传输层参数(最大缓存,最大报文段长度)
4.进程寻址
接收报文要有标识(IP和端口号)。
5.应用层协议
应用层协议要定义报文(请求报文、响应报文)、报文的语法(定界,长度)、报文的语义(分段的含义)、规则(进程什么时间什么情况发送报文)
开放public-domain协议:可以操作(HTTP、SMTP)
专用proprietary协议
2.Web和HTTP
web页由基本的HTML文件(包含引用和被引用的对象)组成。每个对象可以通过URL寻址。
URL:
1.HTTP
web使用的应用层协议,使用CS模型。客户端:浏览器,可以显示请求和接收服务器发送的对象。服务器:发给客户端
传输层使用TCP连接,首先客户端发起连接,端口号为80,服务器端收到请求,报文交换,连接关闭。
请求报文:
响应报文:
用户服务器状态:cookies(用户存储的数据)
cookie4个组件:首部行(请求报文和响应报文)、cookie文件保存于用户主机上,用户浏览器管理、web站点的后端数据库
2.web缓存(代理服务器)
3.FTP
1.FTP
连接端口为21,客户端获取控制连接授权,客户端通过控制连接发送命令,浏览远程目录。当服务器接收到文件传输命令时,服务器打开一个TCP数据连接到客户端 ,传输一个文件后,服务器关闭连接。
FTP服务器是维护状态的(维护当前目录下较早的授权)
2.FTP命令和应答
1.命令
USER用户名
PASS密码
LIST返回当前文件下的列表
RETR当前文件夹检索
STOR远程主机当前目录下存放文件
2.返回码
331 Username OK, password required
125 数据连接打开,可以传送
425 无法打开文件
452 文件写入错误
4.Electronic Mail,SMTP, POP3, IMAP
1.Electronic Mail
三个组件:用户代理user agents(邮件阅读器)、邮件服务器(收件箱,发件箱,SMTP协议(邮件服务器之间))、SMTP协议
2.SMTP
直接传输,三个阶段(握手,传报文,关闭连接),命令(ASCII文本),响应(不同状态码),报文必须是7bitASCII码
端口号为25
3.报文格式
header:收件人、发件人、主题
body:消息
MIME:多媒体邮件扩展
报文首部声明MIME的类型
4.邮件访问协议Mail access protocols
POP:邮局协议,授权和下载邮件
IMAP:因特网邮件访问协议,可以操作存储在服务器上的报文
HTTP:雅虎
5.POP3
阶段:授权阶段(输入用户名密码)、事务处理阶段(列出消息号、通过号检索消息、删除、退出 )
采用下载并删除的模式,下载并保存的模式(更新后),不在通信过程中携带状态信息
6.IMAP
将报文和文件夹联系起来,保存到服务器上,允许用户对报文进行处理,保存一些状态(文件夹的名字、报文ID)
5.DNS域名系统
服务
主机名到IP地址的转换
主机别名aliasing
别名邮件服务器
负载分布load distribution:复制web服务器(一个规范名称的IP地址集合)
分布式具有层次的数据库
客户需要www.amazon.com的IP:
客户端查询根服务器找到DNS服务器
客户端查询DNS服务器获取所需服务器
客户端查询DNS服务器获取网站的IP地址
根名称服务器root name server
名称映射未知,联系授权名称服务
获取映射map
返回到本地名称服务器的映射
TLD和授权服务器
1.TLD
顶级域名服务器:负责 com, org, net, edu, etc和顶级国家域名uk, fr, ca, jp
2.授权DNS服务器
组织的DNS服务器,为组织的服务器(例如,Web和邮件)的IP映射提供授权主机名。
本地域名服务器
不属于严格的等级制度
每个ISP(住宅ISP、公司、大学)都有一个。也称为“默认名称服务器”
当主机进行DNS查询时,查询被发送到本地DNS服务器作为代理,将查询转发到层次结构中。
递归查询Recursive queries
递归查询:将名称解析的负担放在联系的名称服务器,代替下级DNS进行域名查询,若域名服务器不能直接回答,进行递归查询
迭代查询iterated:联系服务器回复与服务器名称联系