




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1第二章应用层Chapter2ApplicationLayerComputerNetworking
ATop-DownApproach2第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程32.1应用层协议原理网络应用程序位于应用层网络游戏网络视频网络电话视频会议网络搜索电子商务丰富、奇妙的网络应用程序促使了Internet的高速发展应用程序举例:电子邮件Web应用即时讯息远程访问文件共享文件传输4问题如何将一个idea转化成现实世界中的网络应用呢?NetworkApplicationDevelopment5开发网络应用程序网络应用程序开发核心是:
Writingprogramsthatrunondifferentendsystemsandcommunicatewitheachotheroverthenetwork
(写出能够运行在不同的端系统并通过网络彼此通信的程序)例如,Web程序:Web服务器程序和用户浏览器程序端系统:Web服务器主机和用户主机通信:用户通过浏览器请求阅览Web页面,服务器响应用户页面请求网络:Internet6开发网络应用程序考虑几个重要问题:采用什么样的体系结构?进程如何通信?选择什么样的运输层服务?应用层采用什么样的协议?注意:无需为网络核心设备(如路由器或链路层交换机)开发软件因为网络核心设备并不在应用层,而在网络层、链路层和物理层优点在于将应用软件限制在端系统,促进大量应用程序的研发和部署72.2.1网络应用程序体系结构应用程序体系结构:Designedbytheapplicationdeveloperdictatehowtheapplicationisstructuredoverthevariousendsystems分类:客户机/服务器结构P2P体系结构混合的体系结构8客户机/服务器结构服务器:总是打开(always-on)具有固定的、众所周知的IP地址主机群集常被用于创建强大的虚拟服务器客户机:无需总打开,可间断的同服务器连接可拥有动态IP地址客户机相互之间不直接通信9应用搜索引擎,如Google,百度网络商务,如Amazon,e-Bay,淘宝网Web电子邮件,如Yahoo邮件社交网络,如MySpace和Facebook视频共享,如YouTube10纯P2P体系结构没有总是打开的服务器任意一对主机直接相互通信对等方间歇连接并且可以改变IP地址优点:self-scalabilitycosteffective缺点:难以管理安全性11应用文件分发,如BitTorrent文件搜索和共享,如eMule和LimeWire网络电话,如SkypeIPTV,如PPLive122.1.2进程通信进程:运行在端系统中的程序同一主机上的两个进程通过内部进程通信机制进行通信不同主机上的两个进程通过计算机网络交换报文相互通信客户机进程:
发起通信的进程服务器进程:
等待联系的进程注意:具有P2P体系结构的应用程序同时有客户机进程和服务器进程。13进程与网络的接口进程与网络的接口是套接字通过套接字,进程在网络上发送和接收报文进程类比于房屋中的人,套接字类比于门发送进程把报文从门发送出去接收进程把报文从门接收进来套接字又叫做网络应用程序编程接口API用户通过API对传输层的控制,但仅限于:
(1)选择传输协议,如TCP或UDP;(2)能设定几个参数,如最大缓存、最大报文长度等14由操作系统控制进程具有缓存、变量的TCP套接字主机或服务器进程具有缓存、变量的TCP套接字主机或服务器Internet由应用开发者控制15进程寻址主机有唯一的32位IP地址,但一台主机却能够运行许多进程。如何知道接收到的报文应该投递给哪个进程呢?每个进程需要一个标识(identifier)进程标识:包括IP地址和端口号(IP,port)比如:发送HTTP报文到web服务器,则需要如下信息:IPaddress:
2Portnumber:
801616应用程序需要运输层哪些运输要求?1.可靠数据传输非完全可靠数据传输:有些应用程序(e.g.,audio)可以容忍数据丢失完全可靠数据传输:另一些应用程序(e.g.,filetransfer,telnet)需要完全可靠的数据传输2.定时(Timing)定时保证,比如规定100ms端到端传输限制低时延保证3.吞吐量(Throughput)有些应用程序要求最低限度的吞吐量有些应用程序根据需要弹性利用可供使用的吞吐量4.安全性(Security)加密(Encryption)数据完整性(Integrity)端点鉴别(Authenticat-ion)17常见应用的传输服务需求时间敏感不不不是,100msec是,几秒是,100msec是和不是应用文件传输电子邮件Web实时音频/视频存储音频/视频交互式游戏即时讯息数据丢失不能丢失不能丢失不能丢失容忍丢失容忍丢失容忍丢失不能丢失带宽弹性弹性弹性音频:几kbps-1Mbps视频:10kbps-5Mbps同上几kbps以上弹性18因特网运输协议提供的服务TCP服务:面向连接的服务:在客户机程序和服务器程序之间必须建立连接可靠的传输服务:
接收和发送进程间流量控制:
发送方不会淹没接收方拥塞控制:
网络出现拥塞时抑制发送进程没有提供:实时性最小带宽保证UDP服务:不可靠数据传输没有提供:建立连接可靠性流量控制拥塞控制时延和带宽保证19因特网应用:应用层协议,传输协议应用电子邮件远程终端访问Web文件传输流媒体因特网电话应用层协议SMTP[RFC2821]Telnet[RFC854]HTTP[RFC2616]FTP[RFC959]通常专用(e.g.RealNetworks)通常专用(e.g.,Dialpad)下面的传输协议TCPTCPTCPTCPTCPorUDP典型用UDP20第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程21常用术语网页:(Web页,或称文档)由许多对象组成。
对象:就是文件,可以是HTML文件,JPEG图像,Javaapplet,音频文件…多数网页由单个基本HTML文件和若干个所引用的对象构成每个对象通过一个URL(UniformResourceLocator统一资源定位符)寻址举例URL:/someDept/pic.gif主机名路径名协议22HTML举例<html><body><ahref="../asdocs/html_tutorials/humor01.html"target="_blank">一则笑话</a><p>
如果你将target的属性值设成_blank,你点击这个链接的时候,网页就会在一个新窗口出现。</p></body></html>232.2.1HTTP概述HTTP:超文本传输协议HyperTextTransferProtocolWeb的应用层协议,建立在TCP运输层协议上client/server模式client:
浏览器browser请求接收解释并显示Web对象server:Web服务器响应请求,发送Web对象协议版本HTTP1.0:RFC1945HTTP1.1:RFC2616PCrunningExplorerServerrunningApacheWebserverMacrunningNavigatorHTTPrequestHTTPrequestHTTPresponseHTTPresponse24HTTP概述(续)使用TCP:客户发起TCP连接:客户初始化一个与HTTP服务器80端口的TCP连接服务器接收并建立TCP连接:HTTP服务器接收来自客户的TCP连接请求,建立连接交换HTTP消息:Browser(HTTPclient)和Web服务器(HTTPserver)交换HTTP消息(应用层协议消息),包括HTTP请求和响应消息结束:最后结束(或叫关闭)TCP连接HTTP是无状态协议HTTP服务器不维护客户先前的状态信息维护状态的协议非常复杂!必须维护过去历史(状态信息)如果server/client崩溃,它们各自的状态视图可能不一致。252.2.2HTTP连接2.持久HTTP连接一个TCP连接上可以传送多个对象HTTPv1.1默认使用持久HTTP连接1.非持久HTTP连接每个TCP连接上只传送一个对象HTTPv1.0使用非持久HTTP连接26响应时间模型1.往返时间(Round-TripTime,RTT):1个分组从客户主机到服务器再回到客户主机所花费的时间2.响应时间:1个RTT用于建立TCP连接1个RTT用于HTTP请求/响应消息的交互Html文件总响应时间:total=2RTT+transmittime传输文件的时间发起TCP连接RTT请求文件RTT接收整个文件客户机的时间服务器的时间27(1).非持久HTTP连接假设用户输入URL
http://www.someS/someDepartment/home.index1a.
初始化1个与服务器主机HTTP服务器的TCP连接
2.
发送1个HTTP请求消息(包含URL)到TCP连接套接字(此消息指出客户需要Web对象someDepartment/home.index)1b.在80端口监听来自HTTP客户的TCP连接请求;
收到连接请求后,接受并建立连接,通知客户3.HTTP服务器接收请求消息,产生1个响应消息(包含被请求html文件),并发送这个消息到自身TCP连接套接字time网页由1个HTML文件,和10个jpeg图像构成www.someS服务器用户HTTP客户机4.HTTP服务器结束TCP连接.5.HTTP客户接收并解析html文件,显示html文件(仅得到10个jpeg对象的引用)对10个引用jpeg对象的每1个重复步骤1-5总计需要做11次TCP链接28(2)持久HTTP连接非持久HTTP连接的问题:每个对象需要2个RTT操作系统必须为每个TCP连接分配主机资源大量客户的并发TCP连接形成服务器的严重负担
以上例子需11次TCP连接持久HTTP连接服务器发送响应消息后保持连接同1客户/服务器的后续HTTP消息继续在该连接上传送以上例子需1次TCP连接292.2.3HTTP报文格式2类HTTP报文请求报文request响应报文response报文采用ASCII文本
(易于人读格式)301.HTTP请求报文URL版本spcrlfsp方法值spcrlf首部字段名:值spcrlf首部字段名:crlf请求行首部行空行实体主体注:URL=UniformResourceLocator31举例GET/somedir/page.htmlHTTP/1.1Host:User-agent:Mozilla/4.0//代理对象版本Connection:Close//不使用持久连接Accept-language:zh-cn//中文版本(额外的回车换行)
请求行首部行方法URLHTTP版本回车换行指示结束32方法类型HTTP/1.0GET请求一个对象POST用户提交表单HEAD服务器收到请求时,用HTTP报文进行响应,但不返回请求对象应用程序开发者常用来故障跟踪HTTP/1.1GETPOSTHEADPUT文件在实体主体中被上载到URL字段指定的路径DELETE删除URL字段指定的文件33上载表单(各字段)输入值Post方法:网页时常包含表单输入输入值在请求报文的实体主体中被上载到服务器URL方法:使用GET方法表单(各字段)输入值被上载,以URL请求行的字段:/animalsearch?monkeys&banana341.HTTP响应报文状态码短语spcrlfsp版本值spcrlf首部字段名:值spcrlf首部字段名:crlf状态行首部行空行实体主体352.HTTP响应消息HTTP/1.1200OKConnection:closeDate:Thu,06Aug199812:00:15GMTServer:Apache/1.3.0(Unix)Last-Modified:Mon,22Jun1998…...Content-Length:6821Content-Type:text/html
datadatadatadatadata...状态行(版本、状态编码、短语)首部行数据,e.g.,被请求的HTML文件36HTTP响应的状态码200OK请求成功,所请求信息在响应消息中返回301MovedPermanently所请求的对象已永久迁移,新的URL在本响应消息的(location:)头部指出400BadRequest该请求不能被服务器解读404NotFound服务器上不存在所请求文档505HTTPVersionNotSupported位于服务器响应报文的第一行几个常见的样本状态码:372.2.4用户与服务器交互:CookiesHTTP服务器是无状态的优点在于:简化服务器设计,可同时处理数以千计的TCP链接,提高了Web服务器的处理性能无状态HTTP服务器无法识别用户,难以实现:限制用户的访问跟踪用户的访问为此,RF2109定义了Cookie38用户与服务器交互:CookiesCookies的4个重要方面:1)cookie首部行-在HTTP响应报文中2)cookie首部行-在HTTP请求报文中3)cookie文件-保存在用户主机中并被用户浏览器管理4)cookie-保存在Web站点的后端数据库39举例:李四总是使用同台PC访问Internet他首次访问1个电子商务网站当他最初发出HTTP请求访问该站点时,该站点创建一个唯一的ID,并在后端数据库创建一个该ID表项40Cookies:跟踪用户(续.)clientserverusualhttprequestmsgusualhttpresponse+Set-cookie:1678usualhttprequestmsgcookie:1678usualhttpresponsemsgusualhttprequestmsgcookie:1678usualhttpresponsemsgcookie-specificactioncookie-spectificactionservercreatesID1678foruserentryinbackenddatabaseaccessaccessCookiefile李四:1678CookiefileCookiefile李四:1678一周后:41Cookies:跟踪用户(续.)Cookies可以带来什么?身份认证虚拟购物车(跟踪用户购买的物品)推荐广告用户会话状态(Webe-mail)Cookies和隐私:cookies允许网站更加了解你你可以提供名字和e-mail给网站补充422.2.5Web缓存(代理服务器)WebCache(ProxServer):anetworkentitythatsatisfiesHTTPrequestsonthebehalfofanoriginWebserver用户配置浏览器:Web访问经由代理服务器所有HTTP请求指向缓存若对象在缓存中,缓存器返回对象否则,缓存器向起始服务器发出请求,接收对象后再转发给客户机客户机代理服务器客户机HTTP请求HTTP请求HTTP响应HTTP响应HTTP请求HTTP响应起始服务器起始服务器HTTP请求HTTP响应43为何使用Web缓存?减少客户请求的响应时间减少机构接入链路的拥塞加强网络内容提供商的内容分发能力originserverspublicInternetinstitutionalnetwork10MbpsLAN1.5Mbpsaccesslinkinstitutionalcache43Web缓存同时作用于客户端和服务器端典型缓存器由ISP安装(university,company,residentialISP)注:44缓存器举例假设对象平均长度=1Mbits机构内的浏览器对对象的平均访问速率=15个对象请求/sec因特网时延=2sec结论局域网上的流量强度:15*1M/100Mbps=0.15链路上的流量强度:15*1M/15M=1总延时=因特网时延+接入时延+局域网时延
=2秒+数分钟+数毫秒起始服务器公共
Internet机构网络100MbpsLAN15Mbps接入链路总时延很大,请求的平均响应时间以分钟计45缓存器举例(续)解决办法之一:增加接入提高链路的速率链路上的流量强度=15%结论局域网上的流量强度=15%总时延=因特网时延+接入时延+局域网时延
=2秒+数毫秒+数毫秒其缺陷在于需要较大的投资起始服务器公共
Internet机构网络100MbpsLAN15Mbps接入链路100Mbps接入链路46缓存器举例(续)解决办法之二:安装缓存器假设缓存器命中率为0.4结论40%请求立即会得到响应60%的请求通过访问起始服务器满足链路上的流量强度减为0.6,可以忽略不计总的平均延时=因特网时延+接入时延+局域网时延=0.6*(2.01)秒+数毫秒<1.4秒起始服务器公共
Internet机构网络10MbpsLAN1.5Mbps接入链路机构缓存器47结论方案二比方案一的响应时延更低方案二不需升级因特网的接入链路购买和安装Web缓存器成本更低廉482.2.6条件GET方法问题:Web服务器中的对象可能已被修改,而代理服务器中的对象变得陈旧,如何保证用户访问到最新的对象呢?解决办法:条件GET方法缓存器:在请求报文中包含对象最后修改时间If-modified-since:<date>服务器:
如果对象是最新的则响应报文中不包含对象:HTTP/1.0304NotModified49cacheserverHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0304NotModifiedobjectnotmodifiedHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0200OK<data>objectmodified50第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP
2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程*2.9构造一个简单的Web服务器51FTP:文件传输协议
FileTransferProtocol传输文件到远程主机/从远程主机下载文件client/server模式client:
发起传输的一方server:远程主机ftp:RFC959ftp服务器:端口号21文件传输FTP服务器FTP用户接口FTP客户机本地文件系统远程文件系统用户52FTP数据传输过程1.FTP客户首先发起建立1个与FTP服务器端口号21之间的TCP控制连接,指定TCP作为传输层协议2.客户在建立的控制连接上获得身份认证3.客户在建立的控制连接上发送命令来浏览远程主机的目录.4.当服务器接收到1个文件传输命令时,在服务器端口号20创建1个与客户的TCP数据连接5.1个文件传输后,服务器结束这个TCP数据连接.53独立的控制连接,数据连接数据连接:传输下一个文件则另外打开一个TCP数据连接控制连接:带外(out-of-band)发送控制信息FTP服务器要维护用户状态信息:当前目录,先前的身份认证FTP客户机FTP服务器TCP控制连接端口
21TCP数据连接端口
2054ftp命令,响应命令样例:在控制通道上传送的ASCII文本USERusername(登录)PASSpassword(登录)LIST
(返回当前目录中的文件列表)RETRfilename
(取(gets)文件)STORfilename
(存(puts)文件到远程主机)返回码样例状态码和短语(同http)331UsernameOK,passwordrequired125dataconnectionalreadyopen;transferstarting425Can’topendataconnection452Errorwritingfile5455第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器56电子邮件3个主要组成部分:
用户代理useragents邮件服务器mailservers简单邮件传送协(SMTP)用户邮箱外出报文队列mailserveruseragentuseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP123571.电子邮件:用户代理允许用户阅读、回复、转发、保存和编辑邮件消息通过运行邮件协议,发送消息到邮件服务器或从服务器上接收邮件消息例如:Outlook,foxmail等582.电子邮件:邮件服务器邮件服务器包括:
1.邮箱mailbox
存放用户接收的邮件消息2.外出报文队列outgoing
message
queue3.邮件协议用在邮件服务器之间发送邮件useragentmailserveruseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP593.电子邮件:SMTP协议[RFC5321]
SimpleMailTransferProtocol使用TCP可靠数据传输服务,传输邮件消息到服务器端口号25直接传送:发送邮件服务器到接收邮件服务器传输的3个阶段握手(问候)邮件消息的传输结束协议采用命令/应答的交互命令:ASCII文本格式应答:
状态码及其短语邮件消息必须是7-bitASCII60例子:Alice发送邮件消息到Bob1)Alice使用用户代理编写邮件消息(给bob@的)2)Alice的用户代理发送邮件消息到她的邮件服务器;邮件消息存放在邮件消息队列3)Alice邮件服务器的SMTP客户端发起建立一个到Bob的邮件服务器的SMTP服务器端的TCP连接.4)SMTP客户在这个TCP连接上发送Alice的邮件消息5)Bob服务器存放邮件消息存到Bob的邮箱6)Bob调用他的用户代理读邮件消息useragentmailservermailserveruseragent123456useragent1useragent1useragent61SMTP客户和服务器的命令交互S:220C:HELOcrepes.frS:250Hellocrepes.fr,pleasedtomeetyouC:MAILFROM:<alice@crepes.fr>S:250alice@crepes.fr...SenderokC:RCPTTO:<bob@>S:250bob@...RecipientokC:DATAS:354Entermail,endwith"."onalinebyitselfC:Doyoulikeketchup?C:Howaboutpickles?C:.S:250MessageacceptedfordeliveryC:QUITS:221closingconnection62SMTP:总结SMTP使用持久连接SMTP要求邮件消息(header&body)必须是7-bitASCIISMTP服务器使用CRLF.CRLF
来判断邮件消息的结束与HTTP的比较:相同点:在主机间传输文件持久连接ASCII命令/应答交互,状态码不同点:HTTP:拉协议(Pull),SMTP:推协议(Push)SMTP要求7-bitASCII编码,HTTP无此要求HTTP每个对象封装在各自HTTP响应消息中;SMTP的各个对象置于同一个邮件消息中发送63邮件消息的格式RFC822定义文本邮件消息格式标准:信头-头部行。如:To:From:Subject:信体邮件消息也必须是ASCII字符headerbodyblankline64MIME引入RFC822描述只适合普通ASCII文本对多媒体报文(如图片、音视频)或非ASCII文本格式(如非英语语言字符)的报文处理无法满足RFC2045,2046定义了RFC822的扩展MIME:MultipurposeInternetmailExtensions(多用途因特网邮件扩展)65MIME头部格式增添额外的两个关键信头声明:content-typecontent-transfer-encodingFrom:alice@crepes.frTo:bob@Subject:Pictureofyummycrepe.MIME-Version:1.0Content-Transfer-Encoding:base64Content-Type:image/jpegbase64encodeddata
base64encodeddata
多媒体数据类型名,子类型名,参数声明用来编码数据的方法MIME版本编码后的数据66邮件访问协议邮件访问协议:从服务器获取邮件消息POP:PostOfficeProtocol邮局协议[RFC1939]110端口号身份认证(代理<-->服务器),下载邮件消息IMAP:InternetMessageAccessProtocol[RFC3501]143端口更多功能特征(更复杂!)允许用户像对待本地邮箱那样操纵远程邮箱的邮件基于Web的电子邮件,比如Yahoo,Google等useragentsender’smailserveruseragentSMTPSMTPaccessprotocolreceiver’smailserver67POP3协议:第三版POP协议1.身份认证阶段authorizationphase客户命令:userusernamepasspassword服务器响应+OK-ERR
C:listS:1498S:2912S:.C:retr1S:<message1contents>S:.C:dele1C:retr2S:<message1contents>S:.C:dele2C:quitS:+OKPOP3serversigningoffS:+OKPOP3serverreadyC:userbobS:+OKC:passhungryS:+OKusersuccessfullyloggedon2.传输阶段transactionphase客户命令:list:列出邮件编号retr:按编号取邮件dele:删除quit68第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器69DNS:域名系统DomainNameSystem人可以有很多标识:ID,name,passport主机和路由器标识:IPaddress(32bit)–
用于分组寻址“主机名”–
用于人记忆识别,比如Q:可以在IP地址和主机名之间建立映射吗?域名系统
DomainNameSystem域名系统(DNS)分布式数据库:一个由分层DNS服务器实现的分布式数据库应用层协议:DNS服务器实现域名转换的应用层协议(域名/地址转换)DNS协议运行在UDP之上,使用53号端口702.5.1DNS提供的服务DNS服务器提供的服务:1.主机名到IP地址的转换2.主机别名一个主机可以有一个规范主机名和多个主机别名比如,名为的主机,可能有别名或3.邮件服务器别名比如,是邮件服务器,Bob的邮箱可以是简单的bob@4.负载分配DNS实现冗余服务器:一个IP地址集合可以对应于同一个规范主机名。712.5.2DNS工作原理DNS采用分布式,为什么不集中式?单点故障如果DNS服务器崩溃,则整个Internet随之瘫痪通信容量单个DNS服务器为上亿台主机服务远距离集中式数据库导致严重时延维护中央数据库非常庞大,需维护所有主机记录完全没有可扩展能力72举例:分布式、层次结构根DNS服务器comDNS服务器orgDNS服务器eduDNS服务器DNS服务器DNS服务器DNS服务器DNS服务器DNS服务器客户机怎样决定主机名的IP地址?客户机查询根服务器得到comDNS服务器客户机查询comDNS服务器得到DNS服务器客户机查询DNS服务器得到的IP地址顶级域服务器权威服务器73一、根DNS服务器RootDNSservers根DNS服务器负责记录顶级域名服务器的信息bUSC-ISIMarinadelRey,CAlICANNMarinadelRey,CAeNASAMtView,CAfInternetSoftwareC.PaloAlto,CAiNORDUnetStockholmkRIPELondonmWIDETokyoaNSIHerndon,VAcPSInetHerndon,VAdUMarylandCollegePark,MDgDISAVienna,VAhARLAberdeen,MDjNSI(TBD)Herndon,VAInternet有13个跟DNS服务器,大部分在北美74二、顶级域服务器(TLD)顶级域服务器负责管理
顶级域名,比如com,org,net,edu,etc国家的顶级域名,比如uk,fr,ca,jp,etcNetworksolutions公司维护com顶级域的TLD服务器Educause公司维护edu顶级域的TLD服务器75三、权威DNS服务器权威DNS服务器在因特网上,具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将可访问主机的名字映射为IP地址。组织机构的权威DNS服务器负责保存这些DNS记录。多数大学和公司维护它们的基本权威DNS服务器76特殊DNS:本地DNS服务器本地DNS服务器也叫默认名字服务器,Defaultnameserver严格来说,本地DNS服务器不属于DNS服务器的层次结构每个ISP(如居民区ISP、公司、大学)都有一台本地DNS当主机发出DNS请求时,该请求被发往本地DNS服务器本地DNS服务器起着代理的作用,转发请求到层次结构中77四类服务器交互查询请求主机客户机根DNS服务器本地域名服务器123456权威DNS服务器78顶级域服务器78DNS查询方法一递归查询:名字解析的负担交给被查询的DNS服务器被查询的DNS服务器负载重requestinghostrootDNSserverlocalDNSserver12456authoritativeDNSserver78TLDDNSserver379requestinghostrootDNSserverlocalDNSserver123456authoritativeDNSserver78TLDDNSserverDNS查询方法二迭代查询:被查询的DNS服务器回复下一层可以被查询的DNS服务器的IP地址80DNS缓存和记录更新为改善时延性能和减少Internet上DNS报文数量,引入DNS缓存(DNScaching)一旦DNS服务器获得DNS映射,它将缓存该映射到本地存储器服务器在一定时间后将丢弃缓存的信息本地DNS服务器可以缓存TLD服务器的IP地址,因此根DNS服务器不会被经常访问812.5.3DNS记录和报文DNS:
存储资源记录(RR,ResourceRecords)的分布式数据库Type=NSname=域名value=DNS服务器的主机名例:(,,NS,2)RR格式:(name,value,type,ttl)Type=Aname=主机名value=IP地址例:(R,26,A,2)82Type=CNAMEname=主机别名value=真实的规范主机名例:(,,CNAME,2)Type=MXname=邮件服务器的主机别名value=邮件服务器的真实规范主机名例:(,,MX,2)
83DNS协议,消息DNS协议:
查询报文与应答报文
,但具有相同的报文格式报文头部标识符:
标识查询,16位,查询和应答报文使用相同的标识符标志:有若干个标志构成,分别标识不同的功能查询/应答-0/1查询希望是/非递归查询-1/0应答可/否获得(支持)递归查询-1/0应答是/否来自权威名字服务器-1/0附加信息(资源记录的变量数)权威(资源记录的变量数)回答(资源记录的变量数)问题(问题的变量数)附加RR数权威RR数回答RR数问题数标志标识符12字节84DNS协议,消息问题部分查询的Name,type
回答部分对于查询,应答的资源记录可以多个资源记录,由于可以有多个IP地址权威部分权威名字服务器的其他资源记录附加信息部分其他有帮助的记录.附加信息(资源记录的变量数)权威(资源记录的变量数)回答(资源记录的变量数)问题(问题的变量数)附加RR数权威RR数回答RR数问题数标志标识符12字节85在DNS数据库中插入记录例:刚刚创建一个“网络”公司如果你想在注册登记机构注册你的域名,则需要提供你自己的权威DNS服务器名字和IP地址该注册登记机构将下列两条资源记录插入注册机构的DNS系统中:(,,NS)(,,A)如果你想建立一个网站,则可以将网址以类型A的方式记录到你的权威DNS服务器中。如果你想建一个邮件服务器,则可以将以类型MX的方式记录到你的权威DNS服务中。86第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器87P2P文件共享举例Alice在家用PC上运行一个P2P文件共享应用软件每次重新连接因特网时,得到新的IP地址寻找“HeyJude”应用程序显示有“HeyJude”拷贝的其他对等方Alice选择一个对等方Bob.文件从Bob的PC上拷贝在Alice的PC上:HTTP当Alice在下载时,其他用户也在从Alice的PC下载Alice的对等方既是一个Web服务器,又是一个瞬时Web服务器所有的对等方都是服务器=高扩展性88P2P:集中式目录“Napster”公司的设计1)当对等方启动时,它通知目录服务器以下信息IP地址可供共享的对象名称2)Alice查询文件“HeyJude”3)Alice向Bob请求文件centralizeddirectoryserverpeersAliceBob11112389P2P:集中式目录的问题单点故障性能瓶颈侵犯版权
文件传输是分散的,但是定位内容的过程是高度集中的90查询洪泛:Gnutella全分布没有集中式服务器公共域协议许多Gnutella客户机实现Gnutella协议覆盖网络:graph如果对等方X和Y维护了一条TCP连接,则说X和Y之间有一条边所有活跃的对等方和边组成覆盖网络边不是物理通信链路给定对等方连接的覆盖网络路径中的节点少于10个,即TTL小于1091Gnutella:协议QueryQueryHitQueryQueryQueryHitQueryQueryQueryHitFiletransfer:HTTP
查询报文在已有的TCP连接上发送对等方转发报文
QueryHit
报文按反向路径传送可扩展性:限范围泛洪92Gnutella:加入对等方加入对等方X必须发现在Gnutella网络中的其他对等方:使用对等方列表。X视图与该列表上的对等方建立一条TCP连接,直到与Y创建一条连接。X向Y发送一个Ping报文;Y转发该Ping报文。所有的对等方接收Ping报文并响应一个Pong报文。X接收到许多Pong报文。然后能同某些其他对等方建立TCP连接。93Gnutella:对等方离开主动离开:离开接点的所有对等方都会刷新自身的激活对等方列表,并开始与列表中的新的对等方建立连接断网:发送信息的时候对等方没有响应,则表明对等方离开,节点刷新自身的激活对等方列表,并开始与列表中的新的对等方建立连接94KaZaA每个对等方要不被指派为组长,要不被指派给一个组长对等方和组长之间建立TCP连接组长之间建立TCP连接组长维护它的子对等方共享的内容95KaZaA每个文件有文件的散列码标识客户机送向组长发送关键词的查询组长响应匹配逐项匹配:元数据,散列值,IP地址如果组长转发查询给其他组长则其他组长响应匹配客户端选择要下载的文件96KaZaA请求排队:限制对等方并行上载数量,新的请求进行排队。激励优先权:根据不同的上载下载比例优先服务贡献大者。并行下载:将一个文件分成若干段,从多个对等方并行下载。97第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器98Socket套接字编程SocketAPI1981提出于BSD4.1UNIX,网络应用程序明确的创建,使用及释放套接字client/server模式通过SocketAPI,提供传输层的2类传输服务:不可靠的数据报传输可靠的字节流传输1.套接字是一个主机本地应用程序所创建的,为操作系统所控制的接口(“门”).2.应用进程通过这个接口,使用传输层提供的服务,跨网络发送(/接收)消息到(/从)其他应用进程。socket目的:
学会如何开发采用套接字通信的C/S网络应用程序。
99用TCP进行套接字编程Socket:
应用进程和传输层协议(UCPorTCP)之间的门。TCP服务:
从1个进程到另1个进程的字节流的可靠传输。processTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverprocessTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverinternet100客户必须初始联系服务器服务器进程必须先运行服务器进程必须创建套接字(门)来迎候客户的初始联系客户如何初始联系服务器创建客户本地TCPsocket指定服务器进程的IP地址,端口号一旦客户创建套接字,客户TCP就发起3次握手并建立与服务器TCP的连接一旦客户初始联系(敲门)服务器,服务器TCP为服务器进程创建1个新的socket与客户进程通信允许服务器与多个客户通信源端口号被用来区分客户
(详见第三章)TCP为客户和服务器提供了可靠的,顺序的,字节流的传输(“管道”)。从应用程序的角度来看用TCP进行套接字编程(续)101流(Stream)的概念流是流入或流出一个进程的一串字符.输入流被加在进程的某个输入源上,eg,标准输入(键盘)或套接字.输出流被加在进程的某个输出源上,eg,标准输出(显示器)或套接字.102客户机/服务器应用程序示例:1)客户从它的标准输入读入一行(inFromUserstream),将该行发送到通往服务器的套接字(outToServerstream)2)服务器从它的连接套接字读入一行3)服务器将该行转换成大写,然后送回客户机4)服务器将修改后的行通过其连接套接字再发回给客户机5)客户从它的套接字中读取、输出修改后的行(inFromServerstream)ClientprocessclientTCPsocketTCP套接字编程103TCP客户/服务器套接字交互流程:等待入连接请求connectionSocket=welcomeSocket.accept()对入请求创建套接字,port=xwelcomeSocket=ServerSocket()创建与hostid,port=x连接的套接字clientSocket=Socket()关闭connectionSocket从clientSocket读应答关闭clientSocket服务器(在hostid上运行)客户机使用clientSocket发送请求读请求connectionSocket写应答connectionSocketTCP连接建立104Java编写的TCP客户程序示例importjava.io.*;import.*;classTCPClient{publicstaticvoidmain(Stringargv[])throwsException{Stringsentence;StringmodifiedSentence;BufferedReaderinFromUser=newBufferedReader(newInputStreamReader(System.in));SocketclientSocket=newSocket("hostname",6789);DataOutputStreamoutToServer=newDataOutputStream(clientSocket.getOutputStream());
CreateinputstreamCreateclientsocket,connecttoserverCreateoutputstreamattachedtosocket包含输入和输出类程序用到BufferedReader和DataOutputStream类包含网络支持类程序用到socket和serversocket类105
BufferedReaderinFromServer=newBufferedReader(newInputStreamReader(clientSocket.getInputStream()));sentence=inFromUser.readLine();outToServer.writeBytes(sentence+'\n');modifiedSentence=inFromServer.readLine();System.out.println("FROMSERVER:"+modifiedSentence);clientSocket.close();
}}
CreateinputstreamattachedtosocketSendlinetoserverReadlinefromserverJava编写的TCP客户程序示例(续)106Java编写的服务程序示例importjava.io.*;import.*;classTCPServer{publicstaticvoidmain(Stringargv[])throwsException{StringclientSentence;StringcapitalizedSentence;ServerSocketwelcomeSocket=newServerSocket(6789);
while(true){
SocketconnectionSocket=welcomeSocket.accept();BufferedReaderinFromClient=newBufferedReader(newInputStreamReader(connectionSocket.getInputStream()));
Createwelcomingsocketatport6789Wait,onwelcomingsocketforcontactbyclientCreateinputstream,attachedtosocket107Java编写的服务程序示例(续)DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());
clientSentence=inFromClient.readLine();capitalizedSentence=clientSentence.toUpperCase()+'\n';outToClient.writeBytes(capitalizedSentence);connectionSocket.close();}}}
ReadinlinefromsocketCreateoutputstream,attachedtosocketWriteoutlinetosocketEndofwhileloop,loopbackandwaitforanotherclientconnection108第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器109用UDP进行套接字编程UDP:客户和服务器之间没有连接没有初始握手阶段发送方明确将接收方的IP地址和端口号加入每个分组(1批字节+头部)服务器必须从接收到的分组中析取发送方进程的IP地址,端口号UDP:发送数据可能被乱序收到或丢失UDP在客户和服务器之间提供一组字节(“datagrams”)的不可靠传输
从应用程序的角度来看110UDP客户/服务器套接字交互流程:关闭clientSocketServer(在hostid上运行)从clientSocket读应答创建套接字clientSocket=DatagramSocket()客户机创建地址(hostid,port=x)使用clientSocket发送数据报请求对入请求创建套接字port=xserverSocket=DatagramSocket()从serverSocket读请求向serverSocket写应答指定客户机主机地址、端口号111举例:Java编写的UDP客户程序Output:sendspacket(TCPsent“bytestream”)Input:receivespacket(TCPreceived“bytestream”)ClientprocessclientUDPsocket112举例:Java编写的UDP客户程序importjava.io.*;import.*;
classUDPClient{publicstaticvoidmain(Stringargs[])throwsException{
BufferedReaderinFromUser=newBufferedReader(newInputStreamReader(System.in));
DatagramSocketclientSocket=newDatagramSocket();
InetAddressIPAddress=InetAddress.getByName("hostname");
byte[]sendData=newbyte[1024];byte[]receiveData=newbyte[1024];
Stringsentence=inFromUser.readLine();sendData=sentence.getBytes();
Createinputstre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 泉州幼儿师范高等专科学校《数字系统与逻辑设计》2023-2024学年第二学期期末试卷
- 南京农业大学《中国文学批评史》2023-2024学年第二学期期末试卷
- 泉州海洋职业学院《算法设计与分析》2023-2024学年第二学期期末试卷
- 重庆航天职业技术学院《专业技能训练数据库应用系统开发实验教学》2023-2024学年第二学期期末试卷
- 西双版纳职业技术学院《浙江现代作家作品研究》2023-2024学年第二学期期末试卷
- 乾安县2025届三年级数学第二学期期末综合测试试题含解析
- 上海纽约大学《分子生物学基础》2023-2024学年第二学期期末试卷
- 泉州师范学院《应急管理与工程》2023-2024学年第二学期期末试卷
- 山东新泰莆田2024-2025学年初三下学期质量检查(I)物理试题含解析
- 山东畜牧兽医职业学院《发育生物学与再生医学》2023-2024学年第二学期期末试卷
- 2024年云南省烟草专卖局毕业生招聘考试真题
- 青岛市李沧区教育系统招聘中小学教师笔试真题2024
- 福建省部分地市2025届高中毕业班4月诊断性质量检测英语试题(含答案无听力音频无听力原文)
- 私人飞机转让协议书
- 急诊护理人文关怀成效汇报
- 2024北京中学高二(下)期中数学试题及答案
- 电力技术监督专责人员上岗资格考试题库汽轮机技术监督分册
- 榜样的力量有一种力量叫榜样的力量课件
- 搅拌站的施工方案
- 特种设备安全使用操作培训课件3
- 供应链管理师考试的终极试题及答案
评论
0/150
提交评论