一、应用层协议原理
网络应用体系结构
客户-服务器体系结构P2P体系结构 进程通信
客户和服务器进程进程与计算机网络之间的接口进程寻址 可供应用程序使用的运输服务
TCP服务UDP服务 二、Web和HTTP
HTTP概况HTTP持续连接与非持续连接HTTP报文格式用户与服务器的交互:cookieWeb缓存
条件GET方法 三、因特网中的电子邮件
SMTPPOP3IMAPHTTP 四、DNS:因特网的目录服务
DNS工作机理DNS缓存DNS记录和报文 五、P2P文件分发
一、应用层协议原理 网络应用体系结构 客户-服务器体系结构有一个总是打开的主机称为服务器,它服务于来自许多其他称为客户的主机的请求,客户之间不直接通信,服务器具有固定的、周知的地址,该地址称为IP地址。
P2P体系结构应用程序在间断连接的主机对之间使用直接通信,这些主机被称为对等方。
进程通信用 *** 作系统的术语来说,进行通信的实际是进程而不是程序,一个进程可以被认为是运行在端系统中的一个程序,当多个进程运行在相同的端系统上时,它们使用进程间通信机制互相通信,进程间的通信由端系统上的 *** 作系统确定。
通过跨越计算机网络交换报文而相互通信,发送进程生成并向网络中发送报文,接收进程接收这些报文并可能通过回送报文进行响应。
在Web程序中,一个客户浏览器进程与一台Web服务器进程交换报文,在一个
P2P文件共享系统中,文件从一个对等方的进程传输到另一个对等方中的进程。对于Web而言,浏览器是一个客户进程,Web服务器是一台服务器进程,对于P2P文件共享来说,下载文件的对等方被标识为客户,上载文件的对等方被标识为服务器。
进程通过一个称为套接字的软件接口向网络发送报文和从网络接收报文。进程可类比一座房子,而它的套接字可以类比与它的门。套接字是同一台主机内应用层与运输层之间的接口,因此套接字被称为应用程序和网络之间的应用程序编程接口。
进程寻址主机由其IP地址表示,目的地端口号用于这个目的地。
可供应用程序使用的运输服务 TCP服务TCP服务模型包括面向连接服务和可靠数据传输服务。
面向连接服务:在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息。这个所谓的握手过程提醒客户和服务器,让它们为大量分组的到来做好准备。在握手阶段后,一个TCP连接就在两个进程的套接字之间建立了。这条连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。当应用程序结束报文发送时,必须拆出该连接。可靠的数据传送服务:通信进程能够依靠TCP,无差错、按适当顺序交付所有发送的数据,当应用程序的一端将字节流传进套接字时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有丢失和冗余。
TCP协议还具有拥塞控制机制,这种服务不一定能为通信进程带来直接好处,但能为因特网带来整体好处,当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程。TCP拥塞控制也试图抑制每个TCP连接,使它们达到公平共享网络带宽的目的。
UDP服务UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP是无连接的,因此在两个进程通信前没有握手过程,是不可靠数据传输服务,当进程将一个报文发送进UDP套接字时,UDP协议不保证该报文将到达接收进程,到达进程的报文也可能是乱序的。
二、Web和HTTP HTTP概况超文本传输协议,它是Web的核心,HTTP由两个程序实现:
一个客户程序和一个服务器程序,客户程序和服务器程序运行在不同的端系统上,通过交换HTTP报文进行会话。Web浏览器实现了HTTP的客户端,Web服务器实现了HTTP的服务端,它用于存储Web对象。
HTTP使用TCP作为它的支撑运输协议。HTTP客户首先发起一个与服务器的TCP连接。一旦连接建立,该浏览器和服务器进程就可以通过套接字接口访问TCP。客户端的套接字接口是客户进程与TCP连接之间的门,在服务器端的套接字接口则是服务器进程与TCP连接之间的门。客户向它的套接字接口发送HTTP请求报文并从它的套接字接口接收HTTP响应报文。服务器从它的套接字接口接收HTTP请求报文和向它的套接字接口接口发送HTTP响应报文。
HTTP是一个无状态协议:服务器向客户发送被请求的文件,而不存储任何关于该客户的状态信息。假定某个特定的客户在短短的几秒内两次请求同一个对象,服务器并不会因为刚刚为客户提供了该对象而不再做出反应,而是重新发送该对象,就像服务器已经完全忘记不久之前所做过事一样。
HTTP既能够使用非持续连接,也能使用持续连,默认是持续连接。
非持续连接,多次的TCP连接耗费时间。
持续连接,能够减少TCP连接的时间耗费。
请求报文
GET /somedir/page,html HTTP/1.1 请求行 Host: www.someschool.edu 主机 Connection: close 不使用持续连接 User-agent: Mozilla/5.0 浏览器类型 Accept-language:fr 语言版本
响应报文
HTTP/1.1 200 OK 状态码 Connection: close 不使用持续连接 Date: Tue, 18 Aug 2015 15:44:04 GMT 服务器产生并发送该报文的日期和时间 Server: Apache/2.2.3 (CentOS) 产生报文的是Apache Web服务器 Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT 报文最后修改的日期和时间 Content-Length: 6821 被发送对象的字节数 Content-Type: text/html 对象格式是HTML文本 (data data data data data data data ...) 数据
常用状态码
200 OK:请求成功,信息在返回的响应报文中301 Moved Permanently:请求的对象已经被永久转移了,新的URL定义在响应报文的Location:首部行中。客户软件将自动获取新的URL。400 Bad Request:请求不能被服务器理解404 Not Found:被请求的文档不在服务器上505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本。 用户与服务器的交互:cookie
由于HTTP服务是无状态的,但是一个Web站点通常希望能够识别用户,可能是因为服务器希望限制用户的访问,或者因为它希望内容与用户的身份联系起来,为此HTTP提供了cookie。
cookie技术的4个组件
在HTTP响应报文中的一个cookie首部行在HTTP请求报文中的一个cookie首部行在用户端系统中保留有一个cookie文件,并由用户的浏览器进行管理位于Web站点的一个后端数据库
从图中可知,cookie可以用于标识一个用户。用户首次访问一个站点时,可能需要提供一个用户标识,在后继会话中,浏览器向服务器传递一个cookie首部,从而向服务器标识了该用户。因此cookie可以在无状态的HTTP之上建立一个用户会话层。cookie常用来做购物车服务。
假设浏览器正在请求对象http://www.someschool.edu/campus.gif
浏览器创建一个Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求。Web缓存器进行检查,看看本地是否存储了该对象副本。如果有Web缓存器就向客户浏览器用HTTP响应报文返回该对象。如果Web缓存器中没有该对象,它就打开一个与该对象的初始服务器(即www.someschool.edu)的TCP连接。Web缓存器则在这个缓存器到服务器的TCP连接上发送对该对象的HTTP请求。在收到请求后,初始服务器向该Web缓存器发送具有该对象的HTTP响应。当Web服务器接收到该对象时,它在本地存储空间存储了一份副本,并向客户的浏览器用HTTP响应报文发送该副本(通过现有的客户浏览器和Web服务器之间的TCP连接)。
通过使用内容分发网络(CDN),Web缓存器正在因特网中发挥越来越重要的作用。CDN公司在因特网上安装了许多地理上分散的缓存器,因此使大量流量实现了本地化。
条件GET方法为了确保缓存的对象不是陈旧的。条件GET方法包含
请求报文使用GET方法请求报文中包含一个“if-Modified-Since”: 首部行 三、因特网中的电子邮件
电子邮件主要组成部分
用户代理:用户代理允许用户阅读、回复、转发、保存和撰写报文。用户代理向其邮件服务器发送邮件。用户代理在其邮件服务器的邮箱中取得该报文。邮件服务器:邮件服务器形成了电子邮件体系结构的核心,每个接收方在其中的某个邮件服务器上有个邮箱。简单传输协议
邮件发送过程:从发送方的用户代理开始,传输到发送方的邮件服务器,再传输到接收方的邮件服务器,然后在分发到接收方的邮箱中,通过用户代理读取即可。如果发送方的邮箱无法发送到接收方的服务器上,在发送方的服务器中存在一个报文队列,将该报文保持在队列中并在以后尝试再次发送。通常每30分钟左右进行一次尝试。如果几天后仍不能成功,服务器就删除该报文并以电子邮件的方式通知发送方。
SMTPSMTP是因特网电子邮件中主要的应用层协议,它使用TCP可靠数据传输服务,是因特网电子邮件的核心。SMTP有两个部分
运行在发送方邮件服务器的客户端运行在接收方邮件服务器的服务端
每台邮件服务器既运行着SMTP的客户端也运行着SMTP的服务端。SMTP一般不使用中间服务器发送邮件。
总流程
客户SMTP(运行在发送邮件服务器主机上)在25号端口建立一个到服务器SMTP(运行在接收邮件服务器主机上)的TCP连接。如果服务器没有开机,客户会在稍后继续尝试连接。一旦连接建立,服务器和客户执行某些应用层的握手,就像人们在互相交流前先进行自我介绍一样。SMTP的客户和服务器在传输信息前先互相介绍在SMTP握手阶段,SMTP客户指示发送方的邮箱地址和接收方的邮箱地址。一旦该SMTP客户和服务器彼此介绍之后,客户发送该报文,SMTP能依赖TCP提供的可靠数据传输无差错地将邮件投递到接收服务器。该客户端如果有另外的报文要发送到该服务器,就在该相同的TCP连接上重复这种处理,否则它指示TCP关闭连接。
SMTP用的是持续连接:如果发送邮件服务器有几个报文发往同一个接收服务器,它可以通过同一个TCP连接发送这些所有的报文。
与HTTP对比
HTTP是服务器-客户,SMTP是服务器-服务器HTTP主要是拉协议,SMTP主要是推协议SMTP要求每个报文采用7比特ASCII码格式。HTTP数据则不受这些限制HTTP把每个对象封装到它自己的HTTP响应报文中,SMTP则把所有报文对象放在一个报文之中
邮件报文格式
From:首部行To:首部行Subject:首部行
典型报文首部
From: alice@crepes.fr To: bob@hamburger.edu Subject: datadatadata
值的注意的是,接收方不能使用SMTP得到报文,因为SMTP是一个堆协议,只能通过引用特殊的邮箱访问协议来解决这个问题,(POP3、IMAP、HTTP)
POP3POP3是一个极为简单的邮箱访问协议,当用户代理打开了到邮箱服务器端口110上的TCP连接以后,POP3开始工作
特许阶段:用户代理发送(以明文形式)用户名和口令以鉴别用户。事务处理阶段:用户代理取回报文,同时也可以进行删除标记,取消删除标记,以及获取邮件的统计信息。更新阶段:客户发出quit命令之后,目的是结束POP会话,那么邮件服务器删除那些被标记删除的报文。
在事务处理阶段:服务器只会回答+OK和-ERR。
IMAPIMAP是一个邮件访问协议,IMAP服务器将每个报文与一个文件夹联系起来,当报文第一次到达服务器的时候,它与收件人的INBOX文件夹相关联,收件人则是能把邮件移到一个新的、用户创建的文件夹中,阅读邮件、删除邮件等,IMAP协议为用户提供了创建文件夹以及将邮件从一个文件夹移到另一个文件夹的命令。IMAP还为用户提供了在远程文件夹的中查询的命令,按指定条件去查询匹配的条件。IMAP还允许用户代理只读取一个报文的报文首部,这在低宽带连接条件非常有用,避免取一些大文件导致响应时间很长。
HTTP基于Web的电子邮件,也就是说使用这种服务,用户代理就是普通的浏览器,用户和他远程邮箱之间通过HTTP进行。
四、DNS:因特网的目录服务人们喜欢便于记忆的主机名标识方式,而路由器则喜欢定长的、有着层次结构的IP地址。为了折中这些不同的偏好,我们需要一种能进行主机名到IP地址转换的目录服务,这也就是域名系统(DNS)的主要任务。
DNS
一个由分层的DNS服务器实现的分布式数据库一个使得主机能够查询分布式数据库的应用层协议DNS服务器通常运行在BIND软件的UNIX机器上DNS依赖UDP,53号端口
DNS的重要服务
主机别名:应用程序可以调用DNS来获取主机别名对应的主机规范名和IP地址邮件服务器别名负载分配:繁忙的站点被冗余分布在多台服务器上,每台服务器均运行在不同的端系统上,每个都有着不同的IP地址。 DNS工作机理
分布式、层次数据库
根DNS服务器:有400多个根名字服务器遍及全世界顶级域(TLD)DNS服务器权威DNS服务器
本地DNS服务器:每个ISP都有一台本地DNS服务器,当主机与某个ISP连接时,该ISP提供一台主机的IP地址,该主机具有一台或者多台其本地DNS服务器的IP地。一般来说,本地DNS服务器邻近主机。
访问顺序:
先访问本地DNS服务器,如果没有,本地DNS服务器则转发到根DNS服务器根DNS观察前缀,并向本地DNS服务器返回负责该前缀的TLD的IP地址列表本地DNS服务器根据这些IP地址列表向TLD发送查询报文TLD注意到前缀,又把负责该前缀的权威DNS服务器的IP地址列表发给本地DNS服务器。本地DNS服务器根据这些IP地址列表想权威DNS服务器发送查询报文权威DNS服务器把相应的IP地址发送给本地DNS服务本地DNS服务器用向该IP地址发送请求报文
查询的特点是递归、迭代。
DNS缓存为了改善时延性能并减少在因特网上到处传输的DNS报文数量,DNS广泛应用了缓存技术。在一个请求链中,当某DNS服务器接收一个DNS回答(主机名-IP地址的映射)时,它能将映射缓存在本地存储器中。每当本地DNS服务器从某个DBS服务器接受到了一个DNS回答,它能够缓存包含在该回答中的任何信息,如果在DNS服务器中缓存了一台主机名/IP地址对,另一个相同的主机名查询达到该DNS服务器时,该DNS服务器就能够提供所要求的IP地址,即使它不是该主机名的权威服务器。DNS服务器在一段时间后(通常设置为两天)将丢弃缓存的信息。本地服务器也能够缓存TLD服务器的IP地址,因而允许本地DNS服务器饶过查询链中的根DNS服务器。事实上因为缓存,大多数DNS查询都绕过了根服务器。
DNS记录和报文资源记录{Name, Value, Type, TTL}
TTL代表该记录的生存时间,也决定了资源记录应当从缓存中删除的时间
如果Type = A,则Name是主机名,Value是该主机名对应的IP地址如果Type = NS,则Name是个域,而Value是知道如何获取该域中主机的IP地址的权威DNS服务器的主机名如果Type = CNAME,则Value是别名为Name的主机对应的规范主机名如果Type = MX,则Value是别名为Name的邮件服务器的规范主机名 五、P2P文件分发
在P2P文件分发中,每个对等方能够向任何其他对等方重新分发它已经收到的该文件的任何部分,从而在分发过程中协助该服务器。到目前为止,最为流行的是P2P文件分发协议是BitTorrent。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)