首页 TopDownV3-2

TopDownV3-2

举报
开通vip

TopDownV3-2null第2章 应用层 Application Layer 第2章 应用层 Application Layer 计算机网络:自顶向下方法 (原书第三版) 陈鸣译,机械工业出版社,2005年 Computer Networking: A Top Down Approach Featuring the Internet, 3rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. 第2章 应用层第2章 应用层我们的目标: 网络应用协议的概念...

TopDownV3-2
null第2章 应用层 Application Layer 第2章 应用层 Application Layer 计算机网络:自顶向下 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 (原书第三版) 陈鸣译,机械工业出版社,2005年 Computer Networking: A Top Down Approach Featuring the Internet, 3rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004. 第2章 应用层第2章 应用层我们的目标: 网络应用协议的概念,实现方面 运输层服务模型 客户机/服务器模式 对等范例 通过考察流行的应用级协议,学习协议 HTTP FTP SMTP / POP3 / IMAP DNS 网络应用编程 套接字 API第2章 要点第2章 要点2.1 网络应用的原则 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器某些网络应用某些网络应用E-mail Web 即时讯息 远程注册 P2P文件共享 多用户网络游戏 流式存储视频片段因特网电话 实时视频会议 大规模并行计算创建一个网络应用创建一个网络应用编写程序能够 能够在不同的端系统上运行 能够通过网络通信 如Web: Web服务器软件与浏览器软件通信 没有为网络核心的设备书写的软件 网络核心设备不作用于应用层 这种 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 使得能够快速开发应用应用体系结构应用体系结构客户机/服务器 对等 (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’s msec 是, 几秒 是, 100 msec 是和不是因特网运输协议服务因特网运输协议服务TCP服务: 面向连接: 客户机和服务器之间所需的建立 可靠传输:在发送和接收进程之间 流控制: 发送方不会淹没接收方 拥塞控制: 当网络过载时抑制发送方 并不提供: 定时,最小带宽保证UDP服务: 在发送进程及接收进程之间的不可靠数据传输 不提供:建立连接建立,可靠性,流控,拥塞控制,定时或带宽保证 问题:为什么这么麻烦?为什么需要UDP? 因特网应用:应用协议与运输协议因特网应用:应用协议与运输协议 应用 应用层协议 下面的传输协议 电子邮件 SMTP [RFC 2821] TCP 远程终端访问 Telnet [RFC 854] TCP Web HTTP [RFC 2616] TCP 文件传输 FTP [RFC 959] TCP 远程文件服务器 NFS [McKusik 1996] UDP或TCP 流媒体 通常专用(如Real Networks) UDP或TCP 因特网电话 通常专用(如Net2phone) 典型用UDP第2章 要点第2章 要点2.1 网络应用的原则 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器Web和HTTPWeb和HTTP某些术语 Web页由对象组成 对象可以是HTML文件,JPEG图片,Java小程序,音频文件,… Web页由基本的HTML文件组成 ,基本的HTML文件包括了几个引用对象 每个对象可由URL寻址 URL的例子: HTTP概况HTTP概况HTTP: 超文本传送协议 Web的应用层协议 客户机/服务器模式 客户机: 请求、接收,”显示“Web对象浏览器 服务器: Web服务器响应请求而发送对象 HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068PC 运行 Explorer服务器运行Apache Web 服务器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假定使用输入URL www.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问题: 每个对象要求2 RTT 操作系统必须为每个TCP连接工作并分配逐级资源 但浏览器经常打开并行TCP连接以获取引用的对象 持久HTTP 在发送响应后,服务器让连接打开 在相同的客户机/服务器之间的后继HTTP报文通过该连接发送无流水线的持续: 仅当前面的响应已经收到,客户机发出新的请求 对每个引用对象一个RTT 有流水线的持续: 在HTTP/1.1 为默认 只要客户机遇到一个引用对象,它发送请求 对于所有引用的对象花费一个RTT时间HTTP请求报文HTTP请求报文两类HTTP报文:请求,响应 HTTP请求报文 : ASCII (人可读的格式)GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (另外的回车,换行) 请求行 (GET, POST, HEAD命令)首部行回车,换行指示报文的结束HTTP 请求报文: 通用格式HTTP 请求报文: 通用格式上载表单输入上载表单输入Post方法: Web页经常包括表单输入 在实体主体中的输入被上载到服务器 URL方法: 使用 GET方法 在请求行的URL字段中的输入被上载:www.somesite.com/animalsearch?monkeys&banana方法类型方法类型HTTP/1.0 GET POST HEAD 请求服务器 许可 商标使用许可商标使用许可商标使用许可商标使用许可商标使用许可 响应请求的对象HTTP/1.1 GET, POST, HEAD PUT 向URL字段中定义的路径,上载在实体主体中文件 DELETE 删除在URL字段中定义的文件HTTP 响应报文HTTP 响应报文HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT 服务器: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ... 状态行 (协议状态码状态短语)首部行数据,如请求的HTML文件HTTP响应状态码HTTP响应状态码200 OK 请求成功,请求的对象在这个报文后面 301 Moved Permanently 请求的对象已转移,新的URL在响应报文的Location:首部行中指定 400 Bad Request 请求报文不为服务器理解 404 Not Found 请求的文档没有在该服务器上发现 505 HTTP Version Not Supported在服务器到客户机响应报文中的首行. 一些编码的例子:你自行试验HTTP (客户机侧)你自行试验HTTP (客户机侧)1. Telnet 到你喜欢的Web服务器上: 打开到位于cis.poly.edu的端口80(默认的HTTP服务器端口). 键入的任何东西将发送到位于cis.poly.edu的80端口telnet cis.poly.edu 802. 键入一个GET HTTP请求: GET /~ross/ HTTP/1.1 Host: 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: 保持“状态” (续)服务器为用户生成 ID 1678后端数据库中的表项访问访问一个星期以后: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 从机构路由器到任何起始服务器并返回的时延= 2 sec 结果 局域网利用率 = 15% 访问链路利用率 = 100% 总时延 = 因特网时延 + 访问时延 + LAN时延 = 2 sec + 分钟 + 毫秒起始服务器公共因特网机构网络10 Mbps LAN1.5 Mbps 访问链路缓存例子 (续)缓存例子 (续)可能的解决方案 将访问链路的带宽提高到如10 Mbps 结果 LAN利用率 = 15% 访问链路利用率= 15% 总时延 = 因特网时延 + 访问时延 + LAN时延 = 2 sec + 毫秒 + 毫秒 通常升级费用可观起始服务器公共因特网机构网络10 Mbps LAN1.5 Mbps 访问链路缓存例子 (续)缓存例子 (续)安装缓存器 假定命中率是0.4 结果 40%请求将几乎立即得到满足 60%请求由起始服务器 满足 访问链路的利用率减少到60%, 产生可忽略不计的时延 (如10 msec) 总平均时延= 因特网时延 + 访问时延 + LAN时延 = .6*(2.01) secs + 毫秒< 1.4 secs 起始服务器公共因特网机构网络10 Mbps LAN1.5 Mbps 访问链路机构缓存器条件GET方法条件GET方法目的:如果缓存中有最新缓存版本,就不发送该对象 缓存器: 在HTTP请求If-modified-since: 中,指定缓存版本的日期 服务器:如果缓存的拷贝是最新的,响应不包含对象: HTTP/1.0 304 Not Modified缓存器服务器HTTP 请求报文 If-modified-since: 不修改对象HTTP 请求报文 If-modified-since: HTTP响应 HTTP/1.0 200 OK 修改对象第2章 要点第2章 要点2.1 网络应用的原则 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器FTP: 文件传输协议FTP: 文件传输协议传输文件到/来自远程主机 客户机/服务器模型 客户机: 发起传输一侧(到/来自远程之一) 服务器: 远程主机 ftp: RFC 959 ftp 服务器: 端口 21文件传输远程文件系统主机上的用户FTP: 独立的控制和数据连接FTP: 独立的控制和数据连接FTP客户机联系FTP服务器的21号端口,指定TCP为运输协议 客户机通过控制连接获得授权 客户机经控制连接通过发送命令浏览远程目录 当服务器接收到一个文件传输命令时,该服务器打开到客户机的一个数据连接 在传输一个文件后,服务器关闭连接服务器打开第二个TCP数据连接,以传输另一个文件 控制连接:“带外” FTP 服务器维护“状态”:当前目录,较早的鉴别 FTP命令, 响应FTP命令, 响应命令示例: 经控制信道以ASCII 文本发送 USER username PASS password LIST返回当前目录中的文件列表 RETR filename获取(get) 文件 STOR filename 存储 (puts)文件到远程主机返回码示例: 状态码和短语(如在HTTP中的那样) 331 Username OK, password required 125 data connection already open; transfer starting 425 Can’t open data connection 452 Error writing file第2章 要点第2章 要点2.1 网络应用的原则 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器电子邮件电子邮件三个主要部分: 用户代理 邮件服务器 简单邮件传输协议: SMTP 用户代理 亦称为 “邮件阅读器” 写作、编辑、阅读邮件报文 例如Eudora, Outlook, elm, Netscape Messenger 存储在服务器上的报文的达到和离开邮件 服务器邮件 服务器电子邮件: 邮件服务器电子邮件: 邮件服务器邮件服务器 邮箱包含用户的到达报文 离开(将发送)邮件报文的报文队列 在发送电子邮件报文的邮件服务器之间的SMTP协议 客户机:发送邮件服务器 服务器:接收邮件的服务器邮件 服务器邮件 服务器电子邮件: SMTP [RFC 2821]电子邮件: SMTP [RFC 2821]使用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: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: S: 250 alice@crepes.fr... Sender ok C: RCPT TO: S: 250 bob@hamburger.edu ... Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUIT S: 221 hamburger.edu closing connection自行试验SMTP 交互:自行试验SMTP 交互:telnet 服务器name 25 观察来自服务器的 220 回答 输入HELO, MAIL FROM, RCPT TO, DATA, QUIT 命令 上述过程使你发送电子邮件而不使用电子邮件客户机(阅读器)SMTP: 有关情况SMTP: 有关情况SMTP使用持久连接 SMTP要求报文(首部和主体) 以7bit ASCII格式 SMTP服务器使用 CRLF.CRLF以决定报文结束与HTTP的比较: HTTP: 拉 SMTP: 推 两者都有ASCII 命令/响应交互,状态码 HTTP: 每个对象封装在其自己的响应报文中 SMTP: 多个对象在多方报文中发送邮件报文格式邮件报文格式SMTP: 交换电子邮件报文的协议 RFC 822: 文本报文格式的标准: 首部行,如 To: From: Subject: 不同于SMTP命令! 主体 “报文”, 均为ASCII 字符首部主体空行 报文格式: 多媒体扩展 报文格式: 多媒体扩展MIME: 多媒体邮件扩展, RFC 2045, 2056 在报文首部的附加行声明MIME内容类型多媒体数据类型, 子类型, 声明参数使用编码数据的方法MIME 版本编码数据邮件访问协议邮件访问协议SMTP: 交付/存储到接收方服务器 邮件访问协议:从服务器获取邮件 POP: 邮局协议 [RFC 1939] 授权 (代理 <-->服务器) 并下载 IMAP: 互联网邮件访问协议 [RFC 1730] 更多特色 (更复杂) 操作存储在服务器上的报文 HTTP: Hotmail , Yahoo! Mail等 SMTP访问协议接收方邮件服务器POP3协议POP3协议特许阶段 客户机命令: user: 声明用户名 pass: 口令 服务器响应 +OK -ERR 事务阶段, 客户机: list: 列出报文成员 retr: 由数字获取报文 dele: 删除 quit C: list S: 1 498 S: 2 912 S: . C: retr 1 S: S: . C: dele 1 C: retr 2 S: S: . C: dele 2 C: quit S: +OK POP3 服务器 signing off S: +OK POP3 服务器 ready C: user bob S: +OK C: pass hungry S: +OK user successfully logged onPOP3 和 IMAPPOP3 和 IMAPPOP3其他情况 前面的例子使用了 “download and delete” 模式 如果Bob改变客户机,则不能重读电子邮件 “Download-and-keep”: 在不同客户机上的报文拷贝 POP3跨越会话是无状态的IMAP 在一个地方保持所有报文:服务器 允许用户在文件夹中组织报文 IMAP跨越会话保持用户状态: 文件夹名和报文ID和文件夹名之间的映射第2章 要点第2章 要点2.1 网络应用的原则 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器DNS: 域名系统DNS: 域名系统人: 许多标识符 社会保险号, 名字, 护照 # 因特网主机、路由器: IP地址(32 bit) :用于数据报寻址 “名字”, 如www.yahoo.com – 由人所使用 问题: IP地址和名字之间的映射?域名系统: 分布式数据库 由层次化的许多名字服务器实现 应用层协议 主机、路由器、名字服务器通信以解析名字 (地址/名字转换) 注意:因特网核心功能,作为应用层协议实现 复杂性位于网络“边缘”DNS DNS DNS服务 主机名到IP地址的转换 主机别名 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 名和别名 邮件服务器别名 负载分配 复制的Web服务器:对一个规范名的IP地址集合为何不用集中式DNS? 单点故障 通信量 远程集中式数据库 维护 不具有扩展性!分布式、等级制数据库分布式、等级制数据库客户机要求www.amazon.com 的IP地址; 1st approx: 客户机请求根服务器以发现com DNS服务器 客户机请求com DNS服务器以得到 amazon.com DNS 服务器 客户机请求amazon.com DNS服务器以得到对 www.amazon.com的IP地址DNS: 根名字服务器DNS: 根名字服务器当本地名字服务器不能分解名字时联系它 根名字服务器: 如果名字映射未知,联系权威名字服务器 获得映射 返回对本地名字服务器的映射 世界范围的13个根名字服务器顶级域和权威服务器顶级域和权威服务器顶级域(TLD)服务器: 负责com, org, net, edu等,以及所有顶级国家域 uk, fr, ca, jp. Network Solutions维护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设计 RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.htmlDNS记录DNS记录DNS: 分布式数据库存储资源记录 (RR)Type=NS name 是域 (如 foo.com) Value是该域的权威名字服务器的IP地址Type=A name 是主机名 name是IP地址 Type=CNAME name 是对某些“规范的”(真实)名字的别名 www.ibm.com 实际是 服务器east.backup2.ibm.com value 是规范名Type=MX Value是与name相联系的邮件服务器DNS 协议、报文DNS 协议、报文DNS协议 : 查询和回答报文, 都具有相同的报文格式报文首部 标识符 identification: 16 bit #用于查询和回答,回答与查询使用相同的# 标志flags: 查询或回答 希望递归 递归可用 回答是权威的DNS 协议,报文DNS 协议,报文用于查询的名字、类型字段对查询的响应中的RR 权威服务器的记录 可被使用的附加“有帮助的”信息 将记录插入DNS将记录插入DNS例子:创建新兴公司Network Utopia 在注册登记机构 (如 Network Solutions)注册名字为networkuptopia.com,需要提供你的权威名字服务器(基本和辅助的) 的名字和IP地址 注册登记机构 将两条RR插入com TLD服务器: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A) 对www.networkuptopia.com,在权威服务器插入 Type A记录,对networkutopia.com插入 Type MX 记录 人们如何得到你Web站点的IP地址呢?第2章 要点第2章 要点2.1 网络应用的原则 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器P2P 文件共享P2P 文件共享例子 Alice在她自己的笔记本机上运行P2P客户机应用程序 间歇地与因特网相连;得到对每个连接的新IP地址 寻找歌曲 “Hey Jude” 应用程序显示具有Hey Jude 拷贝的其他对等方Alice选择其中一个对等方 Bob 文件从Bob的PC拷贝到Alice笔记本 : HTTP 在Alice 下载时, Alice也向其他用户上载 Alice的对等方既是Web客户机,也是瞬时的Web服务器 所有对等方都是服务器 = 高度可扩展!P2P: 集中式目录P2P: 集中式目录初始 “Napster”设计 1) 当对等方连接时,它通知中心服务器: IP地址 内容 2) Alice 查询 “Hey Jude” 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.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器套接字编程套接字编程套接字 API 在 BSD4.1 UNIX引入, 1981 由应用程序显式产生、使用和释放 客户机/服务器范式 通过套接字 API 提供两类运输服务: 不可靠数据库 可靠, 面向字节流目标: 学习构建使用套接字通信的客户机/服务器应用程序使用TCP套接字编程使用TCP套接字编程套接字: 应用程序进程和端到端运输协议(UCP 或TCP)之间的门 TCP服务: 从一个进程到另一个的可靠字节传输由应用程序研发者控制由操作系统控制主机或服务器由操作系统控制主机或服务器internet由应用程序研发者控制TCP套接字编程TCP套接字编程客户机 必须联系服务器 服务器进程必须首先运行 服务器必须已经生成 套接字 (门) ,以欢迎客户机的联系 客户机联系服务器,通过: 创建客户机本地TCP 套接字 定义服务器进程的IP地址,端口号 当客户机 产生套接字时:客户机TCP创建到服务器 TCP 的连接当客户机联系时, 服务器 TCP 为服务器进程生成新的套接字 ,以与 客户机通信 允许服务器与多个 客户机交谈 源端口号用于区分客户机 (详情参见第3章)TCP在客户机和服务器之间提供可靠的、按序的字节传输(管道)流的术语流的术语一个流是流入或流出某进程的字符序列 一个输入流与该进程的某些输入源(如键盘或套接字)相联系 一个输出流与输出源(如监视器或套接字)相联系TCP套接字编程TCP套接字编程例子 客户机-服务器 app: 1) 客户机从标准输入 (inFromUser stream)读入行 , 经套接字 (outToServer stream) 发送给服务器 2) 服务器从套接字读行 3) 服务器转换成大写, 向客户机发送 4) 客户机读, 从套接字 (inFromServer stream) 打印修改的行客户机 process客户机 TCP 套接字客户机/服务器套接字交互: TCP客户机/服务器套接字交互: TCP服务器 (运行在 hostid上)客户机例子: Java 客户机 (TCP)例子: Java 客户机 (TCP)import java.io.*; import java.net.*; class TCP Client { public static void main(String argv[]) throws Exception { String sentence; String modifiedSentence; BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); Socket ClientSocket = new Socket("hostname", 6789); DataOutputStream outToServer = new DataOutputStream(ClientSocket.getOutputStream()); 产生输入流产生客户机套接字, 与服务器连接生成输出流与套接字联系例子: Java 客户机 (TCP)例子: Java 客户机 (TCP) BufferedReader inFromServer = new BufferedReader(new InputStreamReader(ClientSocket.getInputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'); modifiedSentence = inFromServer.readLine(); System.out.println("FROM Server: " + modifiedSentence); ClientSocket.close(); } } 产生与套接字联系的输入流向服务器发送行从服务器读行例子: Java 服务器 (TCP)例子: Java 服务器 (TCP)import java.io.*; import java.net.*; class TCP Server { public static void main(String argv[]) throws Exception { String ClientSentence; String capitalizedSentence; ServerSocket welcomeSocket = new ServerSocket(6789); while(true) { Socket connectionSocket = welcomeSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 在端口6789 生成欢迎套接字在欢迎套接字等待客户机的联系生成输入流,与套接字联系例子: Java 服务器 (TCP)例子: Java 服务器 (TCP) DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); ClientSentence = inFromClient.readLine(); capitalizedSentence = ClientSentence.toUpperCase() + '\n'; outToClient.writeBytes(capitalizedSentence); } } } 从套接字逐行读生成输出流,与套接字联系向套接字读出行当循环结束,循环回来并等待另一个客户机连接 第2章 要点第2章 要点2.1 网络应用的原则 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 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)import java.io.*; import java.net.*; class UDPSocket { public static void main(String args[]) throws Exception { BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket ClientSocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] sendData = new byte[1024]; byte[] receiveData = new byte[1024]; String sentence = inFromUser.readLine(); sendData = sentence.getBytes(); 生成输入流生成客户机套接字使用DNS将主机名转换为IP地址例子: Java 客户机 (UDP), cont.例子: Java 客户机 (UDP), cont. DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 9876); ClientSocket.send(sendPacket); DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); ClientSocket.receive(receivePacket); String modifiedSentence = new String(receivePacket.getData()); System.out.println("FROM Server:" + modifiedSentence); ServerSocket.close(); } } 使用要发送的数据、长度、IP地址、端口生成数据报向服务器 发送数据报从服务器读数据报例子: Java 服务器 (UDP)例子: Java 服务器 (UDP)import java.io.*; import java.net.*; class UDPServer { public static void main(String args[]) throws Exception { DatagramSocket ServerSocket = new DatagramSocket(9876); byte[] receiveData = new byte[1024]; byte[] sendData = new byte[1024]; while(true) { DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length); ServerSocket.receive(receivePacket); 在端口9876生成数据报套接字为接收的数据报生成空间接收数据报例子: Java 服务器 (UDP)例子: Java 服务器 (UDP) String sentence = new String(receivePacket.getData()); InetAddress IPAddress = receivePacket.getAddress(); int port = receivePacket.getPort(); String capitalizedSentence = sentence.toUpperCase(); sendData = capitalizedSentence.getBytes(); DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port); ServerSocket.send(sendPacket); } } } 获得发送方的 IP 地址,端口# 向套接字写出数据报当循环结束,循环回来并等待另一个数据报产生数据报发送给客户机第2章 要点第2章 要点2.1 网络应用的原则 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 SMTP, POP3, IMAP 2.5 DNS 2.6 P2P 文件共享 2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器构建一个简单的Web 服务器构建一个简单的Web 服务器处理一个HTTP请求 接受该请求 解析首部 从服务器的文件系统获得请求的文件 产生HTTP响应报文: 首部行+文件 向客户机发送响应在生成服务器后, 你能够使用浏览器(如IE explorer) 请求文件 详见
本文档为【TopDownV3-2】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_780331
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2011-06-26
浏览量:5