HTTP(TCP)
http是无状态协议,即服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。
http是面向连接的,分为非持续连接和持续连接,前者每一个对象的请求用一个单独的连接,后者所有对象的请求共用同一个连接。HTTP1.1版本后支持持续连接,默认连接方式也是持续连接。
对于持续连接,有一个可配置的超时间隔,若超过该时间未使用连接,则服务器关闭连接。
web缓存器:也称代理服务器,比如中国访问美国的站点网络时延可能较大,那么中国的ISP就可以设置一个代理服务器,减少网络时延。
条件get:用于避免代理服务器中的对象过期,代理服务器在缓存对象时同时缓存last-modified,当有客户再次请求该对象时,若时间与last-modified间隔超过了一个设定的值,代理服务器会发送带有if-modified-since: last-modified首部行的请求,若该对象未有更改,服务器返回代理服务器304 Not Modified。
内容分发网络(CDN):CDN公司在因特网上设置了许多地理上分散的缓存器,使得大量流量实现了本地化。
SMTP(TCP)
电子邮件系统组成部分:用户代理、邮件服务器、简单邮件传输协议(SMTP)。
每个用户代理对应一个邮件服务器,邮件服务器中有报文队列和若干个邮箱,邮件的发送从用户代理A到邮件服务器A的报文队列,到邮件服务器B的用户代理B的邮箱。
SMTP一般不使用中间服务器,哪怕邮件服务器A在中国,邮件服务器B在美国。如果邮件服务器B没有开机,那么邮件会保持在邮件服务器A中,并在以后再次尝试发送,通常间隔30分钟,如果几天后仍不成功,邮件服务器A会删除该报文,以电子邮件的方式通知用户代理A。
相比于HTTP是一个拉协议,SMTP是一个推协议。SMTP要求每个报文采用7比特ASCII码格式,如果某报文包含非7比特ASCII字符或二进制数据,则该报文必须按照7比特ASCII码进行编码,HTTP没有这种限制。HTTP把每个对象封装到自己的HTTP响应报文中,SMTP把所有报文对象放在一个报文之中。
不能够让用户代理A直接将邮件推到邮件服务器B,通过邮件服务器A中继,可以重复的尝试向不可达的邮件服务器B发送报文,直到邮件服务器B运行为止。
用户代理A到用户服务器A使用SMTP,用户服务器A到用户服务器B使用SMTP,但用户代理B从用户服务器B获取邮件无法使用SMTP,因为SMTP是推协议。目前有一些流行的邮件访问协议用来解决该问题,包括第三版的邮局协议(POP3)、因特网邮件访问协议(IMAP)、HTTP。
基于web的电子邮件:用户代理和邮件服务器之间使用HTTP,邮件服务器之间使用SMTP。
DNS(UDP)
域名系统(Domain Name System, DNS):①一个由分层的DNS服务器实现的分布式数据库;②一个使得主机能够查询分布式数据库的应用层协议。
DNS服务器通常是运行BIND软件的UNIX机器,DNS协议运行在UDP上,使用53端口。
DNS服务器除了进行主机名到IP的转换,还提供其他的服务:①主机别名;②邮件服务器别名;③负载分配。
DNS工作流程:主机上的某个应用程序调用DNS客户端,并指明需要被转换的主机名,DNS客户端接收到后,向网络中发送一个DNS查询报文,经过若干毫秒时延后,DNS客户端接收到DNS回答报文,并将映射结果传递到调用DNS客户端的应用程序。
DNS采用分布式层次数据库,没有一台DNS服务器拥有因特网上所有主机的映射,相反这些映射分布在所有DNS服务器上。DNS服务器类型有三种:根DNS服务器、顶级域(TLD)DNS服务器、权威DNS服务器。
假设一个DNS客户要决定 www.amazon.com 的IP地址,首先与根服务器之一联系,返回顶级域名com的TLD服务器的地址,于是该客户与这些TLD服务器之一联系,返回amazon.com权威服务器的地址,最后该客户与amazon.com权威服务器之一联系,返回 www.amazon.com 的IP地址。
每个ISP都有一个本地DNS服务器,当主机发出DNS请求时,该请求被发往本地DNS服务器,它起着代理的作用,并将该请求转发到DNS服务器层次结构中。本地DNS服务器除了转发,还可以用作DNS缓存。