第一节 计算机网络利用体系结构从体系结构角度能够分为:客户/服务器(C/S)构造,纯P2P(Peer to Peer)构造和混合结构3种类型。一,客户/服务器(C/S)构造网络应用C/S构造的网络应用是最典型,最根本的网络应用。网络应用的通信单方分为服务器程序和客户程序,服务器程序须要先运行,做好通信的筹备,客户程序后运行,被动申请与服务器进行通信。C/S网络应用最次要的特色是通信只在客户与服务器之间进行,客户与客户之间不进行间接通信。在C/S通信过程中,被动发动通信的一方就是客户,被动承受通信的一方就是服务器。二,纯P2P构造网络应用在文件散发,文件共享,视频流服务等利用中,P2P利用体现出优越的性能,如Gnutella,BitTorent等。在纯P2P网络应用中,没有始终在运行的传统服务器,所有通信都是在对等的通信方之间间接进行,通信单方没有传统意义上的客户与服务器之分,“位置”对等。P2P利用中的每个对等端都同时具备C/S利用的客户与服务器的特色,是一个服务器与客户的结合体。事实上,P2P利用中的对等端软件包含服务器软件与客户端软件。在P2P利用中,对等端都是动静退出或来到利用,新退出的对等端须要晓得有那些对等端在线,在线对等端的地址以及在线对等端提供的服务等,这是P2P利用须要解决的关键问题之一。对于纯P2P利用,因为没有核心服务器,所以解决这些问题就更为艰难。三,混合结构网络应用混合结构网络利用将C/S与P2P利用相结合,既有核心服务器的存在,又有对等端(客户)间的间接通信。在混合结构网络应用中,存在客户(即对等端)与服务器之间的传统C/S构造的通信,也存在客户之间间接通信。通常每个客户通过C/S形式向服务器注册本人的网络地址,申明可共享的资源或可提供的服务,并通过核心服务器发现其余在线的客户,检索其余客户能够共享的资源等信息。第二节 网络应用通信基本原理网络应用的根本通信过程就是运行在不同主机上的利用过程间以C/S形式进行的通信。在C/S构造的网络应用中,服务器端运行的是服务器过程,被动地期待客户申请服务;客户端运行的是客户过程,被动发动通信,申请服务器过程提供服务。利用过程间遵循应用层协定替换应用层报文M。应用层协定定义了利用过程间替换的报文类型,报文形成局部具体含意以及替换时序等内容,即语法,语义和时序等协定三要素内容。从应用层角度来看,利用过程之间遵循应用层协定就能够间接实现端到端的报文M的替换,然而,本质通信过程并非如此。无论是服务器过程还是客户过程,当其遵循应用层协定组织好应用层报文后,须要通过层间接口(如利用编程接口API)将报文传递给相邻的传输层,申请传输层协定提供的端到端传输服务。典型的网络应用编程接口是套接字(Socket)。应用程序能够通过创立套接字实现与底层协定接口,并能够进一步通过套接字实现利用过程与底层协定之间的报文交换。因而,套接字是每个利用过程与其余利用过程进行网络通信时,真正收发报文的通道。一个利用过程能够创立多个套接字与同一个或不同的传输层协定进行接口。对于一个传输层协定,须要为与其接口的每一个套接字调配一个编号,标识该套接字,该编号称为端口号(port number)。通常服务器过程套接字会调配特定的端口号,而客户过程的套接字会绑定一个随机的惟一端口号。尤其是标准化利用,规范为不同的服务器调配了不同的默认端口号,Web服务器的默认端口为80,这部分端口号称为熟知端口号(well-known port munber)。每个利用过程通过一个或多个套接字与传输层协定进行接口,通过过程运行的主机IP地址以及其套接字所绑定的端口号能够标识利用过程。第三节 域名零碎(DNS)DNS(Domain Name System)是一个重要的根底利用,因为任何一个须要应用域名进行通信的网络应用,在利用通信之前首先须要申请DNS利用,将域名映射为IP地址。实现将域名映射为IP地址的过程,称为域名解析。DNS为了实现域名解析,须要建设分布式数据库,存储网络中域名与IP地址的映射关系数据,这些数据库存储在域名服务器上,域名服务器依据用户的申请提供域名解析服务。一,层次化域名空间因特网采纳了档次树状构造的命名办法,任何一个连贯在因特网上的主机或路由器,都能够有一个惟一的层次结构的域名。
==国家顶级域名nTLD==:cn标识中国,us示意美国,uk示意英国等。==通用顶级域名gTLD==:最早的顶级域名是com(公司和企业),net(网络服务机构),org(非盈利组织),edu(专用的教育机构),gov(专用的政府部门),mil(专用的军事部门),int(国内组织)。==根底构造域名(infrastructure domain)==:这种顶级域名只有一个,即arpa,用于反向域名解析,因而又称为反向域名。二,域名服务器一个服务器所负责管辖的(或有权限的)范畴叫做区(zone)。每个区设置相应的权威域名服务器,用来保留该区中的所有主机的域名到IP地址的映射。域名服务器依据其次要保留的域名信息以及在域名解析过程中的作用等,能够分为根域名服务器,顶级域名服务器,权威域名服务器,两头域名服务器4类。任何一台主机在网络地址配置时,都会配置一个域名服务器作为默认域名服务器,这样这台主机任何时候须要进行域名查问,都会将域名查问申请发送给该服务器;该服务器如果保留了被查问域名的信息,则间接做出响应,如果没有,则代理服务器查问其余域名服务器,直到查问到后果,最初将查问后果发送给查问主机。这个默认域名服务器通常称为本地域名服务器。是主机进行域名查问过程中首先被查问的域名服务器。根域名服务器是最重要的域名服务器。寰球互联网中部署了无限的几个根域名服务器,每个根域名服务器都晓得所有的顶级域名服务器的域名和IP地址。不论是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析,只有本人无奈解析,就首先求助于根域名服务器。==在因特网中共有13个不同IP地址的根域名服务器,名字是用一个英文字母名,从a始终到m==。顶级域名服务器,即TLD服务器,负责管理在该顶级域名服务器注册的所有二级域名。顶级域名服务器的名称对应一个域名的最初一个名字,是对一个行业的命名,或对一个区域的命名。权威域名服务器,负责一个区的域名服务器,保留该区中的所有主机的域名到IP地址的映射。
任何一个领有域名的主机,其域名与IP地址的映射关系等信息都存储在所在网络的权威域名服务器上。在档次域名构造中,有时还存在一些既不是根域名服务器,又不是顶级域名服务器,也不是权威域名服务器的域名服务器,这些域名服务器通常称为两头域名服务器。三,域名解析过程域名解析分为递归解析和迭代解析。提供递归查问服务的域名服务器,能够代替查问主机或其余域名服务器,进行进一步的域名查问,并将最终解析后果发送给查问主机或服务器。提供迭代查问的服务器,不会代替查问主机或其余域名服务器,进行进一步的查问,只是将下一步要查问的服务器告知查问主机或服务器。通常本地域名服务器都提供递归查问服务。主机在进行域名查问时,本地域名服务器如果没有被查问域名的信息,则代理主机查问根域名服务器或其余服务器,直到失去被查问域名的IP地址,最初将解析后果发送给主机。
提供迭代查问服务的域名服务器不会代理客户的查问申请,而是将最终后果或者下一步要查问的域名服务器间接响应给查问客户。根域名服务器通常只提供迭代查问服务,当根域名服务器收到本地域名服务器的迭代查问申请报文时,要么给出所要查问的IP地址,要么在响应报文中通知本地域名服务器下一步该当查问哪一个域名服务器,本地域名服务器则持续查问下一个域名服务器,直到查问到被查问域名主机的权威域名服务器。
无论是递归解析还是迭代解析,只有本地域名服务器不能间接响应解析后果,则都须要从根域名服务器开始查问。会重大影响查问响应工夫和查问效率,解决办法:
域名服务器减少缓存机制:即在为客户做出响应的同时,每个域名服务器会将在域名解析过程中解析到的后果存储到域名数据库中,当再次收到雷同域名信息的查问申请时,便能够利用缓存的信息间接做查问响应,从而缩短域名查问的工夫。第四节 万维网利用一,HTTP1,HTTP连贯HTTP基于传输层的TCP传输报文。浏览器在向服务器发送申请之前,首先须要建设TCP连贯,而后能力发送HTTP申请报文,并接管HTTP响应报文。依据HTTP在应用TCP连贯的策略不同,能够分为非长久连贯的HTTP和长久连贯的HTTP。
非长久连贯是指HTTP客户与HTTP服务器建设TCP连贯后,通过该连贯发送HTTP申请报文,接管HTTP响应报文,而后断开连接。HTTP/1.0默认应用非长久连贯,每次申请传输一个对象都须要新建设一个TCP连贯。
为了进步或改善HTTP的性能,须要对HTTP/1.0的这种默认的非长久连贯应用形式进行优化,典型的优化技术包含两种。
并行连贯,通过建设多条并行的TCP连贯,并向发送HTTP申请和并行接管HTTP响应。并行连贯并不一定总能减小提早,放慢网页加载速度,并行连贯会减少客户端主机的资源开销,零碎通常对同时建设的并行TCP连接数有限度。长久连贯,重用已建设的TCP连贯发送新的HTTP申请和接管HTTP响应,从而打消新建TCP连贯的工夫开销。长久连贯又分为两种工作形式:非流水形式长久连贯和流水形式长久连贯。
非流水形式长久连贯:也称为非管道形式长久连贯,客户端在通过长久连贯收到前一个响应报文后,能力收回对下一个对象的申请报文。。与非长久连贯相比,间断申请多个对象时,只需建设一次TCP连贯,这样,每获取一个对象只需一个RTT工夫。流水形式长久连贯:也称为管道形式长久连贯,客户端在通过长久连贯收到前一个对象的响应报文之前,间断顺次发送对后续对象的申请报文,而后再通过该连贯顺次接管服务器发回的响应报文。应用流水形式长久连贯时,获取一个对象均匀工夫远小于1个RTT工夫,如果疏忽对象传输工夫,间断申请的多个对象只需1个RTT工夫。HTTP/1.1默认状况下应用流水形式长久连贯。HTTP/1.1的长久连贯默认是激活的。如果心愿完结长久连贯,能够在报文中显式地增加connection: close首部行。HTTP/1.1应用长久连贯的次要束缚与规定
如果客户端不冀望在连贯上发送其余申请,则应该在最初一条申请报文中蕴含connection:close首部行。如果客户端在收到的响应报文中蕴含 connection:close 首部行,则客户端不能再在这条连贯上发送更多的申请。每个长久连贯只实用于一跳传输,HTTP/1.1代理必须可能别离治理与客户端和服务器的长久连贯。HTTP/1.1代理服务器不应该与HTTP/1.0客户端建设长久连贯。二,CookieHTTP服务器在向客户发送被申请的文件后,不保留任何对于该客户的状态信息,因为HTTP服务器并不保留对于客户的任何信息,所以HTTP被称为无状态协定(stateless protocol)。Cookie中文名称为小型文本文件,指某些网站为了分别用户身份,进行会话跟踪而存储在用户本地终端上的数据。Cookie由服务器端生成,发送给User-Agent(个别是浏览器),浏览器会将Cookie的key/value保留到某个目录下的文本文件内,下次申请同一网站时就发送该Cookie给服务器,Cookie次要包含4局部内容。
HTTP响应报文中的Cookie头行:Set-Cookie。通过Set-Cookie,发送通常不超过4KB的Cookie信息,包含为其用户调配的ID,用户对网站的拜访偏好等。用户浏览器在本地存储,保护和治理的Cookie文件。包含网站的域,门路,内容,有效期和平安5个字段。HTTP申请报文中的Cookie头行:Cookie。当用户向曾经拜访过且曾经取得Cookie信息的网站发送HTTP申请报文时,浏览器会自动检索本地的Cookie文件,并在每个申请报文中通过Cookie头行,携带上网站为该用户调配的Cookie信息。网站在后盾数据库中存储,保护Cookie信息,包含已调配给用户ID,每个ID用户在本网站的拜访特色等。Cookie常见的用处
网站利用Cookie的ID来精确统计网站的理论拜访人数,新访问者和反复访问者的人数比照,访问者的拜访频率等数据。网站利用Cookie限度某些特定用户的拜访。网站能够存储用户拜访过程中的操作习惯和偏好,对不同的用户提供不同的服务。记录用户登录网站应用的用户名,明码等信息,当用户屡次登录时,毋庸每次都从键盘输入。电商利用Cookie能够实现“购物车”性能。第五节 Internet电子邮件一,电子邮件系统构造电子邮件系统次要包含邮件服务器,简略邮件传输协定(SMTP),用户代理和邮件读取协定等。邮件服务器的性能是发送和接管邮件,同时还要向发信人报告邮件传送的状况,是电子邮件体系结构的外围。邮件服务器保护治理一个外出邮件队列,队列中暂存注册用户期待向外发送的邮件(发送基于SMTP)。当发送邮件时,邮件服务器首先从收件人邮箱地址中解析出接管邮件服务器的域名或IP,而后将邮件发送给邮件服务器,邮件服务器将接管到的邮件寄存到用户的邮箱中。用户代理(User Agent)是电子邮件利用的客户端软件,为用户提供应用电子邮件的接口。用户代理的次要性能是反对用户撰写,显示,解决和收发邮件,为用户浏览,回复,转发,保留和撰写邮件等提供编辑与操作环境。邮件服务器之间发送和接管邮件时依照客户/服务器形式工作。实现邮件服务器间发送邮件的利用层层协定是SMTP,用户代理向注册邮件服务器发送邮件时,通常也是基于SMTP。从客户/服务器通信形式来看,一个邮件服务器即能够看作客户,又能够看作服务器。一个邮件服务器通常至多蕴含两个过程(或线程):邮件发送过程(mail sender)和邮件接管过程(mail receiver)。邮件接管过程实现SMTP的服务器端,通常绑定端口号25。邮件的发送与接管过程
用户A首先利用用户代理撰写邮件,而后基于SMTP将邮件发送到其注册的邮件服务器A的外出邮件队列中,期待邮件服务器发送。邮件服务器A从队列中取出用户A的邮件,基于SMTP发送给邮件服务器B。邮件服务器B将邮件寄存到用户B的邮箱中。在某个时刻,用户B利用用户代理连贯邮件服务器B上运行的邮件读取服务,基于邮件读取协定,将其邮箱中的邮件传输到本地,或者对邮箱中的邮件进行浏览,挪动等操作。二,SMTPSMTP是Internet电子邮件中外围应用层协定,实现邮件服务器之间或用户代理到邮件服务器之间的邮件传输。SMTP应用传输层TCP实现牢靠数据传输。SMTP邮件发送过程
SMTP客户端首先申请与服务器端的25号端口建设TCP连贯,连贯一旦建设,便开始进行SMTP应用层交互,实现邮件的发送。当TCP建设胜利后,SMTP通过3个阶段的应用层交互实现邮件的传输,别离是握手阶段,邮件传输阶段和敞开阶段。握手阶段:彼此申明本人的身份。邮件传输阶段:客户端首先向服务器端通告邮件发送者与邮件接收者的邮箱地址,而后开始邮件数据的传输。敞开阶段:申明邮件传输完结,并敞开TCP连贯。SMTP特点
SMTP只能传送7位ASCII码文本内容,包含SMTP命令,应答音讯以及邮件内容。因而,SMTP不能间接传送可执行文件或其余的二进制对象(如:图像,声音,视频等),包含许多其余非英语国家的文字(如:中文,俄文等),在通过SMTP传送这类内容时,必须将这些内容转换为7位的ASCII码文字模式。SMTP传送的邮件内容不能蕴含“CRLF.CRLF”,因为该信息用于标识邮件内容的完结,如果邮件内容中蕴含该信息,则SMTP在传输时,须要进行本义。SMTP是“推动”协定。当客户端有邮件发送给服务器时,客户被动与服务器(25号端口)申请建设TCP连贯,而后将邮件“推送”给服务器。SMTP应用TCP连贯是长久的。三,邮件读取协定目前Internet邮件系统中比拟风行的邮件读取协定有第三版的邮局协定(Post Office Protocol-Version 3,POP3),互联网邮件拜访协定(Internet Mail Access Protocol,IMAP)和HTTP,其中HTTP被用作Web Mail零碎中的邮件读取协定。1,POP3POP3是一个简略的邮件读取协定,为了保障读取邮件过程的可靠性,POP3协定应用传输层TCP。POP3客户端运行在用户代理中,POP3服务器运行在邮件服务器上,端口号为110。POP3交互过程分为3个阶段
受权(Authorization):用户代理须要向服务器发送用户名和口令(以明文模式),服务器甄别用户身份,受权用户拜访邮箱。因为用户名和口令是明文传输的,所以安全性并不高。受权阶段次要有两个命令:user<user name> 和pass<password>,别离向服务器发送用户名和口令。事务处理:用户代理向服务器发送POP3命令,实现邮件读取,为邮件做删除标记,勾销邮件删除标记以及获取邮件的统计信息等操作。更新:客户收回了quit命令,完结POP3会话,服务器删除哪些被标记为删除的邮件。2,IMAPIMAP服务器将每个邮件与一个文件夹进行关联,当邮件第一次达到服务器时,与收件人的INBOX文件夹相关联。通过IMAP,收件人能够在服务器上创立新的文件夹,并能够对邮件进行挪动,查问,浏览,删除等操作。IMAP的一个重要特色是容许用户代理只读取邮件的局部内容。(当用户代理拜访IMAP服务器的网络带宽比拟低,或者想先看以下邮件主题再决定是否要下载整个邮件时,此个性十分有用)。3,HTTP当应用基于Web的邮件时,HTTP便被用于邮件的读取,此时HTTP也作为邮件读取协定应用。基于Web的电子邮件简称Web邮件(Web Mail)。Web邮件的长处之一是用户代理就是一般的Web浏览器。Web邮件与一般电子邮件系统的次要区别在于用户代理与邮件服务器之间的邮件收发不同,而邮件服务器与其余邮件服务器之间的发送和接管过程并没有区别,依然应用SMTP。第六节 FTP文件传输协定(File Transfer Protocol,FTP)是在互联网的两个主机间实现文件互传的网络应用,其应用层协定也称为FTP。FTP能够缩小或打消在不同操作系统下解决文件的不兼容性,屏蔽各计算机系统的细节,适宜在网络中任意异构计算机之间传送文件。FTP采纳C/S形式实现客户与服务器之间的双向文件传输。FTP的客户与服务器之间的交互以及文件传输过程均应用TCP的牢靠传输服务。用户通过FTP用户代理应用FTP利用,用户代理通过FTP客户与FTP服务器进行交互。FTP的服务器过程由两个大部分组成:一部分为主过程,负责接管新的客户申请;另一部分为若干个隶属过程,负责解决单个客户申请,与具体客户进行交互。FTP服务器能够同时为多个客户过程提供服务。用户在应用FTP服务时,首先客户过程须要申请与FTP服务器的21号端口建设一条TCP连贯,称为管制连贯,而后开始FTP会话。FTP会话之初,用户须要通过管制连贯向FTP服务器发送用户名和口令,进行零碎登录,通过服务器的受权后,客户才能够通过其余命令与服务器交互,包含申请将本地文件系统中的一个或者多个文件上传到近程文件系统,或者申请将服务器文件系统中的文件下载到本地。FTP特点
FTP的一个显著特点就是在传输文件时,须要建设一个数据连贯,专门用于文件传输,文件传输完结后,数据连贯即敞开。FTP利用应用两个“并行”的TCP连贯:管制连贯和数据连贯。
管制连贯在整个会话期间始终放弃关上,是长久的,FTP客户收回的传送申请通过管制连贯发送给服务器端的管制过程的端口(21),但管制连贯不用来传送文件,理论用于传输文件的是数据连贯,用来连贯客户端和服务器端的数据传送过程。数据传送过程理论实现文件的传送,在传送结束后敞开数据传送连贯,数据连贯是长期的,非长久的。服务器过程用本人传送数据的端口(20)与客户过程所提供的端口号建设数据连贯。管制连贯用于在客户与服务器之间传输管制信息,如用户标识,口令,扭转近程目录,上传文件,下载文件等命令。数据连贯用于理论传送文件内容因为FTP专门应用一个独立的管制连贯传输管制信息,与传输文件信息进行拆散,所以将FTP的这种管制信息的传送形式称为带外管制(out-of-band control)。与之对应,哪些命令,数据都是通过一个TCP连贯传输的应用层协定称为带内管制(int-band control)协定。FTP服务器必须在整个会话期间保留用户的状态,即FTP是有状态的(stateful)协定。第七节 P2P利用P2P体系的网络应用对服务器的依赖很小,甚至对于纯P2P来说,整个利用简直不依赖某个集中服务器,利用都是动静的在对等方之间进行。在P2P利用中,对等方随时可能退出利用,也随时可能来到利用,具备很强的利用规模伸缩性。P2P利用的对等方通常并不属于服务提供商,而是用户管制的桌面计算机或笔记本电脑等。P2P利用充沛汇集利用了端系统的计算能力以及网络传输带宽,代表了全新的网络应用架构与理念。第八节 Socket编程根底网络应用过程能够创立3种类型的Socket:
数据报类型套接字SOCK_DGRAM:面向传输层UDP接口。流式套接字SOCK_STREAM:面向传输层TCP接口。原始套接字SOCK_RAW:面向网络层协定(如IP,ICMP等)接口。
原始套接字的创立有权限限度,如,在Linux操作系统中,须要root权限的用户能力创立原始套接字。通过原始套接字,利用过程能够实现一些非凡的权限,如收发ICMP报文等。罕用Socket API函数
int socket(int family,int type,int protocol);性能:
创立套接字。参数:
family为协定族,通常取值为PF_INET或AF_INET示意面向IPv4协定栈;type为套接字类型,取值SOCK_STREAM,SOCK_DGRAM,SOCK_RAW,别离为流式套接字,数据报套接字,原始套接字protocol为协定,其中取值IPPROTO_TCP,IPPROTO_UDP别离示意TCP协定和UDP协定。返回:
胜利,返回非负整数,为套接字描述符。失败,返回-1或SOCKET_ERROR。阐明:
创立指定类型的套接字。int close(int sockfd);性能:
...