爱问 爱问共享资料 爱问分类
首页 > > > TopDownV3-2.ppt

TopDownV3-2.ppt

TopDownV3-2.ppt

上传者: fayelovelu
7次下载 0人收藏 暂无简介 简介 2011-06-26 举报

简介:计算机网络中文版课件

null第2章应用层ApplicationLayer第2章应用层ApplicationLayer计算机网络:自顶向下方法(原书第三版)陈鸣译,机械工业出版社,2005年ComputerNetworking:ATopDownApproachFeaturingtheInternet,3rdedition.JimKurose,KeithRossAddison-Wesley,July2004.第2章应用层第2章应用层我们的目标:网络应用协议的概念,实现方面运输层服务模型客户机/服务器模式对等范例通过考察流行的应用级协议,学习协议HTTPFTPSMTP/POP3/IMAPDNS网络应用编程套接字API第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器某些网络应用某些网络应用E-mailWeb即时讯息远程注册P2P文件共享多用户网络游戏流式存储视频片段因特网电话实时视频会议大规模并行计算创建一个网络应用创建一个网络应用编写程序能够能够在不同的端系统上运行能够通过网络通信如Web:Web服务器软件与浏览器软件通信没有为网络核心的设备书写的软件网络核心设备不作用于应用层这种设计使得能够快速开发应用应用体系结构应用体系结构客户机/服务器对等(P2P)客户机/服务器与P2P的混合客户机/服务器体系结构客户机/服务器体系结构服务器:总是打开的主机永久的IP地址可扩展为服务器池客户机:与服务器通信可以间歇地连接可以具有动态的IP地址彼此不直接地通信纯P2P体系结构纯P2P体系结构无总是打开的服务器任意的端系统直接通信对等方间歇地连接,改变IP地址例子:Gnutella高度地可扩展但是难以管理客户机/服务器与P2P的混合客户机/服务器与P2P的混合Napster文件传送P2P集中式文件搜索:对等方在中心服务器上注册内容对等方查询相同的中心服务器以定位内容即时讯息在两个用户之间聊天是P2P集中式的出席检测/定位:用户当他在线时,向中心服务器注册其IP地址用户联系中心服务器以发现伙伴的IP地址进程通信进程通信进程:在一台主机上运行的程序。在同一台主机中,两个进程使用进程间通信IPC(由操作系统定义)通信.在不同的主机中的进程通过交换报文通信客户机进程:发起通信的进程服务器进程:等待联系的进程注意:具有P2P体系结构的应用程序具有客户机进程和服务器进程套接字套接字进程从/来自它的套接字发送/接收报文套接字类似于门发送进程将报文推出门外发送进程依赖门的另一侧运输层基础设施,它将报文送到接收进程的套接字具有缓存、变量的TCP套接字主机或服务器具有缓存、变量的TCP套接字主机或服务器因特网由操作系统控制由应用研发者控制应用程序接口API:(1)选择运输协议;(2)确定一些参数的能力(详情见后)寻址进程寻址进程表示符包括IP地址和与主机上该进程相关的端口号.端口号例子:HTTP服务器:80电子邮件服务器:25详情见后对于接收报文的进程,必须具有一个标识一台主机具有一个独特的32比特的IP地址问题:在主机的IP地址足以标识该进程?答案:在同一台主机上能够运行许多进程应用层协议定义应用层协议定义交换的报文类型,如请求和响应报文报文类型的语法:报文中的各字段以及字段的定界字段的语义,即字段中信息的含义进程何时、怎样发送和响应报文的规则公共域协议:在RFC中定义允许具有互操作性例如,HTTP,SMTP专用协议:如,KaZaA应用程序需要什么样的运输服务?应用程序需要什么样的运输服务?数据丢失某些应用(如音频)能够容忍某些丢失其他应用(如文件传输,Telnet)要求100%可靠数据传输定时某些应用(如因特网电话、交互式游戏)要求“有效的”低时延带宽某些应用(如多媒体)要求“有效的”最小量的带宽其他应用(”弹性应用“)充分利用它们获得的所有带宽普通应用的运输服务要求普通应用的运输服务要求应用程序文件传输电子邮件Web文档实时音频/视频存储音频/视频交互式游戏即时讯息数据丢失不能丢失不能丢失不能丢失容忍丢失容忍丢失容忍丢失不能丢失带宽弹性弹性弹性音频:5kbps-1Mbps视频:10kbps-5Mbps同上几kbps以上弹性时间敏感不不不是,100’smsec是,几秒是,100msec是和不是因特网运输协议服务因特网运输协议服务TCP服务:面向连接:客户机和服务器之间所需的建立可靠传输:在发送和接收进程之间流控制:发送方不会淹没接收方拥塞控制:当网络过载时抑制发送方并不提供:定时,最小带宽保证UDP服务:在发送进程及接收进程之间的不可靠数据传输不提供:建立连接建立,可靠性,流控,拥塞控制,定时或带宽保证问题:为什么这么麻烦?为什么需要UDP?因特网应用:应用协议与运输协议因特网应用:应用协议与运输协议应用应用层协议下面的传输协议电子邮件SMTP[RFC2821]TCP远程终端访问Telnet[RFC854]TCPWebHTTP[RFC2616]TCP文件传输FTP[RFC959]TCP远程文件服务器NFS[McKusik1996]UDP或TCP流媒体通常专用(如RealNetworks)UDP或TCP因特网电话通常专用(如Net2phone)典型用UDP第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器Web和HTTPWeb和HTTP某些术语Web页由对象组成对象可以是HTML文件,JPEG图片,Java小程序,音频文件,…Web页由基本的HTML文件组成,基本的HTML文件包括了几个引用对象每个对象可由URL寻址URL的例子:HTTP概况HTTP概况HTTP:超文本传送协议Web的应用层协议客户机/服务器模式客户机:请求、接收,”显示“Web对象浏览器服务器:Web服务器响应请求而发送对象HTTP1.0:RFC1945HTTP1.1:RFC2068PC运行Explorer服务器运行ApacheWeb服务器Mac运行NavigatorHTTP请求HTTP请求HTTP响应HTTP响应HTTP概述(续)HTTP概述(续)使用TCP:客户机向服务器发起TCP连接(产生套接字),端口80服务器从客户机接受TCP连接在浏览器(HTTP客户机)和Web服务器(HTPP服务器)之间交换HTTP报文(应用层协议报文)关闭TCP连接HTTP是”无状态的“服务器不保留有关客户机过去请求的任何信息维护“状态”的协议是复杂的!过去历史(状态)必须维护如果服务器/客户机崩溃,“状态”的视图可能不一致,必须要重新建立HTTP连接HTTP连接非持久HTTP至多一个对象经过一个TCP连接发送.HTTP/1.0使用非持久HTTP持久HTTP多个对象能够经过客户机和服务器之间的单个TCP连接发送.HTTP/1.1以默认模式使用持久连接非持久HTTP非持久HTTP假定使用输入URLwww.someSchool.edu/someDepartment/home.index1a.HTTP客户机向HTTP服务器(进程)的80端口的www.someSchool.edu发起TCP连接2.HTTP客户机发送HTTP请求报文(包含URL)进TCP连接套接字.报文指示客户机要对象someDepartment/home.index1b.在主机www.someSchool.edu的HTTP服务器在80端口等待TCP连接“接受”连接,通知客户机3.HTTP服务器接收请求报文,形成响应报文包含请求对象,并向套接字其发送报文time(包括文本和对10个jpeg图片的引用images)非持久HTTP(续)非持久HTTP(续)5.HTTP客户机接收包含html文件的响应报文,显示html.解析html文件,发现10个引用的jpeg对象6.对10个hpeg对象重复步骤1-54.HTTP服务器关闭TCP连接time响应时间建模响应时间建模往返时延RRT的定义:从客户机到服务器发送一个小分组并返回所历经的时间.响应时间:一个RTT发起TCP连接对HTTP请求和返回的HTTP响应前几个字节的一个RTT文件传输时间总计=2RTT+传输时间传输文件的时间发起TCP连接RTT请求文件RTT接收的文件时间时间持久HTTP持久HTTP非持久HTTP问题:每个对象要求2RTT操作系统必须为每个TCP连接工作并分配逐级资源但浏览器经常打开并行TCP连接以获取引用的对象持久HTTP在发送响应后,服务器让连接打开在相同的客户机/服务器之间的后继HTTP报文通过该连接发送无流水线的持续:仅当前面的响应已经收到,客户机发出新的请求对每个引用对象一个RTT有流水线的持续:在HTTP/1.1为默认只要客户机遇到一个引用对象,它发送请求对于所有引用的对象花费一个RTT时间HTTP请求报文HTTP请求报文两类HTTP报文:请求,响应HTTP请求报文:ASCII(人可读的格式)GET/somedir/page.htmlHTTP/1.1Host:www.someschool.eduUser-agent:Mozilla/4.0Connection:closeAccept-language:fr(另外的回车,换行)请求行(GET,POST,HEAD命令)首部行回车,换行指示报文的结束HTTP请求报文:通用格式HTTP请求报文:通用格式上载表单输入上载表单输入Post方法:Web页经常包括表单输入在实体主体中的输入被上载到服务器URL方法:使用GET方法在请求行的URL字段中的输入被上载:www.somesite.com/animalsearch?monkeys&banana方法类型方法类型HTTP/1.0GETPOSTHEAD请求服务器许可响应请求的对象HTTP/1.1GET,POST,HEADPUT向URL字段中定义的路径,上载在实体主体中文件DELETE删除在URL字段中定义的文件HTTP响应报文HTTP响应报文HTTP/1.1200OKConnectioncloseDate:Thu,06Aug199812:00:15GMT服务器:Apache/1.3.0(Unix)Last-Modified:Mon,22Jun1998…...Content-Length:6821Content-Type:text/htmldatadatadatadatadata...状态行(协议状态码状态短语)首部行数据,如请求的HTML文件HTTP响应状态码HTTP响应状态码200OK请求成功,请求的对象在这个报文后面301MovedPermanently请求的对象已转移,新的URL在响应报文的Location:首部行中指定400BadRequest请求报文不为服务器理解404NotFound请求的文档没有在该服务器上发现505HTTPVersionNotSupported在服务器到客户机响应报文中的首行.一些编码的例子:你自行试验HTTP(客户机侧)你自行试验HTTP(客户机侧)1.Telnet到你喜欢的Web服务器上:打开到位于cis.poly.edu的端口80(默认的HTTP服务器端口).键入的任何东西将发送到位于cis.poly.edu的80端口telnetcis.poly.edu802.键入一个GETHTTP请求:GET/~ross/HTTP/1.1Host:cis.poly.edu通过键入这些(按回车两次),你向THHP服务器发送最小(但完整)的GET请求3.观察由HTTP服务器发送的响应报文!用户服务器状态:cookies用户服务器状态:cookies许多重要的Web站点使用cookies四个部分:1)在HTTP响应报文中的cookie首部行2)在HTTP请求报文中的cookie首部行3)保持在用户主机中的cookie文件并由用户浏览器管理4)位于Web站点的后端数据库例子:Susan总是从相同的PC访问因特网她首次访问一个特定的电子商务站点当起始HTTP请求到达站点时,站点产生一个独特的ID,并为ID在后端数据库中生成一个表项Cookies:保持“状态”(续)Cookies:保持“状态”(续)服务器为用户生成ID1678后端数据库中的表项访问访问一个星期以后:Cookies(续)Cookies(续)cookies能够做:鉴别购物车推荐用户会话状态(Web电子邮件)Cookies和隐私:Cookies使得站点了解你许多东西你可能向站点提供名字和电子邮件搜索引擎使用重定向和cookies来知道更多跨越站点获得信息,以向公司作广告Web缓存(代理服务器)Web缓存(代理服务器)用户设置浏览器:经过缓存访问浏览器向缓存发送所有HTTP请求对象在缓存中:缓存返回对象否则缓存向起始服务器请求对象,然后向客户机返回对象目标:满足客户机请求而不涉及起始服务器客户机代理服务器客户机HTTP请求HTTP请求HTTP响应HTTP响应HTTP请求HTTP响应起始服务器起始服务器Web缓存更多情况Web缓存更多情况缓存充当客户机和服务器缓存通常由ISP(大学,公司和住宅ISP)安装维和使用Web缓存?减小客户机请求的响应时间减小机构访问链路的流量因特网密集安装缓存使得内容提供商能有效地交付内容(对P2P文件共享也是这样)缓存例子缓存例子假定平均对象长度=100,000比特来自机构的浏览器的平均请求=15/sec从机构路由器到任何起始服务器并返回的时延=2sec结果局域网利用率=15%访问链路利用率=100%总时延=因特网时延+访问时延+LAN时延=2sec+分钟+毫秒起始服务器公共因特网机构网络10MbpsLAN1.5Mbps访问链路缓存例子(续)缓存例子(续)可能的解决方案将访问链路的带宽提高到如10Mbps结果LAN利用率=15%访问链路利用率=15%总时延=因特网时延+访问时延+LAN时延=2sec+毫秒+毫秒通常升级费用可观起始服务器公共因特网机构网络10MbpsLAN1.5Mbps访问链路缓存例子(续)缓存例子(续)安装缓存器假定命中率是0.4结果40%请求将几乎立即得到满足60%请求由起始服务器满足访问链路的利用率减少到60%,产生可忽略不计的时延(如10msec)总平均时延=因特网时延+访问时延+LAN时延=.6*(2.01)secs+毫秒<1.4secs起始服务器公共因特网机构网络10MbpsLAN1.5Mbps访问链路机构缓存器条件GET方法条件GET方法目的:如果缓存中有最新缓存版本,就不发送该对象缓存器:在HTTP请求If-modified-since:<date>中,指定缓存版本的日期服务器:如果缓存的拷贝是最新的,响应不包含对象:HTTP/1.0304NotModified缓存器服务器HTTP请求报文If-modified-since:<date>不修改对象HTTP请求报文If-modified-since:<date>HTTP响应HTTP/1.0200OK<data>修改对象第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器FTP:文件传输协议FTP:文件传输协议传输文件到/来自远程主机客户机/服务器模型客户机:发起传输一侧(到/来自远程之一)服务器:远程主机ftp:RFC959ftp服务器:端口21文件传输远程文件系统主机上的用户FTP:独立的控制和数据连接FTP:独立的控制和数据连接FTP客户机联系FTP服务器的21号端口,指定TCP为运输协议客户机通过控制连接获得授权客户机经控制连接通过发送命令浏览远程目录当服务器接收到一个文件传输命令时,该服务器打开到客户机的一个数据连接在传输一个文件后,服务器关闭连接服务器打开第二个TCP数据连接,以传输另一个文件控制连接:“带外”FTP服务器维护“状态”:当前目录,较早的鉴别FTP命令,响应FTP命令,响应命令示例:经控制信道以ASCII文本发送USERusernamePASSpasswordLIST返回当前目录中的文件列表RETRfilename获取(get)文件STORfilename存储(puts)文件到远程主机返回码示例:状态码和短语(如在HTTP中的那样)331UsernameOK,passwordrequired125dataconnectionalreadyopen;transferstarting425Can’topendataconnection452Errorwritingfile第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器电子邮件电子邮件三个主要部分:用户代理邮件服务器简单邮件传输协议:SMTP用户代理亦称为“邮件阅读器”写作、编辑、阅读邮件报文例如Eudora,Outlook,elm,NetscapeMessenger存储在服务器上的报文的达到和离开邮件服务器邮件服务器电子邮件:邮件服务器电子邮件:邮件服务器邮件服务器邮箱包含用户的到达报文离开(将发送)邮件报文的报文队列在发送电子邮件报文的邮件服务器之间的SMTP协议客户机:发送邮件服务器服务器:接收邮件的服务器邮件服务器邮件服务器电子邮件:SMTP[RFC2821]电子邮件:SMTP[RFC2821]使用TCP从客户机到服务器可靠地传输电子邮件报文,用端口25直接传输:发送服务器到接收服务器传输的三个阶段握手(欢迎)报文的传输关闭命令/响应交互命令:ASCII文本响应:状态码和短语报文必须以7比特ASCII格式场景:Alice向Bob发送报文场景:Alice向Bob发送报文1)Alice使用UA写作报文并向bob@someschool.edu发送2)Alice的UA向其邮件服务器发送报文;报文放置在报文队列中3)SMTP的客户机侧打开与Bob的邮件服务器的TCP连接4)SMTP通过TCP连接发送Alice的报文5)Bob’的邮件服务器将该报文放入Bob的邮箱6)Bob调用其用户代理来读报文123456SMTP交互的示例SMTP交互的示例S:220hamburger.eduC:HELOcrepes.frS:250Hellocrepes.fr,pleasedtomeetyouC:MAILFROM:<alice@crepes.fr>S:250alice@crepes.fr...SenderokC:RCPTTO:<bob@hamburger.edu>S:250bob@hamburger.edu...RecipientokC:DATAS:354Entermail,endwith"."onalinebyitselfC:Doyoulikeketchup?C:Howaboutpickles?C:.S:250MessageacceptedfordeliveryC:QUITS:221hamburger.educlosingconnection自行试验SMTP交互:自行试验SMTP交互:telnet服务器name25观察来自服务器的220回答输入HELO,MAILFROM,RCPTTO,DATA,QUIT命令上述过程使你发送电子邮件而不使用电子邮件客户机(阅读器)SMTP:有关情况SMTP:有关情况SMTP使用持久连接SMTP要求报文(首部和主体)以7bitASCII格式SMTP服务器使用CRLF.CRLF以决定报文结束与HTTP的比较:HTTP:拉SMTP:推两者都有ASCII命令/响应交互,状态码HTTP:每个对象封装在其自己的响应报文中SMTP:多个对象在多方报文中发送邮件报文格式邮件报文格式SMTP:交换电子邮件报文的协议RFC822:文本报文格式的标准:首部行,如To:From:Subject:不同于SMTP命令!主体“报文”,均为ASCII字符首部主体空行报文格式:多媒体扩展报文格式:多媒体扩展MIME:多媒体邮件扩展,RFC2045,2056在报文首部的附加行声明MIME内容类型多媒体数据类型,子类型,声明参数使用编码数据的方法MIME版本编码数据邮件访问协议邮件访问协议SMTP:交付/存储到接收方服务器邮件访问协议:从服务器获取邮件POP:邮局协议[RFC1939]授权(代理<-->服务器)并下载IMAP:互联网邮件访问协议[RFC1730]更多特色(更复杂)操作存储在服务器上的报文HTTP:Hotmail,Yahoo!Mail等SMTP访问协议接收方邮件服务器POP3协议POP3协议特许阶段客户机命令:user:声明用户名pass:口令服务器响应+OK-ERR事务阶段,客户机:list:列出报文成员retr:由数字获取报文dele:删除quitC:listS:1498S:2912S:.C:retr1S:<message1contents>S:.C:dele1C:retr2S:<message1contents>S:.C:dele2C:quitS:+OKPOP3服务器signingoffS:+OKPOP3服务器readyC:userbobS:+OKC:passhungryS:+OKusersuccessfullyloggedonPOP3和IMAPPOP3和IMAPPOP3其他情况前面的例子使用了“downloadanddelete”模式如果Bob改变客户机,则不能重读电子邮件“Download-and-keep”:在不同客户机上的报文拷贝POP3跨越会话是无状态的IMAP在一个地方保持所有报文:服务器允许用户在文件夹中组织报文IMAP跨越会话保持用户状态:文件夹名和报文ID和文件夹名之间的映射第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器DNS:域名系统DNS:域名系统人:许多标识符社会保险号,名字,护照#因特网主机、路由器:IP地址(32bit):用于数据报寻址“名字”,如www.yahoo.com–由人所使用问题:IP地址和名字之间的映射?域名系统:分布式数据库由层次化的许多名字服务器实现应用层协议主机、路由器、名字服务器通信以解析名字(地址/名字转换)注意:因特网核心功能,作为应用层协议实现复杂性位于网络“边缘”DNSDNSDNS服务主机名到IP地址的转换主机别名规范名和别名邮件服务器别名负载分配复制的Web服务器:对一个规范名的IP地址集合为何不用集中式DNS?单点故障通信量远程集中式数据库维护不具有扩展性!分布式、等级制数据库分布式、等级制数据库客户机要求www.amazon.com的IP地址;1stapprox:客户机请求根服务器以发现comDNS服务器客户机请求comDNS服务器以得到amazon.comDNS服务器客户机请求amazon.comDNS服务器以得到对www.amazon.com的IP地址DNS:根名字服务器DNS:根名字服务器当本地名字服务器不能分解名字时联系它根名字服务器:如果名字映射未知,联系权威名字服务器获得映射返回对本地名字服务器的映射世界范围的13个根名字服务器顶级域和权威服务器顶级域和权威服务器顶级域(TLD)服务器:负责com,org,net,edu等,以及所有顶级国家域uk,fr,ca,jp.NetworkSolutions维护com顶级域服务器Educause维护edu顶级域服务器权威DNS服务器:组织的DNS服务器为组织的服务器(如Web和电子邮件)提供对IP映射的权威主机名能够由组织或服务提供商维护本地名字服务器本地名字服务器并不严格属于等级结构每个ISP(住宅ISP、公司、大学)有一个也称为“默认名字服务器”当主机发出DNS请求时,请求被发送到其本地名字服务器作为代理,将请求转发到等级结构例子例子位于cis.poly.edu的主机为gaia.cs.umass.edu要求IP地址请求主机cis.poly.edugaia.cs.umass.edu根DNS服务器123456权威DNS服务器dns.cs.umass.edu78顶级域DNS服务器递归请求递归请求递归请求:将名字解析的负担放在联系的名字服务器沉重的负担?迭代请求:联系的服务器用要联系的名字服务器回答“我不知道该名字,但询问这个服务器”DNS:缓存和更新记录DNS:缓存和更新记录一旦(任何)名字服务器知道了映射,它将缓存该映射在一定时间后,缓存项超时(消失)顶级域服务器通常缓存在本地名字服务器中因此不经常访问根名字服务器更新/通知机制正由IETF设计RFC2136http://www.ietf.org/html.charters/dnsind-charter.htmlDNS记录DNS记录DNS:分布式数据库存储资源记录(RR)Type=NSname是域(如foo.com)Value是该域的权威名字服务器的IP地址Type=Aname是主机名name是IP地址Type=CNAMEname是对某些“规范的”(真实)名字的别名www.ibm.com实际是服务器east.backup2.ibm.comvalue是规范名Type=MXValue是与name相联系的邮件服务器DNS协议、报文DNS协议、报文DNS协议:查询和回答报文,都具有相同的报文格式报文首部标识符identification:16bit#用于查询和回答,回答与查询使用相同的#标志flags:查询或回答希望递归递归可用回答是权威的DNS协议,报文DNS协议,报文用于查询的名字、类型字段对查询的响应中的RR权威服务器的记录可被使用的附加“有帮助的”信息将记录插入DNS将记录插入DNS例子:创建新兴公司NetworkUtopia在注册登记机构(如NetworkSolutions)注册名字为networkuptopia.com,需要提供你的权威名字服务器(基本和辅助的)的名字和IP地址注册登记机构将两条RR插入comTLD服务器:(networkutopia.com,dns1.networkutopia.com,NS)(dns1.networkutopia.com,212.212.212.1,A)对www.networkuptopia.com,在权威服务器插入TypeA记录,对networkutopia.com插入TypeMX记录人们如何得到你Web站点的IP地址呢?第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器P2P文件共享P2P文件共享例子Alice在她自己的笔记本机上运行P2P客户机应用程序间歇地与因特网相连;得到对每个连接的新IP地址寻找歌曲“HeyJude”应用程序显示具有HeyJude拷贝的其他对等方Alice选择其中一个对等方Bob文件从Bob的PC拷贝到Alice笔记本:HTTP在Alice下载时,Alice也向其他用户上载Alice的对等方既是Web客户机,也是瞬时的Web服务器所有对等方都是服务器=高度可扩展!P2P:集中式目录P2P:集中式目录初始“Napster”设计1)当对等方连接时,它通知中心服务器:IP地址内容2)Alice查询“HeyJude”3)Alice从Bob请求文件P2P:集中式目录存在的问题P2P:集中式目录存在的问题单点故障性能瓶颈侵犯版权文件传输是分散的,但定位内容是高度集中的查询洪泛:Gnutella查询洪泛:Gnutella全分布方式无中心服务器公共域协议许多Gnutella客户机实现协议覆盖网络:图如果对等方X和Y间有一条TCP连接,则存在一条边所有活动对等方和边形成覆盖网络边不是物理链路给定对等方将通常与少于10个覆盖节点相连Gnutella:协议Gnutella:协议文件传输:HTTP查询报文经现有的TCP连接对等方转发查询报文查询命中经反向路径发送扩展性:有限范围的查询Gnutella:对等方加入Gnutella:对等方加入加入对等方X必须在Gnutella网络中发现某些其他对等方:使用候选对等方列表X随后试图与列表上的对等方建立TCP,直到与Y建立连接X向Y发送Ping报文;Y转发Ping报文接收到Ping报文的所有对等方用Pong报文响应X接收许多Pong报文。它能建立附加的TCP连接对等方离开:参见课后作业!利用不均匀性:KaZaA利用不均匀性:KaZaA每个对等方或是一个组长,或指派给一个组长对等方和其组长间的TCP连接某些组长之间的TCP连接组长追踪其所有子节点上的内容KaZaA:查询KaZaA:查询每个文件具有一个散列码标准和一个描述符客户机向其组长发送关键词查询组长用匹配响应:对于每个匹配:元数据,hash,IP地址如果组长向其他组长转发查询,它们用匹配响应客户机则为下载选择文件HTTP请求使用Hash作为标识符,向具有所要文件的对等方发送KaZaA技巧KaZaA技巧限制并行上载请求排队激励优先权并行下载第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器套接字编程套接字编程套接字API在BSD4.1UNIX引入,1981由应用程序显式产生、使用和释放客户机/服务器范式通过套接字API提供两类运输服务:不可靠数据库可靠,面向字节流目标:学习构建使用套接字通信的客户机/服务器应用程序使用TCP套接字编程使用TCP套接字编程套接字:应用程序进程和端到端运输协议(UCP或TCP)之间的门TCP服务:从一个进程到另一个的可靠字节传输由应用程序研发者控制由操作系统控制主机或服务器由操作系统控制主机或服务器internet由应用程序研发者控制TCP套接字编程TCP套接字编程客户机必须联系服务器服务器进程必须首先运行服务器必须已经生成套接字(门),以欢迎客户机的联系客户机联系服务器,通过:创建客户机本地TCP套接字定义服务器进程的IP地址,端口号当客户机产生套接字时:客户机TCP创建到服务器TCP的连接当客户机联系时,服务器TCP为服务器进程生成新的套接字,以与客户机通信允许服务器与多个客户机交谈源端口号用于区分客户机(详情参见第3章)TCP在客户机和服务器之间提供可靠的、按序的字节传输(管道)流的术语流的术语一个流是流入或流出某进程的字符序列一个输入流与该进程的某些输入源(如键盘或套接字)相联系一个输出流与输出源(如监视器或套接字)相联系TCP套接字编程TCP套接字编程例子客户机-服务器app:1)客户机从标准输入(inFromUserstream)读入行,经套接字(outToServerstream)发送给服务器2)服务器从套接字读行3)服务器转换成大写,向客户机发送4)客户机读,从套接字(inFromServerstream)打印修改的行客户机process客户机TCP套接字客户机/服务器套接字交互:TCP客户机/服务器套接字交互:TCP服务器(运行在hostid上)客户机例子:Java客户机(TCP)例子:Java客户机(TCP)importjava.io.*;importjava.net.*;classTCPClient{publicstaticvoidmain(Stringargv[])throwsException{Stringsentence;StringmodifiedSentence;BufferedReaderinFromUser=newBufferedReader(newInputStreamReader(System.in));SocketClientSocket=newSocket("hostname",6789);DataOutputStreamoutToServer=newDataOutputStream(ClientSocket.getOutputStream());产生输入流产生客户机套接字,与服务器连接生成输出流与套接字联系例子:Java客户机(TCP)例子:Java客户机(TCP)BufferedReaderinFromServer=newBufferedReader(newInputStreamReader(ClientSocket.getInputStream()));sentence=inFromUser.readLine();outToServer.writeBytes(sentence+'\n');modifiedSentence=inFromServer.readLine();System.out.println("FROMServer:"+modifiedSentence);ClientSocket.close();}}产生与套接字联系的输入流向服务器发送行从服务器读行例子:Java服务器(TCP)例子:Java服务器(TCP)importjava.io.*;importjava.net.*;classTCPServer{publicstaticvoidmain(Stringargv[])throwsException{StringClientSentence;StringcapitalizedSentence;ServerSocketwelcomeSocket=newServerSocket(6789);while(true){SocketconnectionSocket=welcomeSocket.accept();BufferedReaderinFromClient=newBufferedReader(newInputStreamReader(connectionSocket.getInputStream()));在端口6789生成欢迎套接字在欢迎套接字等待客户机的联系生成输入流,与套接字联系例子:Java服务器(TCP)例子:Java服务器(TCP)DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());ClientSentence=inFromClient.readLine();capitalizedSentence=ClientSentence.toUpperCase()+'\n';outToClient.writeBytes(capitalizedSentence);}}}从套接字逐行读生成输出流,与套接字联系向套接字读出行当循环结束,循环回来并等待另一个客户机连接第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器UDP套接字编程UDP套接字编程UDP:在客户机and服务器之间无“连接”没有握手发送方为每个分组附加上目的地的IP地址和端口号no服务器必须从接收到的分组提取IP地址,端口号UDP:接收到的传输数据可能失序或丢失UDP为客户机和服务器间的字节组(数据报)提供不可靠的传输客户机/服务器套接字交互:UDP客户机/服务器套接字交互:UDP服务器(运行在hostid之上)例子:Java客户机(UDP)例子:Java客户机(UDP)输出:发送分组(TCP发送“字节流”)客户机process客户机UDP套接字sendPacket到网络来自网络receivePacketinFromUser键盘显示器ProcessclientSocketUDP分组输入流UDP分组UDP套接字输入:接收分组(TCP接收“字节流”)例子:Java客户机(UDP)例子:Java客户机(UDP)importjava.io.*;importjava.net.*;classUDPSocket{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();生成输入流生成客户机套接字使用DNS将主机名转换为IP地址例子:Java客户机(UDP),cont.例子:Java客户机(UDP),cont.DatagramPacketsendPacket=newDatagramPacket(sendData,sendData.length,IPAddress,9876);ClientSocket.send(sendPacket);DatagramPacketreceivePacket=newDatagramPacket(receiveData,receiveData.length);ClientSocket.receive(receivePacket);StringmodifiedSentence=newString(receivePacket.getData());System.out.println("FROMServer:"+modifiedSentence);ServerSocket.close();}}使用要发送的数据、长度、IP地址、端口生成数据报向服务器发送数据报从服务器读数据报例子:Java服务器(UDP)例子:Java服务器(UDP)importjava.io.*;importjava.net.*;classUDPServer{publicstaticvoidmain(Stringargs[])throwsException{DatagramSocketServerSocket=newDatagramSocket(9876);byte[]receiveData=newbyte[1024];byte[]sendData=newbyte[1024];while(true){DatagramPacketreceivePacket=newDatagramPacket(receiveData,receiveData.length);ServerSocket.receive(receivePacket);在端口9876生成数据报套接字为接收的数据报生成空间接收数据报例子:Java服务器(UDP)例子:Java服务器(UDP)Stringsentence=newString(receivePacket.getData());InetAddressIPAddress=receivePacket.getAddress();intport=receivePacket.getPort();StringcapitalizedSentence=sentence.toUpperCase();sendData=capitalizedSentence.getBytes();DatagramPacketsendPacket=newDatagramPacket(sendData,sendData.length,IPAddress,port);ServerSocket.send(sendPacket);}}}获得发送方的IP地址,端口#向套接字写出数据报当循环结束,循环回来并等待另一个数据报产生数据报发送给客户机第2章要点第2章要点2.1网络应用的原则2.2Web和HTTP2.3FTP2.4电子邮件SMTP,POP3,IMAP2.5DNS2.6P2P文件共享2.7TCP的套接字编程2.8UDP的套接字编程2.9构建一个Web服务器构建一个简单的Web服务器构建一个简单的Web服务器处理一个HTTP请求接受该请求解析首部从服务器的文件系统获得请求的文件产生HTTP响应报文:首部行+文件向客户机发送响应在生成服务器后,你能够使用浏览器(如IEexplorer)请求文件详见

TopDownV3-2.ppt

TopDownV3-2.ppt

上传者: fayelovelu
7次下载 0人收藏 暂无简介 简介 2011-06-26 举报

简介:计算机网络中文版课件

1 应用层 2 章应用层 ApplicationLayer 计算机网络:自顶向下方法 ( 原书第三版 ) 陈鸣译,机械工业出版社, 2005 ComputerNetworking:ATopDownApproachFeaturingtheInternet , 3 r d edition. JimKurose,KeithRoss Addison-Wesley,July2004.

第1页

  • 相关资料
  • 该用户的其他资料
  • 名称/格式
  • 下载次数
  • 资料大小
  • 名称/格式
  • 下载次数
  • 资料大小

用户评论

0/200
暂无评论
上传我的资料

资料阅读排行

关闭

请选择举报的类型

关闭

提示

提交成功!

感谢您对爱问共享资料的支持,我们将尽快核实并处理您的举报信息。

关闭

提示

提交失败!

您的举报信息提交失败,请重试!

关闭

提示

重复举报!

亲爱的用户!感觉您对爱问共享资料的支持,请勿重复举报噢!

全屏 缩小 放大
收藏
资料评价:

/ 106
所需积分:5 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!