应用层协议原理
- 套接字(socket)是同一台主机内应用层与运输层的接口
因特网提供的运输服务
1. TCP服务
- 面向连接的服务: 在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息(握手).
- 可靠的数据传输服务: 通信进程能够依靠TCP无差错地,按适当顺序交付所有发送的数据.
- TCP有拥堵控制机制
2.UDP服务
UDP是一种不提供不必要服务的轻量级运输协议
- UDP是无连接的,两个进程通讯前没有握手
- UDP协议提供一种不可靠数据传输服务
- 报文可能是乱序到达的
- UDP没有拥堵控制机制
应用层协议
应用层协议(application-layer protocol)定义了运行在不同端系统上的应用程序如何相互传递报文.应用层协议定义了:
- 交换的报文类型, 如请求报文,响应报文
- 各种报文类型的语法
- 字段的语义
- 确定一个进程何时以及如何发送报文
Web和HTTP
HTTP
Web的应用层协议是超文本传输协议(HyperText Transfer Protocol, HTTP)
HTTP使用TCP协议作为它的支撑运输协议. HTTP客户首先发起一个与服务器的TCP连接.一旦建立连接,该浏览器和服务器就可以通过套接字接口访问TCP.
HTTP是一个无状态协议(stateless protocol),即HTTP服务器并不保存关客户的任何信息。HTTP默认采用带流水线的持续连接
非持续连接和持续连接
- 非持续连接(no-persistent connection)每个请求/响应对是经过单独的TCP连接发送
- 持续连接(persistent connection)所有请求/响应对是经过相同的TCP连接发送
TCP三次握手
- 客户向服务器发送一个小TCP报文段
- 服务器用一个小TCP报文段做出确认和响应
- 客户向服务器返回确认
非持续连接的缺点
- 必须为每个请求建立和维护一个全新的连接
- 每个对象经受两倍RTT(Round-Trip Time, 往返时间)
HTTP报文
HTTP请求报文
GET /somdir/page.html HTTP/1.1 //请求行
Host: www.xxx.xxx //主机
Connection: close //服务器发送请求对象后关闭
User-agent: Mozilla/5.0 //用户代理,浏览器类型
Accept-langue: fr //内容协商首部
- 方法字段:GET POST HEAD PUT DELETE
HTTP响应报文
用户与服务器的交互: cookie
cookie组成部分:
- 在HTTP响应报文中的一个cookie首部行
- 在HTTP请求报文中的一个cookie首部行
- 在用户端系统中保留一个由用户浏览器管理cookie文件
- 位于Web站点的一个后端数据库
Web缓存
Web缓存(Web cache)也叫代理服务器(proxy server)
过程
- 浏览器和代理服务器建立TCP连接,并将HTTP请求发送到代理服务器
- 代理服务器见检查本地已存储对象复本。如果存储对象在其中,代理服务器向浏览器发送HTTP响应报文返回该对象
- 如果代理服务器中没有该请求对象,代理服务器和源服务器建立TCP连接,然后代理服务器向源服务器发送一个目标对象的HTTP请求。源服务器接到请求后,将请求对象通过HTTP响应发送给代理服务器
- 代理服务器收到请求的对象时,在本地建立该对象的副本,然后通HTTP响应将对象发送给浏览器。
WEB缓存的作用
- Web缓存可以减少客户请求的响应时间
- 减少一个机构的接入链路到因特网的通信量
- 可以 减少整个WEB网络的流量,提高所有应用程序性能
条件GET
虽然WEB缓存可以调高用户体验,但是WEB缓存中的对象副本可能不是最新的。HTTP提供条件GET机制(conditional GET)机制让WEB缓存来验证对象是不是最新的。
过程:
- 代理服务器代表浏览器向服务器发送请求报文
- WEB服务器向代理服务器发送响应对象。代理服务器将响应对象发送给浏览器,并存储响应对象和最后修改时间(Last-Modified)。
- 一段时间后,当浏览器再次通过代理服务器请求相同的对象时。代理服务器通过触发条件GET请求验证缓存是否是最新的。设置If-Modified-Since首部字段为缓存的最后修改时间(Last-Modified)
- 如果缓存是最新的,WEB服务器发送一个状态为403的响应报文(Not Modified)代表缓存是最新的。
FTP
HTTP和FTP对比
- HTTP和FTP都运行在TCP之上
- HTTP发送和响应使用同一个TCP连接;FTP使用两个并行的TCP连接:控制连接(control connection)(port 21)和数据连接(data connection)(port 20)。
- FTP维护用户状态;HTTP是无状态的
电子邮件
电子邮件系统主要组成部分:
- 用户代理(user agent)
- 邮件服务器(mail server)
- 简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)
SMTP(默认端口25)
SMTP与HTTP
- HTTP主要是一个拉协议(pull protocol) ,TCP连接是由想接收文件的机器发起; SMTP基本上是一个推协议(push protocol), TCP连接由要发送文件的机器发起
- SMTP要求每个报文用7比特ASCII码格式
- HTTP把对象封装到响应报文中; SMTP所有对象都在报文中
邮件报文格式
From: xxx@xxx.xx
To: xxx@xxx.xxx
Subject: subject
content
邮件访问协议
- 第三版的邮局协议(Post Office Protocol-Version 3, POP3)
- 因特网邮件访问协议(Internet Mail Access Protocol, IMAP)
- HTTP
DNS因特网目录服务
DNS提供的服务
- 一个分层的DNS服务器实现的分布式数据库
- 一个使得主机能够查询分布式数据库的应用层协议
其他服务:
- 主机别名(host aliasing). 一个拥有复杂主机名(主机规范名)的主机可以拥有一个或者多个主机别名。应用程序可以调用DNS来获取主机别名对应的规范主机名(canonical hostname)以及主机的IP地址
- 邮件服务别名(mail server aliasing) 电子邮件应用程序可以调用DNS来获取主机别名对应的规范主机名以及主机的IP地址
- 负载分配(load distribution)
DNS协议运行在UDP上,使用端口号53
DNS工作机理概述
- 应用程序调用DNS客户端,并指明需要被转换的主机别名
- 用户主机上的DNS接收到后,向网络中发送一个DNS查询报文
- 用户主机上的DNS接收到一个提供多需要映射的DNS查询报文
- 映射结果传递到调用DNS的应用程序
3类DNS服务器:
- 根DNS服务器: 根名字服务器提供TLD服务器的IP地址
- 顶级域(Top-Level Domain, TLD) (DNS)服务器:顶级域域名服务器负责顶级域名如com,org,net等的解析。TLD服务器提供了权威DNS服务器的IP地址
- 权威DNS服务器:
本地DNS服务器: 当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,将该请求转发到DNS服务器层次结构中
DNS缓存
DNS利用DNS缓存来减小延迟性能和减少互联网中DNS消息数量。
DNS记录和报文
资源记录
DNS服务器和DNS分布式数据库的存储了资源记录(Resource Record, RR)
一个资源记录是一个包含以下内容的四元组
资源记录: (Name, Value, Type, TTL)
TTL是记录的生存时间,它决定资源记录从缓存中删除的时间
Name和Value的值依赖于Type
- Type=A:Name是主机名, Value是该主机名对应的IP地址
- Type=NS,: Name是个域(如 baidu.com), Value是个知道如何获取该域中主机IP地址的权威DNS服务器的主机名
- Type=CNAME,:Value是别名为Name的主机对应的规范主机名
- Type=MX:Value是别名为Name的邮件服务器的规范主机名
如果一个DNS服务器是某个主机名的权威DNS服务器,那么该DNS服务器就包含一条用于该主机名的A记录(即使不是该主机名的权威DNS服务器也可能包含一条A记录的缓存)
如果一个DNS服务器不是某个主机名的权威DNS服务器,那么该DNS服务器中就包含一条NS记录,还包含一条A记录,记录了该NS记录中Value字段DNS服务器的IP地址