应用层
客户/服务器方式C/S
- 客户和服务器是指通信中所涉及的两个应用进程。
- 客户/服务器方式所描述的是进程之间服务和被服务的关系。
- 客户是服务请求方,服务器是服务提供方
- 服务器总是处于运行状态,并等待客户的服务请求,服务端具有固定端口号,如HTTP服务器的默认端口号为80,运行服务器的主机也具有固定的IP地址。
- C/S方式是英特网上传统的,同时也是最成熟的,例如万维网www、电子邮件、文件传输FTP等
- 基于C/S方式的应用服务通常是服务集中型的,即应用服务集中在网络中比客户计算机少得多的服务器计算机上。
对等方式P2P
- 在P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各端系统中的应用进程是对等的,被称为对等方,对等方相互之间直接通信每个对等方既是服务的请求者,又是服务的提供者。
- 目前在英特网上流行的P2P应用主要包括P2P文件共享、即时通讯、P2P流媒体、分布式存储等。
- 基于P2P的应用是服务分散型的,因为服务不集中在少数几个服务器计算机中,而是分散在大量对等计算机中,这些计算机并不为服务提供商所有,而是为个人控制的桌面计算机和笔记本电脑。
动态主机配置协议DHCP
- DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。
- DHCP前身是BOOTP,在Linux的网卡配置中也能看到显示的是BOOTP,DHCP引进一个bootp没有的概念:租约。bootp分配的地址是永久的,而dhcp分配的地址是可以有期限的。
- DHCP分为两个部分:一个是服务器端,另一个是客户端。
DHCP作用
- DHCP可以自动分配IP、子网掩码、网关、DNS。
- DHCP客户端使用的端口68,服务端使用端口67,使用的UDP应用层的协议。
- DHCP一般不为服务器分配IP,因为他们要使用固定IP,所以DHCP一般只为办公环境的主机分配IP。
- DHCP服务器和客户端需要在一个局域网内,在为客户端分配IP的时候需要进行多次广播。但DHCP也可以为其他网段内主机分配IP,只要连接两个网段中间的路由器能转发DHCP配置请求即可,但这要求路由器配置中继功能。
DHCP服务器IP分配三种方式
-
自动分配(Automatic Allocation)(MAC地址与IP绑定)
自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。
-
动态分配(Dynamic Allocation)常用方式
动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用。
-
手动分配
手动分配是由DHCP服务器管理员专门为客户端指定IP地址。
区别
- 自动分配和手动分配都是分配静态ip
- 自动分配需要在配置文件中配置IP与MAC对应关系,在在静态表中,获取IP必须通过DHCP服务器
- 手动分配需要人工操作,不需要通过DHCP服务器
- 动态分配有时效性
DHCP协议中的报文
- DHCP DISCOVER : 客户端开始DHCP过程发送的包,是DHCP协议的开始
- DHCP OFFER : 服务器接收到DHCP DISCOVER之后做出的响应,它包括了给予客户端的IP(yiaddr)、客户端的MAC地址、租约过期时间、服务器的识别符以及其他信息
- DHCP REQUEST : 客户端对于服务器发出的DHCP OFFER所做出的响应。在续约租期的时候同样会使用。
- DHCP ACK : 服务器在接收到客户端发来的DHCP REQUEST之后发出的成功确认的报文。在建立连接的时候,客户端在接收到这个报文之后才会确认分配给它的IP和其他信息可以被允许使用。
- DHCP NAK : DHCP ACK的相反的报文,表示服务器拒绝了客户端的请求。
- DHCP RELEASE : 一般出现在客户端关机、下线等状况。这个报文将会使DHCP服务器释放发出此报文的客户端的IP地址
- DHCP INFORM : 客户端发出的向服务器请求一些信息的报文
- DHCP DECLINE : 当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。
DHCP工作流程
- 第一步:搜索阶段
当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。(DHCP DISCOVER) - 第二步:提供阶段
在网络中接收到DHCP discover发现信息的DHCP服务器就会做出响应,它从尚未分配的IP地址池中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含分配的IP地址和其他设置的DHCP offer提供信息。因为此时客户端还没有IP,所以返回信息也是以广播的方式返回的。(DHCP OFFER) - 第三步:选择阶段
DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。(DHCP REQUEST) - 第四步:确认阶段
当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,确认租约,并指定租约时长。告诉DHCP客户端可以使用它提供的IP地址。(DHCP ACK)
以后DHCP客户端每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。
如果此IP地址已无法再分配给原来的DHCP客户机使用时,则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
DHCP服务器要跨网段提供服务,中继代理
不愿为每个网段设置DHCP服务器,这时DHCP服务器要跨网段提供服务,一样是四步请求,只不过是每一步中间都多了一个路由器和DHCP服务器之间的单播通信。
- 客户端广播方式发送报文,搜索DHCP服务器。所有机器包括路由器都收到报文,路由器配置了中继,知道搜索消息后单播给DHCP服务器;
- DHCP服务器单播返回信息给路由器,路由器再广播给客户端;
- 客户端选择DHCP服务器提供的IP,并广播信息告诉它我选好了,路由器单播给DHCP服务器;
- DHCP服务器收到信息将确认信息单播给路由器,路由器单播给客户端。
域名系统DNS
DNS(Domain Name System)是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于 TCP/IP 网络。
DNS作用
通常我们有两种方式识别主机:通过主机名或者 ** IP 地址**。人们喜欢便于记忆的主机名表示,而路由器则喜欢定长的、有着层次结构的 IP 地址。为了满足这些不同的偏好,我们就需要一种能够进行主机名到IP 地址转换的目录服务,域名系统作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
因此,即使不使用域名也可以通过IP地址来寻址目的主机,但域名与IP地址相比,便于人们记忆。因此对于大多数网络应用,我们一般使用域名来访问目的主机,而不是直接使用IP地址来访问。
简单来说,当我们在浏览器地址栏中输入某个Web服务器的域名时。
-
用户主机首先用户主机会首先在自己的DNS高速缓存中查找该域名所应的IP地址。
-
如果没有找到,则会向网络中的某台DNS服务器查询,DNS服务器中有域名和IP地映射关系的数据库。当DNS服务器收到DNS查询报文后,在其数据库中查询,之后将查询结果发送给用户主机。
-
现在,用户主机中的浏览器可以通过Web服务器的IP地址对其进行访问了。
域名的层级关系
层级关系特点
-
因特网采用层次树状结构的域名结构
-
域名的结构由若干个分量组成,各分量之间用“点” 隔开,分别代表不同级别的域名。
- 每一级的域名都由英文字母和数字组成,不超过63个字符,不区分大小写。
- 级别最低的域名写在最左边,而级别最高的顶级域名写在最右边。
- 完整的域名不超过255个字符。
-
域名系统既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。
-
各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由因特网名称与数字地址分配机构ICANN进行管理。
上图展示了 DNS 服务器的部分层次结构,从上到下依次为根域名服务器、顶级域名服务器和权威域名服务器。域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。显然不能将所有信息都储存在一台域名服务器中。DNS使用分布在各地的域名服务器来实现域名到IP地址的转换。
域名服务器可以划分为以下四种不同的类型
-
**根域名服务器 **
根域名服务器是最高层次的域名服务器。每个根域名服务器都知道所有的顶级域名服务器的域名及其IP地址。因特网上共有13个不同IP地址的根域名服务器。当本地域名服务器向根域名服务器发出查询请求时,路由器就把查询请求报文转发到离这个DNS客户最近的一个根域名服务器。这就加快了DNS的查询过程,同时也更合理地利用了因特网的资源。
-
顶级域名服务器
这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时就给出相应的回答(可能是最后的结果,也可能是下一级权限域名服务器的IP地址)。
-
权限域名服务器
这些域名服务器负责管理某个区的域名。每一个主机的域名都必须在某个权限域名服务器处注册登记。因此权限域名服务器知道其管辖的域名与IP地址的映射关系。另外,权限域名服务器还知道其下级域名服务器的地址。
-
本地域名服务器
本地域名服务器不属于上述的域名服务器的等级结构。当一个主机发出DNS请求报文时,这个报文就首先被送往该主机的本地域名服务器。本地域名服务器起着代理的作用,会将该报文转发到上述的域名服务器的等级结构中。本地域名服务器离用户较近,一般不超过几个路由器的距离,也有可能就在同一个局域网中。本地域名服务器的IP地址需要直接配置在需要域名解析的主机中。
DNS域名解析过程
域名解析包含两种查询方式,分别是递归查询和迭代查询。
递归查询
如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户端的身份,向其他根域名服务器继续发出查询请求报文,即替主机继续查询,而不是让主机自己进行下一步查询。
假设图中的主机 (IP地址为m.xyz.com) 想知道域名y.abc.com的IP地址。
- 主机首先向其本地域名服务器进行递归查询。
- 本地域名服务器收到递归查询的委托后,也采用递归查询的方式向某个根域名服务器查询。
- 根域名服务器收到递归查询的委托后,也采用递归查询的方式向某个顶级域名服务器查询。
- 顶级域名服务器收到递归查询的委托后,也采用递归查询的方式向某个权限域名服务器查询。
当查询到域名对应的IP地址后,查询结果会在之前受委托的各域名服务器之间传递,最终传回给用户主机。
迭代查询
当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP 地址,要么告诉本地服务器下一步应该找哪个域名服务器进行查询,然后让本地服务器进行后续的查询。
- 主机首先向其本地域名服务器进行递归查询。
- 本地域名服务器采用迭代查询,它先向某个根域名服务器查询。
- 根域名服务器告诉本地域名服务器,下一次应查询的顶级域名服务器的IP地址。
- 本地域名服务器向顶级域名服务器进行迭代查询。
- 顶级域名服务器告诉本地域名服务器,下一次应查询的权限域名服务器的IP地址。
- 本地域名服务器向权限域名服务器进行迭代查询。
- 权限域名服务器告诉本地域名服务器所查询的域名的IP地址。
- 本地域名服务器最后把查询的结果告诉主机。
由于递归查询对于被查询的域名服务器负担太大,通常采用以下模式:从请求主机到本地域名服务器的查询是递归查询,而其余的查询是迭代查询。
文件传输协议FTP
FTP为File Transfer Protocol的缩写,即文件传输协议,是TCP/IP 协议族中的协议之一。FTP是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议。RFC 959定义了FTP协议规范。
同大多数Internet服务一样,FTP也是一个客户/服务器系统(C/S系统) 。用户通过一个客户端程序连接至在远程计算机上运行的服务器程序。依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。用户要连上FTP 服务器,就要用到 FTP 的客户端软件,通常Windows系统自带 “ftp”命令,这是一个命令行的FTP客户端程序,另外常用的FTP客户端程序还有FileZilla、 CuteFTP。
FTP最大的一个优点就是部署、使用起来非常简单。只要两个设备部署了FTP客户程序和FTP服务程序,知道用户名和密码,就能够实现文件的轻松互传。甚至一些匿名FTP服务器,就算没有用户名和密码也能够访问。如一些软件分发、资料分享,就可能使用到匿名FTP服务器。
FTP文件传输过程
与常见的应用层协议http只需要一个TCP连接不同,FTP需要两个TCP连接来完成文件的传输。其中一个称为控制连接,一个称为数据连接。
FTP使用20和21这两个端口,其中20用于数据连接(传递数据) ,21用于控制连接(传递控制信息) 。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
用户通过客户端程序(ftp命令行或FileZilla)与ftp服务器进行交互。用户的输入逻辑会被用户协议解释器解析,转换成FTP命令,通过控制连接(一个tcp连接,port口为21) 给到服务器协议解释器,服务器协议解释器会回应一个FTP应答。并且根据传输过来的FTP命令类型,服务器协议解释器可能需要去启动服务器数据传输功能,其过程包括服务器主动发起建立一个tcp连接(用port口20) ,通过该连接服务端和客户端就可以进行数据传输了。在数据传输完成后,服务端会将该数据连接关闭掉,直到下一次需要文件传输时才又开启。
数据连接是随时开、随时关。 而控制连接在被创建后,其会一直保持下去,随时等待用户命名的输入,直到主动断开。
FTP主动模式
客户端通过PORT
命令将客户端监听的端口号传递给服务端,服务端通过固定的20
端口主动去和客户端监听的端口进行TCP连接,此连接就是数据连接。可以看到如果客户端的防火墙阻止了服务器的主动连接请求,那么数据连接就会失败。所以主动模式有一定缺陷。
FTP被动模式
为了解决主动模式所面临的问题,FTP协议也支持被动模式。被动模式的示意图如下图所示:控制连接和数据连接都由客户端主动发起,而且服务端数据连接端口不在是固定端口20,而是被分配了一个临时端口。因为两次连接都是客户端主动发起,所以就不会有防火墙的问题。
万维网WEB和超文本传输协议HTTP
web(万维网) :Web是一个引起公众注意的因特网应用,它极大地改变了人们与工作环境内外交流的方式。它将因特网从只是很多数据网之一的地位提升为仅有的一个数据网。web的最具有吸引力的地方就是按需操作:当用户需要时,就能得到想要的操作。
http:Web的应用层协议是超文本传输协议(即http,它是web的核心)。HTTP由两个程序实现:一个客户程序和一个服务器程序。客户程序和服务器程序运行在不同的端系统中,通过交换HTTP报文进行会话。
一些WEB术语
- Web页面(Web page)(也叫文档)是由对象组成的。一个对象(object)只是一个文件,诸如一个HTML文件、一个JPEG图形、一个Java小程序或一个视频片段这样的文件且它们可通过一个URL地址寻址。
- URL地址:统一资源定位符 (URL)也被称为网页地址,是因特网上标准的资源的地址 。每个 URL地址由两部分组成:存放对象的服务器主机名和对象的路径名。例如,URL地址 http://www. someSchool. edu/someDepartment/picture,gif,其中的www. someSchool. edu就是主机名,/someDepartment/ picture. gif 就是路径名。
- web浏览器和web服务器:因为Web浏览器实现了HTTP的客户端,所以在Web环境中我们经常交替使用“浏览器”和“客户”这两个术语。Web服务器实现了HTTP 的服务器端,它用于存储Web对象,每个对象由URL寻址。
http和https:
HTTP使用TCP作为它的支撑运输协议(而不是在UDP上运行)。 HTTP客户首先发起一个与服务器的TCP连接。一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问 TCP。
客户向它的套接字接口发送HTTP请求报文,并从它的套接字接口接收HTTP响应报文;接口接收 HTTP请求报文和向它的套接字接口发送 HTTP响应报文。一旦客户向它的套接字接口发送了一个请求报文,该报文就脱离了客户控制并进入TCP的控制,体现出分层体系。这里我们看到了分层体系结构最大的优点,即 HTTP协议不用担心数据丢失,也不关注TCP从网络的数据丢失和乱序故障中恢复的细节。那是TCP以及协议栈较低层协议的工作。
http是一个无状态协议:因为HTTP服务器并不保存关于客户的任何信息。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。假如某个特定的客户在短短的几秒内两次请求同一个对象,服务器并不会因为刚刚为该客户提供了该对象就不再做出反应,而是重新发送该对象,就像服务器已经完全忘记不久之前所做过的事一样。
cookie和session:为了解决http的无状态。
cookie:
cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端会把Cookie保存起来。
当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
session:
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了。每个用户访问服务器都会建立一个session并自动分配一个SessionId,用于标识用户的唯一身份。
https:HTTPS是基于HTTP+SSL/TSL来实现的
HTTP 主要有这些不足:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
HTTPS是基于HTTP+SSL/TSL来实现的,发送的数据需要加密,接收到的数据需要解密,比HTTP安全,但是传输效率比HTTP低。
通常,HTTP 直接和 TCP 通信。当使用 SSL 时,则演变成先和 SSL 通信,再由 SSL 和 TCP 通信了。
持续连接和非持续连接:
当客户-服务器的交互是经TCP进行的,应用程序的研制者就需要做一个重要决定,即每个请求/响应对是经一个单独的TCP连接发送,还是所有的请求及其响应经相同的TCP连接发送呢?采用前一种方法,该应用程序被称为使用非持续连接,采用后一种方法,该应用程序被称为使用持续连接。
非持续连接有一些缺点:
第一,必须为每一个请求的对象建立和维护一个全新的连接。
第二,每一个对象经受两倍RTT的交付时延.即一个RTT用于创建 TCP,另一个RTT用于请求和接收一个对象。
http报文格式
http请求报文
HTTP请求报文的第一行叫作请求行,其后继的行叫作首部行。
请求行有3个字段:方法字段、URL字段和HTTP 版本字段。
首部行:
- 首部行Host: www. someschool.edu指明了对象所在的主机。
- Connection: close首部行,该浏览器告诉服务器不要麻烦地使用持续连接,它要求服务器在发送完被请求的对象后就关闭这条连接。
- User-agent:首部行用来指明用户代理, 即向服务器发送请求的浏览器的类型。这里浏览器类型是 Mozilla/5.0,即 Firefox浏览器。
- Accept-language:首部行表示用户想得到该对象的法语版本(如果服务器中有这样的对象的话);否则,服务器应当发送它的默认版本。Accept-language:首部行仅是HTTP中可用的众多内容协商首部之一。
http响应报文
它有三个部分:一个初始状态行,6个首部行,然后是实体。
状态行: 状态行有3个字段:协议版本字段、状态码和相应状态信息。在这个例子中,状态行指示服务器正在使用HTTP/1.1,并且一切正常(即服务器已经找到并正在发送所请求的对象)。
首部行:
- Connection:close首部行告诉客户,发送完报文后将关闭该TCP 连接。
- Date:首部行指示服务器产生并发送该响应报文的日期和时间。值得一提的是,这个时间不是指对象创建或者最后修改的时间,而是服务器从它的文件系统中检索到该对象,将该对象插入响应报文,并发送该响应报文的时间。
- Server:首部行指示该报文是由一台Apache Web服务器产生的,它类似于HTTP请求报文中的User-agent:首部行。
- Last-Modified:首部行指示了对象创建或者最后修改的日期和时间。
- Content-Length:首部行指示了被发送对象中的字节数。
- Content-Type:首部行指示了实体体中的对象是HTML文本。
实体体: 包含了所请求的对象本身(表示为 data data data data data……)。
万维网缓存与代理服务器
万维网缓存又称为Web缓存,可位于客户机,或中间系统,位于中间系统上的Web缓存又称为代理服务器。
Web缓存把最近的一些请求和响应暂存在本地磁盘/代理服务器中,当新请求到达时,若发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL再次访问英特网
若Web缓存的命中率较高,可以减少客户访问英特网的时延。
代理服务器工作过程
- 原始服务器会为每个响应的对象设定一个最后修改时间字段,和一个有效日期字段,当客户请求原始服务器的文档时,先向代理服务器发送请求,若代理服务器中存放有目标文档,则代理服务器会向主机发回包含文档的响应报文。
- 若代理服务器中没有目标文档,代理服务器会向原始服务器发送请求,原始服务器返回包含目标文档的响应报文; 代理服务器将该响应存入Web缓存;再将该响应返回给客户。
【假设原始文档可能已被更改 !】
- 当代理服务器的文档未过期(根据最后修改日期字段判断文档是否过期), 将文档封装到响应报文中发回给客户。
- 若已过期,则代理服务器会向因特网上的原始服务器发送请求,根据修改字段if-modified-since 判断是代理服务器的文档和原始服务器的文档是否一致,
①若文件一致则代理服务器更新文档的有效时期,然后代理服务器将文档封装在响应报文中发回给主机
②若文档不一致,则原始服务器会给代理服务器发送封装有该文档的响应报文,这样就更新了该文档,然后代理服务器将更新后的文档封装在响应报文中发回给主机
电子邮件
电子邮件系统由三部分组成:用户代理、邮件服务器和电子邮件所需协议(SMTP和POP3/IMAP)。
- 用户代理: 邮件的发送方和接收方都可看做是用户代理。
- 邮件服务系统: 邮件服务器形成了电子邮件体系结构的核心。每个接收方在其中的某个邮件服务器上有一个邮箱( mailbox )。用于管理发送和接受的邮件。
- 简单邮件传输协议SMTP: 邮件发送和接收过程所受到的一些约束和规范。
- 邮局协议版本3PO3:当用户代理(客户)打开了一个到邮件服务器(服务器)端口110上的TCP连接后,POP3就开始工作了。
- 互联网邮件访问协议IMAP:它是一种邮件协议,允许邮件客户端通过IMAP协议从邮件服务器上获取邮件信息。
简单邮件传输协议SMTP
SMTP是因特网电子邮件中主要的应用层协议。 它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。像大多数应用层协议一样,SMTP也有两个部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端。
邮局协议版本3PO3
POP3是一个极为简单的邮件访问协议,因为该协议非常简单,故其功能相当有限。当用户代理(客户)打开了一个到邮件服务器(服务器)端口110上的TCP连接后,POP3就开始工作了。
互联网邮件访问协议IMAP
使用POP3时,只能把邮件下载到主机后建立文件夹,而不能直接在远程服务器上建立文件夹。因为POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法。 IMAP应运而生,它解决了POP3的不足之处。