应用层协议概述

最近有一段空闲时间,就想重学计算机网络,今天去自习室看了一个小时,想回来写点东西,并且准备坚持一直写下去,可能话不多,可能技术部深,但希望能记录自己学习过程中每一点心得和体会。好了,进入正题吧,今天先写点关于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则没有这个限制。

 

累了,以后再写吧,,,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值