最近有一段空闲时间,就想重学计算机网络,今天去自习室看了一个小时,想回来写点东西,并且准备坚持一直写下去,可能话不多,可能技术部深,但希望能记录自己学习过程中每一点心得和体会。好了,进入正题吧,今天先写点关于HTTP,FTP,SMTP以及POP3和IMAP的东西吧。
Web应用和HTTP协议:
Web的应用层协议是超文本传输协议(HyperText Transfer Protocol,HTTP), 它是Web的核心。
HTTP使用TCP(而不是UDP)作为它的支撑运输层协议。TCP为HTTP提供可靠数据传输服务。这意味着,一个客户机进程发出的每个HTTP请求报文最终都能完整地到达服务器;类似地,服务器进程发出的每个HTTP响应报文最终也能完整地到达客户机。从这里我们看到了分层体系结构最大的优点,即HTTP协议不用担心数据丢失,也不用担心TCP是如何从网络的数据丢失和乱序故障中恢复的,那是TCP以及协议栈底层协议的工作。
一个HTTP服务器并不保存关于客户机的任何信息,所以我们说HTTP是一个无状态协议(stateless protocol)。
非持久连接(non-persistent connection)即每个请求/响应对是经过一个单独的TCP连接发送
持久连接(persistent connection)即所有请求及响应经相同的TCP连接发送。
HTTP既可以使用非持久连接,也可使用持久连接。默认使用持久连接。
用户与服务器的交互:cookie
前面我们提到了HTTP服务器是无状态的。这简化了服务器的设计,并且允许工程师们去开发可以同时处理数以亿计TCP连接的高性能的Web服务器。然后一个Web站点通常希望能够识别用户,既可能是因为服务器想限制用户的访问,又可能是因为它想把内容与用户身份关联起来。为此,HTTP使用了cookie,它允许站点跟踪用户。目前,大多数商务Web站点都是用了cookie。
比如当用户在网上购物时,在第一次输入了邮寄地址和手机号码之后,再次登录该网址进行购物,则不需要再次输入这些信息。
Web缓存
相当于内存中的高速缓存(cache)的概念。即保存了用户之前访问的网页的相关信息,当用户再次访问该网址时,则首先在Web缓存中查找,如果有,就直接返回Web页面,如果没有,再向网站服务器发送请求报文。
FTP
HTTP和FTP都是文件传输协议,并且有很多共同的特点。例如它们都运行在TCP上。
但是,它们之间还是有一些重要的区别。其中最著名的就是FTP使用两个并行的TCP连接来传输文件,一个是控制连接(control connection),一个是数据连接(data connection)。
控制连接用于在两个主机之间传输控制信息,如用户标识,口令、改变远程目录的命令以及“put”和“get”文件的命令。
数据连接用于实际传输一个文件。
因为FTP协议使用一个分离的控制连接,所以我们也称FTP的控制信息是带外(out-of-band)传送的。
||||||| |||||||
| | TCP控制连接端口21 | |
| |------------------------ | |
| | TCP数据连接端口20 | |
| |-------------------------| |
||||||| |||||||
FTP客户机 FTP服务器
当用户主机与远程主机开始一个FTP会话前,FTP的客户机(用户)首先在21号端口上发起一个用于控制的与服务器(远程主机)的TCP连接。FTP的客户机通过该控制连接发送用户的标识和口令,也发送改变远程目录的命令。当FTP的服务器端从该连接上受到一个文件传输的命令后(无论是到远程主机还是从远程主机),就发起一个到客户机的数据连接。FTP在该数据连接上准确地传送一个文件并关闭该连接。如果在同一个会话期间,用户还需要传输另一个文件,FTP则打开另一个数据连接。因而对FTP传输而言,控制连接贯穿了整个用户会话期间,但是针对会话中的每一个文件传输都需要建立一个新的数据连接(即数据连接是非持久的)。
SMTP(Simple mail Transfer Protocol)协议
电子邮件系统有三个主要组成部分:用户代理(user agent)、邮件服务器(mail server)和简单邮件传输协议(Simple mail Transfer Protocol )。
邮件服务器组成了电子邮件体系结构的核心。每个接收方在其中的某一个服务器上有一个邮箱。
一个典型的邮件发送过程是:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在这里被分发到接收方的邮箱中。
SMTP使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。
SMTP的传输报文主体只能是采用简单的ASCII码表示,因此在传送多媒体二进制数据时,要先将其编码为ASCII码,并且在使用SMTP传输后需要将相应的ASCII码解码还原为多媒体文件。
SMTP
A(A的代理)-----1-----A的邮件服务器-------2------B的邮件服务器-------3------B的代理
注意:SMTP一般不使用中间邮件服务器发送邮件,即使这两个服务器位于地球的两端也是这样。比如A的邮件服务器在中国香港,B的邮件服务器在美国的洛杉矶,那么这个TCP连接也是从香港直接连到洛杉矶。特别的,如果B的邮件服务器没开,那么该报文会留在A的邮件服务器上并在稍后进行新的尝试,这意味着邮件并不在中间的某个邮件服务器上保留。
HTTP与SMTP的区别
第一,HTTP主要是一个拉协议(pull protocol),即人们可以在方便的时候装载Web服务器上的信息,也就是说,用户使用HTTP从该服务器拉取信息。特别是,TCP连接是由想获取文件的机器发起的。另一个方面,SMTP基本上是一个推协议(push protocol),即发送邮件服务器把文件推向接收邮件服务器。特别是,这个TCP连接是由要发送文件的机器发起的。
第二,SMTP要求每个报文都是用7位ASCII码格式,HTTP则没有这个限制。
累了,以后再写吧,,,