应用层
应用层协议原理
应用层程序体系结构
客户机/服务器体系结构:Web、FTP、Telent、e-mail
P2P体系结构:电话、文件分发、PTV
发起通信的进程为客户机,会话开始时等待联系的进程为服务器
套接字
应用程序通过套接字收发报文,套接字是应用程序进程和传输层协议之间的接口
支持应用的传输层协议
应用 | 应用层协议 | 传输层协议 |
---|---|---|
邮件 | SMTP | TCP |
远程终端访问 | Telent | TCP |
Web | HTTP | TCP |
文件传输 | FTP | TCP |
流媒体 | HTTP、RTP | TCP或UDP |
因特网电话 | SIP、RTP | UDP |
目录服务 | DNS | UDP |
进程寻址
识别接受进程需要的信息
- 主机的名称或地址:ip地址
- 用来指定目的主机上接受进程的标识:端口号
HTTP
超文本传输协议
HTTP是无状态协议:不保存关于用户机的任何信息
报文结构
请求报文
响应报文
HTTP状态码
类别 | 原因短语 | |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
Cookie和Session的区别
Cookie和session都是用来跟踪浏览器用户身份的会话方式
Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;
Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。
Web缓存
Web缓存器也称代理服务器,有自己的磁盘存储空间,并在该存储空间中保存最近请求过的对象的拷贝
p70 2-11
优点
- 可以减少对客户机请求的相应时间
- 可以减少一个机构内部网与因特网接入链路上的通信量
条件GET方法
持久与非持久HTTP
- 持久HTTP:连接持续期间,C-S经由一个服务器套接字交换HTTP报文
- 非持久HTTP:对每一对请求/响应,都有一个新的TCP连接被创建,完成后即关闭
HTTP详见https://www.jianshu.com/p/a6d086a3997d
FTP
FTP使用两个并行的TCP连接来传输文件,一个是控制连接(21端口)一个是数据连接(20端口)
控制连接贯穿了整个用户会话期间,但是会话中的每一次文件传输都需要建立一个新的数据连接
FTP使用分离的控制连接,故FTP的控制信息是带外的
FTP命令与回答用ASCII格式在控制连接上传送
邮件传输协议
SMTP
p76 2-16
邮件服务器之间使用SMTP传送邮件
SMTP一般不用中间邮件服务器发送文件(两端直连)
邮件报文的主体部分职能用7位ASCII码表示,在传送邮件之前和之后需要编码和解码
与HTTP的区别
- 拉协议vs推协议
- SMTP要求7位ASCII码
- HTTP用带内控制,FTP用带外控制
DNS
DNS组成
- 分层的DNS服务器实现的分布式数据库
- 允许主机查询数据库的应用层协议
DNS服务器的层次结构
根DNS服务器->顶级域服务器(TLD)->权威DNS服务器->本地DNS服务器
p89 2-21
DNS缓存:当DNS服务器接收到一个DNS回答时会将其缓存
使用UDP协议的原因:
客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。虽然从理论上说,客户端也可以指定向DNS服务器查询的时候使用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包
资源记录
提供主机名到IP地址的映射
(Name,Value,Type,TTL)
TTL:记录的生存时间(资源应从缓存中删除的时间)
Type | Value |
---|---|
A | IP地址 |
NS | 权威DNS服务器的主机名 |
CNAME | 别名为Name的主机对应的规范主机名 |
MX | 别名为Name的邮件服务器的规范主机名 |
DNS报文
p91 2-23
P2P应用
C-S体系结构的缺点:分发时间由NF/u决定,随着对等方的数量N线性地增加