计算机网络第2章_第1页
计算机网络第2章_第2页
计算机网络第2章_第3页
计算机网络第2章_第4页
计算机网络第2章_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2:应用层1第二章应用层2:应用层2第二章应用层目的:

网络应用及应用层协议的概念、实现传输层服务模型客户服务器模式对等模式peer-to-peer通过对主流应用层协议分析来掌握应用层协议HTTPFTPSMTP/POP3/IMAPDNS网络应用编程socketAPI2:应用层3第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器2:应用层4一些网络应用电子邮件Web即时讯息远程登陆P2P文件共享在两台计算机之间的两个帐户之间的文件传输多用户网络游戏流式存储视频片段因特网电话实时视频会议2:应用层5研发网络应用程序研发网络应用程序的核心:写出能够运行在不同的端系统并通过网络彼此通信的程序例如,Web:Web服务器软件和浏览器软件通信应用层传输层网络层数据链路层物理层应用层传输层网络层数据链路层物理层应用层传输层网络层数据链路层物理层没有应用程序软件运行在网络核心设备上网络核心设备不在应用层起作用这种设计方法促进了应用程序的研发2:应用层6网络应用程序体系结构客户机/服务器体系结构P2P体系结构客户机/服务器和P2P混合的体系结构2:应用层7客户机/服务器体系结构服务器:

总是打开的主机具有固定的、众所周知的IP地址主机群集常被用于创建强大的虚拟服务器客户机:同服务器端通信可以间断的同服务器连接可以拥有动态IP地址客户机相互之间不直接通信2:应用层8纯P2P体系结构没有总是打开的服务器任意一对主机直接相互通信对等方间歇连接并且可以改变IP地址例如:Gnutella优点:自扩展性缺点:难以管理2:应用层9客户机/服务器和P2P混合的体系结构Napster文件直接在对等方之间交换文件搜索通过服务器中心服务器记录对等方内容对等方查询中心服务器来决定要求的文件位置即时讯息两个聊天用户之间是P2P注册、查询通过服务器用户上线时要在中心服务器上进行注册用户与中心服务器联系以找出在线伙伴2:应用层10进程通信进程:运行在端系统中的程序同一主机上的两个进程通过内部进程通信机制进行通信不同主机上的进程通过交换报文相互通信客户进程:发起通信的进程服务器进程:

等待联系的进程注意:具有P2P体系结构的应用程序既有客户进程和服务器进程。2:应用层11进程与计算机网络的接口-套接字进程通过它的套接字在网络上发送和接收报文套接字类比于门户发送进程把报文推出门户发送进程假定门户到另外一侧之间有运输设施,该设施可以传送报文到接收进程由操作系统控制进程具有缓存、变量的TCP套接字主机或服务器进程具有缓存、变量的TCP套接字主机或服务器Internet由应用开发者控制套接字又叫做应用程序编程接口API用户通过API对传输层的控制仅限于: (1)选择传输协议;(2)能设定几个参数2:应用层12进程寻址为了一个进程能接收报文,它需要一个标识主机有唯一的32位IP地址问:主机的IP地址足够标识进程吗?答:不能。因为一台主机上能够运行许多进程。主机上的进程标识包括IP地址和端口号常用应用程序的端口号:Web服务:80邮件服务:25 将在第三章详细分析端口号2:应用层13应用层协议交换的报文类型,如请求报文和应答报文报文类型的语法:报文中的各个字段及其详细描述字段的语义,即包含在字段中的信息的含义进程何时、如何发送报文及对报文进行响应公共领域协议:由RFC文档定义可供大家使用例如:HTTP,SMTP专用协议:例如:KaZaA,Skype等2:应用层14应用需要什么样的服务?数据丢失率一些应用(如:实时音频)能容忍一定程度的数据丢失另一些应用(如:文件传输,telnet)需要100%可靠的数据传输定时一些应用(如:因特网电话、多方游戏)要求低时延带宽和吞吐量一些应用(如:多媒体)必须要达到所需带宽另一些应用(弹性应用)根据需要充分利用可供使用的带宽安全加密,数据完整性等2:应用层15常见应用的传输服务需求时间敏感不不不是,100msec是,几秒是,100msec是和不是应用文件传输电子邮件Web实时音频/视频存储音频/视频交互式游戏即时讯息数据丢失不能丢失不能丢失不能丢失容忍丢失容忍丢失容忍丢失不能丢失带宽弹性弹性弹性音频:几kbps-1Mbps视频:10kbps-5Mbps同上几kbps以上弹性2:应用层16因特网运输协议提供的服务TCP服务:面向连接的服务:在客户机程序和服务器程序之间必须建立连接可靠的传输服务:

接收和发送进程间流量控制:发送方不会淹没接收方

拥塞控制:网络出现拥塞时抑制发送进程没有提供:时延保证,最小带宽保证UDP服务:不可靠数据传输没有提供:建立连接,可靠性,流量控制,拥塞控制,时延和带宽保证2:应用层17因特网应用:应用层协议,传输协议应用电子邮件远程终端访问Web文件传输流媒体因特网电话应用层协议SMTP[RFC2821]Telnet[RFC854]HTTP[RFC2616]FTP[RFC959]通常专用(e.g.RealNetworks)通常专用(e.g.,Skype)下面的传输协议TCPTCPTCPTCPTCPorUDP典型用UDP2:应用层18安全TCPTCP和UDP没有加密网络明文传输,如用户名和口令信息等SSL(SecuritySocketLayer)提供加密的TCP连接保证数据完整性端点认证SSL在应用层应用使用SSL库调用TCP服务接口SSL提供套接字API2:应用层19第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器2:应用层20Web和HTTP常用术语网页(Web页,或称文档)由许多对象组成。对象就是文件,可以是HTML文件,JPEG图像,Javaapplet,音频文件…多数网页由单个基本HTML文件和若干个所引用的对象构成每个对象被一个URL(UniformResourceLocator统一资源定位符)寻址举例URL:/someDept/pic.gif主机名路径名协议2:应用层21HTTP概述HTTP:超文本传输协议hypertexttransferprotocolWeb的应用层协议client/server模式client:浏览器browser请求,接收,“解释显示”Web对象server:Web服务器响应请求,发送Web对象HTTP1.0:RFC1945HTTP1.1:RFC2616PCrunningExplorerServerrunningApacheWebserverMacrunningNavigatorHTTPrequestHTTPrequestHTTPresponseHTTPresponse2:应用层222.HTTP概述(续)使用TCP:客户初始化一个与HTTP服务器80端口的TCP连接(创建套接字)HTTP服务器接受来自客户的TCP连接请求,建立连接Browser(HTTPclient)和Web服务器(HTTPserver)交换HTTP消息(应用层协议消息)包括HTTP请求和响应消息最后结束(或叫关闭)TCP连接HTTP是无状态协议HTTP服务器不维护客户先前的状态信息维护状态的协议非常复杂!必须维护过去历史(状态信息)如果server/client崩溃,它们各自的状态视图可能不一致,因此必须保持协调一致。补充2:应用层233.HTTP连接持久HTTP连接一个TCP连接上可以传送多个对象HTTP/1.1默认使用持久HTTP连接非持久HTTP连接每个TCP连接上只传送一个对象,下载多个对象需要建立多个TCP连接HTTP/1.0使用非持久HTTP连接2:应用层24(1).非持久HTTP连接假设用户输入URL

http://www.someS/someDepartment/home.index1a.HTTP客户初始化1个与服务器主机www.someS中HTTP服务器的TCP连接

2.HTTP客户发送1个HTTP请求消息(requestmessage

)包含URL到TCP连接套接字.消息指出客户要Web对象-someDepartment/home.index1b.www.someS服务器主机中的HTTP服务器在80端口监听来自HTTP客户的TCP连接请求.收到连接请求,接受,建立连接,通知客户.3.HTTP服务器接收请求消息,产生1个响应消息responsemessage包含被请求对象,并发送这个消息到自身TCP连接套接字time网页由1个HTML文件,和10个jpeg图像构成2:应用层25(1).非持久HTTP连接(续.)5.HTTP客户接收包含html文件的响应消息,显示html.解析html文件,找出10个引用jpeg对象6.对10个引用jpeg对象的每1个重复步骤1-54.HTTP服务器结束TCP连接.time2:应用层26响应时间模型定义往返时间RTT(Round-TripTime):1个小分组从客户主机到服务器再到客户主机所花费的时间.响应时间:1个RTT用于建立TCP连接1个RTT用于HTTP请求/响应消息的交互Html文件传输时间total=2RTT+transmittime传输文件的时间发起TCP连接RTT请求文件RTT接收整个文件客户机的时间服务器的时间2:应用层27持久HTTP连接非持久HTTP连接的问题:每个对象需要2个RTTOS必须为每个TCP连接分配主机资源大量客户的并发TCP连接形成服务器的严重负担持久HTTP连接服务器发送响应消息后保持连接同1客户/服务器的后续HTTP消息继续在该连接上传送不带流水线的持久HTTP连接:客户先前响应消息收到,才发出新的请求消息每个引用对象经历1个RTT带流水线的持久HTTP连接:HTTP/1.1默认使用客户遇到1个引用对象就发送请求消息所有引用对象只经历1个RTT2:应用层28HTTP报文格式2类HTTP报文:请求报文request,响应报文responseHTTP请求报文:ASCII文本(易于人读格式)GET/somedir/page.htmlHTTP/1.1Host:User-agent:Mozilla/4.0//该代理类型的对象版本Connection:Close//不使用持久连接Accept-language:zh-cn//中文版本(额外的回车换行)

请求行(GET,POST,HEAD)头部行回车换行指示结束2:应用层29HTTP请求报文:通用格式URI版本spcrlfsp方法值spcrlf首部字段名:值spcrlf首部字段名:crlf请求行首部行空行实体主体注:URI=UniformResourceIdentifiers2:应用层30方法类型HTTP/1.0GETPOSTHEAD服务器收到请求时,用HTTP报文进行响应,但不返回请求对象HTTP/1.1GET,POST,HEADPUT文件在实体主体中被上载到URL字段指定的路径DELETE删除URL字段指定的文件2:应用层31上载表单(各字段)输入值Post方法:网页时常包含表单输入输入值在请求报文的实体主体中被上载到服务器URL方法:使用GET方法表单(各字段)输入值被上载,以URL请求行的字段:/animalsearch?monkeys&banana2:应用层32HTTP响应消息HTTP/1.1200OKConnection:closeDate:Sat,06Aug201112:00:15GMTServer:Apache/1.3.0(Unix)Last-Modified:Thu,22Jun2011…...Content-Length:6821Content-Type:text/html

datadatadatadatadata...状态行(版本、状态编码、短语)首部行数据,e.g.,被请求的HTML文件2:应用层33HTTP响应的状态码200OK请求成功,所请求信息在响应消息中返回301MovedPermanently所请求的对象已永久迁移,新的URL在本响应消息的(location:)头部指出400BadRequest该请求不能被服务器解读404NotFound服务器上不存在所请求文档505HTTPVersionNotSupported位于服务器响应客户的响应消息的第一行.几个常见的样本状态码:2:应用层34用户与服务器交互:Cookies举例:李四总是使用同台PC访问Internet他首次访问1个电子商务网站当他最初发出HTTP请求访问该站点时,该站点创建一个唯一的ID,并在后端数据库创建一个响应于该ID表项2:应用层35Cookies:跟踪用户(续.)clientserverusualhttprequestmsgusualhttpresponse+Set-cookie:1678usualhttprequestmsgcookie:1678usualhttpresponsemsgusualhttprequestmsgcookie:1678usualhttpresponsemsgcookie-specificactioncookie-spectificactionservercreatesID1678foruserentryinbackenddatabaseaccessaccessCookiefile李四:1678CookiefileCookiefile李四:1678一周后:2:应用层36用户与服务器交互:CookiesCookies的4个重要方面:1)cookie头部行在HTTP响应消息中2)cookie头部行在HTTP请求消息中3)cookie文件保存在用户主机中并被用户浏览器管理4)cookie也保存在Web站点的后端数据库2:应用层37Cookies:跟踪用户(续.)Cookies可以带来什么?身份认证虚拟购物车(跟踪用户购买的物品)推荐广告用户会话状态(Webe-mail)Cookies和隐私:cookies允许网站更加了解你你可以提供名字和e-mail给网站广告公司通过网站获得信息Cookies不适合游动用户补充2:应用层38Web缓存(代理服务器)目标:代表起始服务器满足HTTP请求。用户配置浏览器:Web访问经由缓存所有HTTP请求指向缓存对象在缓存中:缓存器返回对象否则缓存器向起始服务器发出请求,接收对象后转发给客户机客户机代理服务器客户机HTTP请求HTTP请求HTTP响应HTTP响应HTTP请求HTTP响应起始服务器起始服务器HTTP请求HTTP响应2:应用层39Web缓存(续)缓存器既是服务器又是客户机一般的,Web缓存器既是服务器又是客户机典型的缓存器被ISP提供(大学、公司或居民ISP)为什么需要Web缓存器?减少对客户机请求的响应时间减少内部网络与接入链路上的通信量能从整体上大大降低因特网上的Web流量2:应用层40缓存器举例假设对象平均长度=100,000bits浏览器对对象的平均访问速率=15/sec因特网时延=2sec结论局域网上的流量强度=0.15链路上的流量强度=1总延时=因特网时延+接入时延+局域网时延=2秒+数分钟+数毫秒起始服务器公共Internet机构网络10MbpsLAN1.5Mbps接入链路2:应用层41缓存器举例(续)可能的解决办法增加接入链路的速率结论局域网上的流量强度=15%链路上的流量强度=15%总时延=因特网时延+接入时延+局域网时延=2秒+数毫秒+数毫秒这种方案需要较大的投资起始服务器公共Internet机构网络10MbpsLAN1.5Mbps接入链路2:应用层42缓存器举例(续)安装缓存器假设缓存器命中率为0.4结论40%的请求立即会得到响应60%的请求通过访问起始服务器满足链路上的流量强度减为0.6,可以忽略不计总的平均延时=因特网时延+接入时延+局域网时延=0.6*2秒+数毫秒<1.4秒起始服务器公共Internet机构网络10MbpsLAN1.5Mbps接入链路机构缓存器2:应用层43条件GET方法目的:证实缓存器中的对象是否为最新缓存器:在请求报文中包含对象最后修改时间If-modified-since:<date>服务器:如果对象是最新的则响应报文中不包含对象:HTTP/1.0304NotModifiedcacheserverHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0304NotModifiedobjectnotmodifiedHTTPrequestmsgIf-modified-since:<date>HTTPresponseHTTP/1.0200OK<data>objectmodified2:应用层44第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP

2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程*2.9构造一个简单的Web服务器2:应用层45FTP:文件传输协议

FileTransferProtocol传输文件到远程主机/从远程主机下载文件client/server模式client:发起传输的一方server:远程主机ftp:RFC959ftp服务器:端口号21文件传输FTP服务器FTP用户接口FTP客户机本地文件系统远程文件系统用户2:应用层46FTP:独立的控制连接,数据连接FTP客户首先发起建立1个与FTP服务器端口号21之间的TCP控制连接,指定TCP作为传输层协议客户在建立的控制连接上获得身份认证客户在建立的控制连接上发送命令来浏览远程主机的目录.当服务器接收到1个文件传输命令时,在服务器端口号20创建1个与客户的TCP数据连接1个文件传输后,服务器结束这个TCP数据连接.FTP客户机FTP服务器TCP控制连接端口21TCP数据连接端口20服务器创建第2个TCP与客户的数据连接来传输下一个文件.控制连接:带外发送控制信息FTP服务器要维护用户状态信息:当前目录,先前的身份认证2:应用层47FTP:文件传输协议控制连接:USER-PI(protocolinterpreter):用户协议解释器SERVER-PI:服务器协议解释器数据连接:user-DTP(DataTransferProcess):用户数据传输进程server-DTP:服务器数据传输进程2:应用层48FTP:文件传输系统模型一文件系统ServerFTPServerPIServerDTP用户接口UserPIUserDTP用户文件系统UserFTP控制连接数据连接2:应用层49FTP:文件传输系统模型二文件系统ServerFTPServerPIServerDTP用户接口ServerPIServerDTP用户文件系统ServerFTP控制连接数据连接UserPI控制连接2:应用层50FTP数据连接建立方式主动模式:客户端发送PORT命令PORTh1,h2,h3,h4,p1,p2(h1-h4是IP地址,p1-p2是端口号)服务器根据PORT命令指定的客户端地址和端口号发起数据连接被动模式:客户端发送PASV命令服务器返回监听的地址和端口号客户端发起数据连接2:应用层51FTP命令和应答常见命令:在控制连接上发送ASCII文本USERusernamePASSpasswordLIST:返回当前远程目录的文件列表RETRfilename:获取远程主机当前目录下的1个文件(get)

STORfilename:存放1个文件到远程主机当前目录下(put)常见应答:状态码及其相应短语(同HTTP)331UsernameOK,passwordrequired125dataconnectionalreadyopen;transferstarting425Can’topendataconnection452Errorwritingfile2:应用层52第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器2:应用层53电子邮件3个主要组成部分:

用户代理useragents邮件服务器mailservers简单邮件传送协议和邮件接收协议用户代理:允许用户阅读,回复,转发,保存,编辑邮件消息例如:Outlook,foxmail等发送,接收邮件消息到/从服务器运行邮件协议用户邮箱外出报文队列mailserveruseragentuseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP2:应用层54电子邮件:邮件服务器邮件服务器

邮箱mailbox存放用户接收的邮件消息外出报文队列outgoing

message

queue运行邮件协议useragentmailserveruseragentuseragentmailserveruseragentuseragentmailserveruseragentSMTPSMTPSMTP2:应用层55电子邮件:SMTP[RFC5321]

SimpleMailTransferProtocol客户使用TCP来可靠传输邮件消息到服务器端口号25直接传送:发送服务器到接收服务器传输的3个阶段握手(问候)邮件消息的传输结束命令/应答的交互命令:ASCII文本格式应答:状态码及其短语邮件消息必须是7-bitASCII2:应用层56例子:Alice发送邮件消息到Bob1)Alice使用用户代理编写邮件消息(给bob@的)2)Alice的用户代理发送邮件消息到她的邮件服务器;邮件消息存放在邮件消息队列3)Alice邮件服务器的SMTP客户端发起建立一个到Bob的邮件服务器的SMTP服务器端的TCP连接,经过应用层握手.4)SMTP客户在这个TCP连接上发送Alice的邮件消息5)Bob服务器存放邮件消息存到Bob的邮箱6)Bob调用他的用户代理读邮件消息useragentmailservermailserveruseragent1234562:应用层57SMTP客户和服务器的命令交互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:221closingconnection2:应用层58SMTP:总结SMTP使用持久连接SMTP要求邮件消息(header&body)必须是7-bitASCIISMTP服务器使用CRLF.CRLF

来判断邮件消息的结束与HTTP的比较:HTTP:拉协议SMTP:推协议都有ASCII命令/应答交互,状态码HTTP:每个对象封装在它各自的HTTP响应消息中发送SMTP:一个邮件内各个对象置于同一个邮件消息的多目部分发送2:应用层59邮件消息的格式SMTP:用来交换邮件消息的协议RFC822:文本邮件消息格式标准:信头-头部行。如:To:From:Subject:这些头部不同于SMTP命令!信体邮件消息也必须是ASCII字符headerbodyblankline2:应用层60邮件消息的格式:多媒体扩展MIME:MultipurposeInternetmailExtensions多用途因特网邮件扩展,RFC2045,2046增添额外的信头头部声明MIMEcontent-typeFrom:alice@crepes.frTo:bob@Subject:Pictureofyummycrepe.MIME-Version:1.0Content-Transfer-Encoding:base64Content-Type:image/jpegbase64encodeddata

base64encodeddata

多媒体数据类型名,子类型名,参数声明用来编码数据的方法MIME版本编码后的数据2:应用层61邮件访问协议SMTP:递送/存储邮件消息到接收者邮件服务器邮件访问协议:从服务器获取邮件消息POP:PostOfficeProtocol邮局协议[RFC1939]110端口号身份认证(代理<-->服务器)并下载邮件消息IMAP:InternetMessageAccessProtocol[RFC3501]143端口更多功能特征(更复杂!)允许用户像对待本地邮箱那样操纵远程邮箱的邮件HTTP:Hotmail,Yahoo!Mail,etc.useragentsender’smailserveruseragentSMTPSMTPaccessprotocolreceiver’smailserver2:应用层62POP3协议身份认证阶段authorizationphase客户命令:userusernamepasspassword服务器响应+OK-ERR传输阶段transactionphase,client:list:列出邮件编号retr:按编号取邮件dele:删除quit

C:listS:1498S:2912S:.C:retr1S:<message1contents>S:.C:dele1C:retr2S:<message1contents>S:.C:dele2C:quitS:+OKPOP3serversigningoffS:+OKPOP3serverreadyC:userbobS:+OKC:passhungryS:+OKusersuccessfullyloggedon2:应用层63POP3和IMAPPOP3的更多细节先前例子使用“Download-and-delete”.Bob换客户端后不能再读邮件“Download-and-keep”模式:在不同客户机上的邮件拷贝POP3的会话是无状态的IMAP保存所有邮件消息在一个位置:服务器允许用户在服务器的各文件夹中管理邮件消息IMAP跟踪用户会话的状态信息:文件夹和邮件消息IDs与文件夹名字的映射2:应用层64第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器2:应用层65DNS:域名系统DomainNameSystem人:很多标识符:ID,name,passport#Internet主机,路由器:IPaddress(32bit)–用于分组寻址“主机名”,e.g.,–用于人记忆识别Q:可以在IP地址和主机名之间建立映射吗?DNS服务器提供的功能:主机名到IP地址的转换主机别名一个主机可以有一个规范主机名和多个主机别名邮件服务器别名负载分配DNS实现冗余服务器:一个IP地址集合可以对应于同一个规范主机名。2:应用层66DNS

为什么不集中式DNS?单点故障巨大访问量远距离集中式数据库维护不可扩展!DomainNameSystem:域名系统分布式数据库:一个由分层DNS服务器实现的分布式数据库应用层协议:DNS服务器实现域名转换(域名/地址转换)2:应用层67分布式、层次数据库根DNS服务器comDNS服务器orgDNS服务器eduDNS服务器DNS服务器DNS服务器DNS服务器DNS服务器DNS服务器客户机怎样决定主机名的IP地址?客户机查询根服务器得到comDNS服务器客户机查询comDNS服务器得到DNS服务器客户机查询DNS服务器得到的IP地址2:应用层68DNS:根名字服务器Rootnameservers

/根名字服务器负责记录顶级域名服务器的信息bUSC-ISIMarinadelRey,CAlICANNMarinadelRey,CAeNASAMtView,CAfInternetSoftwareC.PaloAlto,CAiNORDUnetStockholmkRIPELondonmWIDETokyoaNSIHerndon,VAcPSInetHerndon,VAdUMarylandCollegePark,MDgDISAVienna,VAhARLAberdeen,MDjNSI(TBD)Herndon,VA13rootnameservers…10个美国,1个英国,1个瑞典,1个日本共254台服务器2:应用层69顶级域服务器和权威DNS服务器顶级域服务器:负责顶级域名com,org,net,edu,etc,和所有国家的顶级域名uk,fr,ca,jp.Networksolutions公司维护com顶级域的TLD服务器Educause公司维护edu顶级域的TLD服务器权威DNS服务器:在因特网上具有公共可访问主机(如Web服务器和邮件服务器)的每个组织机构必须提供公共可访问的DNS记录,这些记录将这些主机的名字映射为IP地址。组织机构的权威DNS服务器负责保存这些DNS记录。多数大学和公司维护它们的基本权威DNS服务器2:应用层70本地DNS服务器严格来说不属于该服务器的层次结构每个ISP(如居民区ISP、公司、大学)都有一个本地DNS也叫默认服务器当主机发出DNS请求时,该请求被发往本地DNS服务器。起着代理的作用,转发请求到层次结构中。2:应用层71DNS查询方法一递归查询:名字解析的负担交给被查询的名字服务器被查询的名字服务器负载重?requestinghostrootDNSserverlocalDNSserver12456authoritativeDNSserver78TLDDNSserver32:应用层72requestinghostrootDNSserverlocalDNSserver123456authoritativeDNSserver78TLDDNSserverDNS查询方法二迭代查询:被查询的名字服务器回复可以被查询的名字服务器的IP地址“我不知道它的名字,但是可以问服务器”2:应用层73DNS缓存和权威DNS记录更新一旦名字服务器获得DNS映射,它将缓存该映射到局部内存服务器在一定时间后将丢弃缓存的信息本地DNS服务器可以缓存TLD服务器的IP地址因此根DNS服务器不会被经常访问权威DNS服务器记录更新:IETF动态更新/通报机制RFC21362:应用层74DNS记录DNS:存储资源记录(RR,ResourceRecords)的分布式数据库Type=NS(nameserver)name=域名(如 )value=该域权威名字服务器的主机名RR格式:(name,value,type,ttl)Type=A(Adress)name=主机名value=IP地址Type=CNAME(canonical)name=主机别名

的真名为

value=真实的规范主机名Type=MX(mailexchange)name=邮件服务器的主机别名value=邮件服务器的真实规范主机名

2:应用层75DNS协议,消息DNS协议:

查询报文与应答报文,但具有同样的报文格式报文头部标识符:16位,查询和应答报文使用相同的标识符标志:有若干个标志构成,分别标识不同的功能查询/应答-0/1查询希望是/非递归查询-1/0应答可/否获得(支持)递归查询-1/0应答是/否来自权威名字服务器-1/0附加信息(资源记录的变量数)权威(资源记录的变量数)回答(资源记录的变量数)问题(问题的变量数)附加RR数权威RR数回答RR数问题数标志标识符12字节2:应用层76DNS协议,消息问题部分查询的Name,type

回答部分对于查询,应答的资源记录可以多个资源记录,由于可以有多个IP地址权威部分域对应的权威名字服务器的信息附加信息部分权威名字服务器的IP地址等其他有帮助的记录.附加信息(资源记录的变量数)权威(资源记录的变量数)回答(资源记录的变量数)问题(问题的变量数)附加RR数权威RR数回答RR数问题数标志标识符12字节2:应用层77在DNS数据库中插入记录例子:刚刚创建一个“网络乌托邦”公司如果你想在注册登记机构注册你的域名,则需要提供你自己的基本权威DNS服务器和辅助权威DNS服务器的名字和IP地址该注册登记机构将下列两条资源记录插入注册机构的DNS系统中:(,,NS)(,,A)如果你想建立一个网站,则可以将网址以类型A的方式记录到你的权威DNS服务器中。如果你想建一个邮件服务器,则可以将以类型MX的方式记录到你的权威DNS服务器中。人们怎样得到你的Web站点的IP地址呢?2:应用层78第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器2:应用层79P2P文件共享举例Alice在家用PC上运行一个P2P文件共享应用软件每次重新连接因特网时,得到新的IP地址寻找“HeyJude”应用程序显示有“HeyJude”拷贝的其他对等方Alice选择一个对等方Bob.文件从Bob的PC上拷贝在Alice的PC上:HTTP当Alice在下载时,其他用户也在从Alice的PC下载Alice的对等方既是一个Web服务器,又是一个瞬时Web服务器所有的对等方都是服务器=高扩展性2:应用层80P2P:集中式目录“Napster”公司的设计1)当对等方启动时,它通知目录服务器以下信息IP地址可供共享的对象名称2)Alice查询文件“HeyJude”3)Alice向Bob请求文件centralizeddirectoryserverpeersAliceBob1111232:应用层81P2P:集中式目录的问题单点故障性能瓶颈侵犯版权文件传输是分散的,但是定位内容的过程是高度集中的2:应用层82查询洪泛:Gnutella全分布没有集中式服务器公共域协议许多Gnutella客户机实现Gnutella协议覆盖网络:graph如果对等方X和Y维护了一条TCP连接,则说X和Y之间有一条边所有活跃的对等方和边组成覆盖网络边不是物理通信链路给定对等方连接的覆盖网络路径中的节点少于10个,即TTL小于102:应用层83Gnutella:协议QueryQueryHitQueryQueryQueryHitQueryQueryQueryHitFiletransfer:HTTP

查询报文在已有的TCP连接上发送对等方转发报文QueryHit

报文按反向路径传送可扩展性:限范围泛洪2:应用层84Gnutella:加入对等方加入对等方X必须发现在Gnutella网络中的其他对等方:使用对等方列表。X试图与该列表上的对等方建立一条TCP连接,直到与Y创建一条连接。X向Y发送一个Ping报文;Y转发该Ping报文。所有的对等方接收Ping报文并响应一个Pong报文。X接收到许多Pong报文。然后能同某些其他对等方建立TCP连接。2:应用层85Gnutella:对等方离开主动离开:离开接点的所有对等方都会刷新自身的激活对等方列表,并开始与列表中的新的对等方建立连接断网:发送信息的时候对等方没有响应,则表明对等方离开,节点刷新自身的激活对等方列表,并开始与列表中的新的对等方建立连接2:应用层86KaZaA每个对等方要不被指派为组长,要不被指派给一个组长对等方和组长之间建立TCP连接组长之间建立TCP连接组长维护它的子对等方共享的内容2:应用层87KaZaA每个文件有文件的散列码标识客户机送向组长发送关键词的查询组长响应匹配逐项匹配:元数据,散列值,IP地址如果组长转发查询给其他组长则其他组长响应匹配客户端选择要下载的文件2:应用层88KaZaA请求排队:限制对等方并行上载数量,新的请求进行排队。激励优先权:根据不同的上载下载比例优先服务贡献大者。并行下载:将一个文件分成若干段,从多个对等方并行下载。2:应用层89第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器2:应用层90Socket套接字编程SocketAPI1981提出于BSD4.1UNIX,网络应用程序明确的创建,使用及释放套接字client/server模式通过SocketAPI,提供传输层的2类传输服务:不可靠的数据报传输可靠的字节流传输1.套接字是一个主机本地应用程序所创建的,为操作系统所控制的接口(“门”).2.应用进程通过这个接口,使用传输层提供的服务,跨网络发送(/接收)消息到(/从)其他应用进程。socket目的:学会如何开发采用套接字通信的C/S网络应用程序。

2:应用层91用TCP进行套接字编程Socket:应用进程和传输层协议(UCPorTCP)之间的门。TCP服务:从1个进程到另1个进程的字节流的可靠传输。processTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverprocessTCPwithbuffers,variablessocketcontrolledbyapplicationdevelopercontrolledbyoperatingsystemhostorserverinternet2:应用层92客户必须初始联系服务器服务器进程必须先运行服务器进程必须创建套接字(门)来迎候客户的初始联系客户如何初始联系服务器创建客户本地TCPsocket指定服务器进程的IP地址,端口号一旦客户创建套接字,客户TCP就发起3次握手并建立与服务器TCP的连接一旦客户初始联系(敲门)服务器,服务器TCP为服务器进程创建1个新的socket与客户进程通信允许服务器与多个客户通信源端口号被用来区分客户

(详见第三章)TCP为客户和服务器提供了可靠的,顺序的,字节流的传输(“管道”)。从应用程序的角度来看用TCP进行套接字编程(续)2:应用层93流(Stream)的概念流是流入或流出一个进程的一串字符.输入流被加在进程的某个输入源上,eg,标准输入(键盘)或套接字.输出流被加在进程的某个输出源上,eg,标准输出(显示器)或套接字.2:应用层94客户机/服务器应用程序示例:1)客户从它的标准输入读入一行(inFromUserstream),将该行发送到通往服务器的套接字(outToServerstream)2)服务器从它的连接套接字读入一行3)服务器将该行转换成大写,然后送回客户机4)服务器将修改后的行通过其连接套接字再发回给客户机5)客户从它的套接字中读取、输出修改后的行(inFromServerstream)ClientprocessclientTCPsocketTCP套接字编程2:应用层95TCP客户/服务器套接字交互流程:等待入连接请求connectionSocket=welcomeSocket.accept()对入请求创建套接字,port=xwelcomeSocket=ServerSocket()创建与hostid,port=x连接的套接字clientSocket=Socket()关闭connectionSocket从clientSocket读应答关闭clientSocket服务器(在hostid上运行)客户机使用clientSocket发送请求读请求connectionSocket写应答connectionSocketTCP连接建立2:应用层96Java编写的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类2:应用层97

BufferedReaderinFromServer=newBufferedReader(newInputStreamReader(clientSocket.getInputStream()));sentence=inFromUser.readLine();outToServer.writeBytes(sentence+'\n');modifiedSentence=inFromServer.readLine();System.out.println("FROMSERVER:"+modifiedSentence);clientSocket.close();

}}

CreateinputstreamattachedtosocketSendlinetoserverReadlinefromserverJava编写的TCP客户程序示例(续)2:应用层98Java编写的服务程序示例importjava.io.*;import.*;classTCPServer{publicstaticvoidmain(Stringargv[])throwsException{StringclientSentence;StringcapitalizedSentence;ServerSocketwelcomeSocket=newServerSocket(6789);

while(true){

SocketconnectionSocket=welcomeSocket.accept();BufferedReaderinFromClient=newBufferedReader(newInputStreamReader(connectionSocket.getInputStream()));

Createwelcomingsocketatport6789Wait,onwelcomingsocketforcontactbyclientCreateinputstream,attachedtosocket2:应用层99Java编写的服务程序示例(续)DataOutputStreamoutToClient=newDataOutputStream(connectionSocket.getOutputStream());

clientSentence=inFromClient.readLine();capitalizedSentence=clientSentence.toUpperCase()+'\n';outToClient.writeBytes(capitalizedSentence);connectionSocket.close();}}}

ReadinlinefromsocketCreateoutputstream,attachedtosocketWriteoutlinetosocketEndofwhileloop,loopbackandwaitforanotherclientconnection2:应用层100第二章:应用层2.1应用层协议原理2.2Web应用和HTTP协议2.3文件传输协议:FTP2.4因特网中的电子邮件SMTP,POP3,IMAP2.5DNS:因特网的目录服务2.6P2P文件共享2.7TCP套接字编程2.8UDP套接字编程2.9构造一个简单的Web服务器2:应用层101用UDP进行套接字编程UDP:客户和服务器之间没有连接没有初始握手阶段发送方明确将接收方的IP地址和端口号加入每个分组(1批字节+头部)服务器必须从接收到的分组中析取发送方进程的IP地址,端口号UDP:发送数据可能被乱序收到或丢失UDP在客户和服务器之间提供一组字节(“datagrams”)的不可靠传输

从应用程序的角度来看2:应用层102UDP客户/服务器套接字交互流程:关闭clientSocketServer(在hostid上运行)从clientSocket读应答创建套接字clientSocket=DatagramSocket()客户机创建地址(hostid,port=x)使用clientSocket发送数据报请求对入请求创建套接字port=xserverSocket=DatagramSocket()从serverSocket读请求向serverSocket写应答指定客户机主机地址、端口号2:应用层103举例:Java编写的UDP客户程序Output:sendspacket(TCPsent“bytestream”)Input:receivespacket(TCPreceived“bytestream”)ClientprocessclientUDPsocket2:应用层104举例: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();

CreateinputstreamCreateclientsocketTranslatehostnametoIPaddressusingDNS2:应用层105举例:Java编写的UDP客户程序(续)DatagramPacketsendPacket=newDatagramPacket(sendData,sendData.length,IPAddress,9876);

clientSocket.send(sendPacket);

DatagramPacketrece

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论