TCPIP协议族-应⽤层协议httpDNSsmtpftp简介
在庞⼤的TCP/IP协议族5层模型中,⽹络应⽤层是位于最上层的,其应⽤模型主要分为两种:客户/服务器模型(client/server,C/S),P2P模型。
在客户/服务器模型中,有⼀个总是打开的主机称为服务器,服务于许多来⾃其他客户机的主机请求,其⼯作流程如下:
1)服务器处于接收请求的状态
2)客户机发出服务请求,等待接收结果
3)服务器收到请求后,分析请求,进⾏必要处理后,将结果返回客户机。
常见的C/S模型的应⽤包括:Web应⽤-http/https,⽂件传输-ftp,域名解析-DNS,远程登录-ssh,电⼦邮件-smtp/pop3等。
在P2P模型中,与C/S不同的是,⽹络中的每个主机都可以作为客户机也可以作为服务器,没有固定的客户与服务的划分,任意⼀对计算机称为对等⽅。
下⾯来看看基于C/S模式的应⽤。
1.域名系统-DNS
域名系统(Domain Name System, DNS)是因特⽹使⽤的命名系统,⽤来转换⽅便⼈记忆的特定主机名和便于机器处理的IP地址,DNS系统采⽤客户/服务器模型,协议运⾏在UDP上,使⽤端⼝:53。
概念上DNS分3部分:层次域名空间、域名服务器、解析器。
层次域名空间
因特⽹采⽤层次树状结构命名的⽅法,域名根据不同层次进⾏分类,举个例⼦,www.baidu,com是顶级域名,
baidu是⼆级域名,www是三级域名,通过"."将不同层级域名隔开。
如下图所⽰,常见层级域名,如国家顶级域名,,.uk,分别表⽰中国,英国,通过顶级域名,,.gov则表⽰公司,政府,还有⼀种域名叫基础结构域名,arpa,仅有⼀个,反向域名。
域名服务器
域名服务器,主要四种类型,根域名服务器,顶级域名服务器,本地域名服务器,授权域名服务器,不同类型域名服务器管辖范围不同。
根域名服务器
根域名服务器,最⾼层次域名服务器,所有的根域名服务器都知道所有的顶级名服务器的IP地址,也是最重要的,不管哪个本地域名服务器,解析域名时,如果⾃⼰⽆法解析,都⾸先求助于根域名服务器,但根域名服务器不是直接把待查询的域名直接转IP,⽽是告诉本地域名服务器应该往哪个域名服务器查询。
顶级名服务器
该域名服务器管理在其注册的所有⼆级域名,收到DNS请求时,可能直接返回结果,也可能告诉下⼀步往哪个域名服务器查。
授权名服务器
每台主机都必须在授权(权限)域名服务器登记,授权域名服务器总能将其管辖的主机名转为主机的IP地址。
本地名服务器
每个ISP都可以有本地域名服务器,当主机发出DNS查询请求时,请求报⽂就发送给主机的本地名服务器。
域名解析过程
域名解析是指把域名映射成Ip地址,或者反过来,前者为正向解析,反之为反向解析。当客户端需要域名解析时,通过本机的DNS客户端构造⼀个DNS请求报⽂,以UDP数据报⽅式发往本地域名服务器。
域名解析有两种⽅式:递归查询和递归与迭代相结合的查询。
递归查询的过程如下图所⽰,但该⽅法给根域名服务器造成的负载⼤,实际⼏乎不⽤:
递归与迭代查询的过程如上图所⽰。
当然为了提⾼DNS的查询效率,并减少因特⽹上的DNS查询报⽂数量,在域名服务器中⼴泛地使⽤了⾼速缓存。当⼀个DNS服务器收到DNS查询结果时,该服务器就能够直接提供所要求的IP地址,⽽不需要向其他DNS服务器询问。另外,因为主机名和IP地址之间的映射不是永久的,所以DNS服务器将在⼀段时间后丢弃⾼速缓存中的信息。
2.⽂件传输协议-FTP
⽂件传输协议(FileTrasferProtocol,FTP)是因特⽹上使⽤最⼴泛的⽂件传输协议。FTP提供交互式的访问,允许客户指明⽂件类型及格式,并允许⽂件具有存取权限。
FTP提供以下功能:
1)提供不同种类主机系统之间的⽂件传输能⼒
2)以⽤户权限管理的⽅式提供⽤户对远程FTP服务器上的⽂件管理能⼒
3)以匿名FTP的⽅式提供公⽤⽂件共享的能⼒
FTP采⽤客户/服务器的⼯作⽅式,使⽤TCP可靠的传输服务。⼀个FTP服务器进程可同时为多个客户提供服务,服务器进程由两⼤部分组成:⼀个主进程,负责接收新的请求,另外有若⼲的从属/⼦进程,负责处理单个请求,⼯作步骤如下:
1)打开21端⼝,使客户进程能够连接上
2)等待客户进程发连接请求
3)启动从属进程处理客户进程发来的请求,主进程与从属进程并发执⾏,从属进程对客户进程的请求处理完毕后即终⽌
4)回到等待状态,继续接收其他客户进程的请求
FTP服务器必须在整个会话期间保留⽤户的状态信息,特别是服务器必须把指定的⽤户账户与控制连接联系起来,⽐如设置⼀个匿名账户,密码任意,服务器必须追踪⽤户在远程⽬录上的当前位置。
控制连接与数据连接
FTP在⼯作时,使⽤两个并⾏的TCP连接,如下图,⼀个是控制连接(端⼝21),⼀个是数据连接(端⼝20),使⽤两个不同的端⼝号可使协议更加简单和更容易实现。
控制连接
服务器监听21号端⼝,等待客户连接,建⽴在这个端⼝上的连接成为控制连接,控制连接⽤来传输控制信息,如连接请求、传送请求,且控制信息都以7位ascii格式传送。FTP客户发出传送请求,通过控制连接发给服务器端的控制进程,但控制连接不传送⽂件。在传输⽂件是还可以使⽤控制连接,中途发送其他命令,因此,控制连接在整个会话期间⼀直处于打开状态。
数据连接
服务器端的控制进程在接收到FTP客户发来的⽂件传输请求后,就创建了“数据传送进程”和“数据连接”。数据连接⽤来连接客户端和服务器的数据传送进程,数据传送进程实际完成⽂件的传送,在传送完毕后关闭“数据传送连接”并结束执⾏。
因FTP使⽤⼀个分离的控制连接,所以也称FTP的控制信息是带外传送的。
3.电⼦邮件-SMTP/POP
电⼦邮件系统应具有三个最主要的组成构件:⽤户代理(User Agent),邮件服务器,电⼦邮件使⽤协议,SMTP/POP/IMAP。
⽤户代理-UA:⽤户与电⼦邮件系统的接⼝,⽤户代理使⽤户能通过友好接⼝发送/接收邮件,⽤户代理⾄少应具有撰写显⽰和邮件处理的功能,通常情况下,⽤户代理就是⼀个运⾏在PC上的程序,常见的有Outlook/Foxmail等。
邮件服务器:组成电⼦邮件系统的核⼼,功能是发送和接收邮件,同时还要向发信⼈报告邮件传送情况(已交付,被拒绝,丢失等),邮件服务器采⽤C/S⽅式⼯作,但它能同时充当客户和服务器,举个例⼦,当邮件服务器A向邮件服务器B发送邮件时,A就作为SMTP客户,B是SMTP服务器,反之,当B向A发送邮件时,⾓⾊互换。
邮件协议:邮件发送协议⽤于⽤户代理向邮件服务器发送邮件或者在邮件服务器之间发送邮件,通常使⽤SMTP;邮件读取协议⽤于⽤户代理从邮件服务器读取邮件,如POP3。SMPT采⽤的是push的通信⽅式,POP3采⽤的是pull的通信⽅式。
邮件发送和接收的过程可简化如下图:
下⾯介绍电⼦邮件的收发过程:
1)发信⼈调⽤⽤户代理撰写和编辑发送的邮件,⽤户代理⽤SMTP把邮件传送给发送⽅邮件服务器
2)发送⽅邮件服务器将邮件放⼊邮件缓存队列,等待发送
3)运⾏在发送⽅邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,就向运⾏在接收⽅邮件服务器的SMTP服务器进程发起建⽴TCP连接
4)TCP连接建⽴后,SMTP客户进程开始向远程SMTP服务器进程发送邮件,当所有待发送邮件发完后,SMTP就关闭所建⽴的TCP 连接
5)运⾏在接收⽅邮件服务器中SMTP服务器进程收到邮件后,将邮件放⼊收信⼈的⽤户邮箱,等待收信⼈在⽅便时进⾏读取
6)收信⼈打算收信时,调⽤⽤户代理,使⽤POP3或者IMAP协议将⾃⼰的邮件从接收⽅邮件服务器的⽤户邮箱中取回
电⼦邮件格式与MIME
电⼦邮件分为信封和内容两部分,邮件内容分为⾸部和主体两部分,RFC 822规定邮件的⾸部格式,主体部分⽤户填写,邮件内容的⾸部有些关键字是必需的,最重要的是To:收件⼈和Subject:主题,其中Subject是可选关键字,另外From:是必填的,通常邮件系统⾃动填⼊。
MIME(multipurpose Internet Mail Extentions, MIME)
SMTP只能传送⼀定长度的ASCII码,许多⾮英语国家的⽂字,如中⽂,俄⽂等就⽆法传送,且⽆法传送可执⾏⽂件及⼆进制对象,因此提
出MIME,多⽤途⽹络邮件扩充。MIME的意图是继续使⽤⽬前的格式,但增加了邮件主题的结构,并定义了传送⾮ASCII码的编码规
则,MIME定义许多邮件内容的格式,对多媒体电⼦邮件的表⽰⽅法进⾏了标准化,定义了传送编码,可对任何内容格式进⾏转换。SMTP 与MIME的关系如下:
SMTP
简单邮件传输协议(Simple Mail Transfer Protocol, SMTP)是⼀种提供可靠且有效的电⼦邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。SMTP使⽤C/S模式,因此发送邮件的SMTP进程是SMTP客户,负责接收邮件的SMTP进程就是SMTP服务器,⽤TCP连接,端⼝号25,SMTP通信有以下
的三个阶段:
1)连接建⽴
2)邮件传送
3)连接释放
POP3
邮局协议(Post Office Protocol, POP)是⼀个简单但功能有限的邮件读取协议,现在使⽤的是其第三个版本POP3。POP3采⽤的是pull-拉的通信⽅式,当⽤户读取邮件时,⽤户代理向邮件服务器发出请求,拉取⽤户邮箱中的邮件。
POP也使⽤客户/服务器的⼯作⽅式,在传输层使⽤TCP,端⼝号110,接收的⽤户代理必须运⾏POP客户程序,接收⽅的邮件服务器则运⾏POP服务器程序。POP有两种⼯作⽅式,下载并保留,下载并删除。
IMAP
IMAP也是⼀种邮件接收协议(Internet Message Access Protocol),较POP复杂,其为⽤户提供了创建⽂件夹,在不同⽂件夹之间移动邮件及在远程⽂件夹中查询邮件的命令,为此IMAP服务器维护了会话⽤户的状态信息。其另⼀特性是允许⽤户代理只获取报⽂的某些部分,如只读取⼀个报⽂的⾸部,这适⽤于低带宽的情况。
另外,随着现在互联⽹的流⾏,除了使⽤以上的客户代理外,很多如Hotmail/Gmail等,⽤户的浏览器与Hotmail/Gmail的邮件服务器之间的邮件发送或接收使⽤了HTTP,⽽仅在不同的邮件服务器之间传送邮件时才使⽤SMTP。
4.web应⽤
万维⽹(World Wide Web, www)是⼀个资料空间,这⾥⼀样有⽤的事物称为⼀样资源,并由⼀个全域统⼀资源定位符标识-URL。这些资源通过超⽂本传输协议(HyperText Transfer Protocol,HTTP)传给使⽤者,⽽后者通过单击链接来获取资源。万维⽹使⽤链接⽅法能让⽤户⾮常⽅便地从因特⽹的⼀个站点访问另⼀个站点,从⽽主动按需获取丰富信息,超⽂本标记语⾔(HyperText Markup Language, HTML)使得万维⽹页⾯设计者可以⽅便⽤⼀个超链接从本页⾯的某处链接到因特⽹的其他页⾯,并且能够显⽰这些页⾯。
万维⽹的内核部分由三个标准构成:统⼀资源定位符-URL,超⽂本传输协议-HTTP,超⽂本标记语⾔-H
TML。
URL
URL是对可以从因特⽹上得到资源的位置和访问⽅法的⼀种简洁表⽰,URL相当于⼀个⽂件名在⽹络范围的扩展。
URL的⼀般形式:<;协议>://:/。常见协议有http,https, ftp,端⼝和路径有时可以省略,在URL中不区分⼤⼩写。
HTTP
HTTP定义了浏览器(client进程)怎样向万维⽹服务器请求资源,以及服务器怎样把⽂档传给浏览器,从层次的⾓度看,HTTP是⾯向事物应⽤层协议,它规定了浏览器和服务器之间的请求和响应的格式与规则,是互联⽹能够可靠交换⽂件的重要基础。
HTTP的操作过程
从协议的执⾏过程来说,浏览器要访问www服务器时,⾸先要完成对www服务器的域名解析,⼀旦获得服务器的IP地址,浏览器就通过TCP向服务器发送连接建⽴请求。
万维⽹的⼤致⼯作过程如下图所⽰,⽹站站点有⼀个服务器进程,不断监听TCP的80端⼝(默认),当监听到连接请求后便与浏览器建⽴连接,TCP连接建⽴后,浏览器就向服务器发送请求获取某个web页⾯的HTTP请求。服务器收到HTTP请求后将构建所请求的web页⾯必需信息,通过HTTP响应返回给浏览器,浏览器再将信息进⾏解释,然后将web页⾯显⽰给⽤户,最后,TCP连接释放。
HTTP有两类报⽂:请求报⽂和响应报⽂。
HTTP的特点
HTTP是⽆状态的,也就是说,同⼀个客户第⼆次访问同⼀个服务器上的页⾯时,服务器的响应与第⼀次访问时相同。这种⽆状态的特性简化了服务器的设计,使服务器更容易⽀持⼤量并发的HTTP请求,在实际应⽤中,⽐如会使⽤cookie/session/token+数据库⽅式来追踪⽤户的活动。
HTTP采⽤TCP作为运输层的协议,保证了数据的可靠传输,其本⾝是⽆连接的,通信的双⽅在交换HTTP报⽂之前不需要建⽴HTTP连接。
HTTP既可以是⾮持久连接,也可以是持久连接(HTTP/1.1)。对于⾮持久连接,每个⽹页元素如jpeg,flash等,其传输都需要单独建⽴⼀个TCP连接,如下图所⽰。
⽽持久连接,是指服务器发送响应后仍然保持这条连接,使同⼀个客户与服务器可以持续在这条连接上
传送后续的HTTP请求与响应报⽂,如下图所⽰的持久连接-⾮流⽔线⽅式。
持久连接分为⾮流⽔线和流⽔线⽅式,对于⾮流⽔线,客户在收到前⼀个响应后才能发出下⼀个请求,HTTP/1.1默认⽅式是使⽤流⽔线的持久连接,这种情况下,客户每遇到⼀个对象引⽤就⽴即发出⼀个请求,因为呵护可以做个连续发出对哥哥引⽤对象的请求,如果所有的请求和响应都是连续发送的,name所有引⽤的对象共计经历1个RTT延迟,⽽不是像⾮流⽔线⽅式,每个应⽤都必须有1个RTT延迟。
HTTP报⽂结构
HTTP是⾯向⽂本的,因此报⽂中的每个字段都是⼀些ASCII码串,并且每个字段的长度都是不确定的,有两类报⽂:请求报⽂:client >>> server
响应报⽂:server >>> client
参考:tcpip协议分为哪几层作用
1.《计算机⽹络》

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。