概述
网络应用程序由成对的进程组成,进程通过一个成为套接字和软件接口向网络发送报文和从网络接收报文。
应用程序开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层端几乎没有控制器。应用程序开发者对于运输层的控制器仅限于——选择运输层协议;设定几个运输层参数
为表示接收进程,需要定义两种信息:主机的地址和目的主机接受进程标识符。在因特网中就是IP地址和端口号。
具有吞吐量要求的应用程序被成为带宽敏感的应用。多媒体引用大多是带宽敏感的。
TCP服务模型包括面向连接服务和可靠数据传输服务,此外还具有拥塞控制机制。
无论TCP还是UDP都没有提供任何加密机制,SSL是在应用层实现的对TCP的加强。
UDP协议不保证该报文将到达接收进程。不仅如此,到达接收进程的报文也可能是乱序到达的。
今天的因特网通常能为时间敏感应用提供满意的服务,但它不能提供任何定时或带宽保证。
Web和HTTP
一旦用户向它的套接字接口发送了一个请求报文,该保温就脱离了客户控制并进入TCP的控制。
HTTP默认使用TCP持续连接。
往返时间——RTT
HTTP请求报文的第一行叫做请求行,其后继的行叫做首部行。请求行由3个字段,:饭囊发字段,URL字段和HTTP版本字段。
响应报文由三个部分——初始状态和,首部行和实体体。
Web缓存器可以大大减少对客户请求的响应时间。还能大大减少一个机构接入链路到因特网的通信量。
文件传输协议:FTP
FTP使用两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。
FTP对会话中每一次文件传输都需要建立一个新的数据连接(即数据连接非连续)
FTP服务器必须在整个会话期间保留用户的状态。
因特网的电子邮件
每台邮件服务器上既运行SMTP的客户端也允许SMTP的服务端。
SMTP一般不适用中间邮件服务器来发送邮件,即使这两个邮件服务器相隔非常远。
SMTP发送邮件服务器(25),而SMTP使用的是持续连接。
当进行文件传送时,持续的HTTP和SMTP都是用持续连接
HTTP是一个拉协议,SMTP是一个推协议
每个首部都必须包括一个From首部行和一个To首部行
POP3按照三个阶段进行工作:特许,事务处理以及更新
使用POP3的用户代理通常被配置为下载并删除或下载被保留
IAMP服务器维护了IAMP绘画的用户状态信息。
IAMP的另一个重要特性是它允许用户代理获取保温租金的命令。
DNS:因特网的目录服务
DNS是一个由分层的DNS服务器实现的分布式数据库,一个使得主机能够查询分布式数据库的应用协议
DNS运行在UDP协议上,使用53号端口
应用程序可以调用DNS来获得主机别名对应的规范主机名以及主机的IP地址。
电子邮件可以调用DNS,对提供的邮件服务器别名进行解析,以获得该主机的规范主机名以及IP地址。
DNS使用分布式,分层架构,由三种类型的DNS服务器:根DNS服务器,顶级域DNS服务器和权威DNS服务器。
在因特网上具有公共可访问主机(如web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录
本地DNS服务器不属于三层架构,每一个ISP都有一台本地DNS服务器。
从理论上说,任何DNS查询既可以是迭代的也可以是递归的。
typeA-主机名-IP地址
NS-域-查询主机IP地址的权威DNS主机名
CNAME-别名-规范主机名
MX-邮件服务器别名-规范主机名
对DNS服务器别名查询,会返回带规范主机名的A型结果。如果不是权威DNS服务器,则包含一条NS记录,记录对应包含主机名的域,它还包括一套A记录,该记录记录了NS记录中Value字段的DNS服务器的IP地址
标识符会被复制到对查询的回答报文中,以便让客户用它来匹配发送的请求和接受到的回答。
问题区域包含了正在进行的查询信息,包括名字字段,类型字段。
UDP和TCP编程
在UDP上,发送进程要为分组附上目的主机的IP地址和目的地套接字的端口号组成的。将源地址附在分组上不是UDP应用程序所谓,而是底层操作系统自动完成的。
TCP中,欢迎套接字是要与服务器通信的所有客户的起始接触点,每个新生产的服务器测的连接套架子则是随后域每个客户通信而生成的套接字。