




已阅读5页,还剩104页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
应用层,第2章,探索上网、传送文件、收发邮件等常见网络应用之谜,内容领航,应用层基本概念 域名解析与DNS协议 Web应用与HTTP协议 文件传送与FTP协议 电子邮件与SMTP、POP3协议 远程登录与telnet协议 套接字编程初步,应用层的特点,内容丰富 因特网可以为用户提供各种不同的应用,每一种应用都有自己的应用层协议,所以应用层的协议非常多。 面向应用 应用层协议离用户最近,直接为用户服务。 应用层协议一般只关注特定应用中信息如何交互,而很少关心信息的传送细节。,如何构建一个网络应用?,网络应用往往涉及两个进程,它们通过网络进行通信。 进程(Process):主机中动态运行的程序 同一主机的进程间通信:进程间通信(IPC) 不同主机的进程间通信:消息传递 如何构建和部署一个新的网络应用? 位于网络两端的两个程序以何种方式互相通信?,客户/服务器模式,客户/服务器模式是网络应用程序的主要通信模式。 服务器 提供服务的进程 一直保持运行状态,随时准备接受请求。 地址固定 客户 请求服务的进程 需要时运行,可以向服务器发送请求。 地址可变,数据链路层,物理层,运输层,网络层,数据链路层,物理层,运输层,网络层,应用层,应用层,因特网,计算机A,计算机B,套接字(socket),进程通过它的套接字在网络上发送和接收数据。,如何为进程编址?,IP地址 唯一标识一台因特网的主机 32位二进制数 端口号 唯一标识主机中的一个进程 16位二进制数 套接字就是利用IP地址和端口号的组合来标识的。,进一步讨论端口号,端口是应用进程的标识 本质上是在运输层首部的一个字段的值,有TCP端口号和UDP端口号两种。 端口占两个字节,范围是065535 01023为保留使用的端口号(熟知端口号),通常分配给相关应用的服务器进程 HTTP:80 DNS:53 SMTP:25 POP:110 102465535为用户进程可以使用的动态分配的临时端口号 试问:为什么不使用操作系统的进程号来标识网络进程?,IP地址与端口号图示,客户端A向服务器B端请求网页,源端口随机从可用端口取,目标端口为80,C打开两个浏览器,向B发送两个网页请求,常用应用程序对传输功能的要求,应用程序 文件传输 e-mail Web 网页 实时音频/视频 存储音频/视频 交互式游戏 金融应用,数据丢失 不丢失 不丢失 不丢失 允许丢失 允许丢失 允许丢失 允许丢失 不丢失,带宽 弹性 弹性 弹性 音频: 5Kb-1Mb 视频:10Kb-5Mb 同上 几 Kb/s 以上 弹性,实时性 无 无 无 100s msec few secs 100s msec yes and no,Internet 的传输协议提供的服务,TCP 提供的服务:可靠 面向连接:在客户端和服务器进程之间需要建立连接,可靠传输 流量控制:通过限制发送方的发送速度使接收方有能力接收 拥塞控制:当网络超负荷时,减少发送速度 不提供:实时性,最小带宽承诺 UDP服务:速度快,不可靠 不提供:连接建立,可靠性保证,流量控制,拥塞控制,实时性,最小带宽承诺,因特网应用对传输协议的选择,应用 e-mail 远程终端访问 Web 文件传输 流媒体 网络文件服务器 IP电话,应用协议 smtp RFC 821 telnet RFC 854 http RFC 2068 ftp RFC 959 专有协议 (e.g. RealNetworks) NSF 专有协议 (e.g., Vocaltec),使用的传输层协议 TCP TCP TCP TCP TCP or UDP TCP or UDP typically UDP,DNS域名解析系统(RFC1034,1035),2.的IP地址是1,ISP2,DNS服务器,3.这下我知道江西师大的IP地址了,我可以请求网页了,1.请问的IP地址是多少?,从Hosts文件到DNS,早期Hosts文件解析主机名 主机名称重复 名称解析效能下降 更新维护困难 DNS服务 层次性域名 分布式服务,域名空间结构,根域 顶级域 组织域 国家或地区域 反向域 二级域 主机名 FQDN(Fully Qualified Domain Name):全域名,cn,com,edu,edu,ncu,jxnu,cs,ma,en,com,jxnu,,,,,,顶级域名服务器,本地域名服务器 也是的授权域名服务器,.,cn,uk,根域名服务器,二级域名服务器,dns.root,主机,域名服务器,DNS查询过程,DNS客户机,本地域名服务器,根DNS服务器,cn,,,2,3,4,6,7,1,递归查询,迭代查询,Web服务器,5,,DNS查询类型,从查询方式上分 递归查询 要么做出查询成功响应,要么作出查询失败的响应 迭代查询 若有可能,返回下一级DNS服务器的IP地址 从查询内容上分 正向查询由域名查找IP地址 反向查询由IP地址查找域名,DNS的进一步讨论,问题:每次访问网页前进行的DNS请求都按前述步骤进行,会出现哪些不利因素? 性能瓶颈 效率低下 怎样克服上述不利因素? 高速缓存机制,DNS的高速缓存,高速缓存机制 客户端短期内会将DNS映射缓存 DNS服务器从上级DNS服务器获得的DNS映射会缓存 缓存的映射必须有生存时间 问题:缓存机制带来的都是好处吗? 导致有时无法及时获得更新的DNS映射 导致DNS的负载均衡部分失效,域名解析顺序,解析域名顺序 本机DNS缓存 本机Hosts文件 DNS服务器 本机DNS缓存 Ipconfig /displaydns Ipconfig /flushdns 本机Hosts文件 Hosts文件%SystemRoot%system32driversetchosts,DNS的资源记录(Resource Record),name:域名,value:根据type的不同意义不同,RR类型: type value A 域名对应的IP地址 NS 域名对应的授权域名服务器名称 CNAME 域名对应的别名 MX 域名对应的邮件服务器的名称,ttl:该记录在缓存中能停留的时间,0表示不能缓存,class: RR的类别代码,默认为0001,表示因特网,DNS的报文格式,事务标识号,标记(报文类型):如标记请求还是响应,问题的个数,回答RR个数,授权域名RR数,附加RR数,问题具体的RR,回答具体的RR,域名对应的授权域名服务器相关RR,附加的具体RRs,标记字段详解,QR,AA,TC,RD,RA,Opcode,Z,RCODE,QR 是1 bit字段:0表示查询报文,1表示响应报文。,opcode是一个4 bit字段:通常值为0(标准查询),其他值为1(反向查询)和2(服务器 状态请求)。,AA表示“授权回答”。该名字服务器是授权于该域的。,TC表示“可截断的”。使用UDP时,它表示当应答的总长度超 过512字节时,只返回前512个字节。,RD表示“期望递归”。该比特能在一个查询中设置,并在响应中返回。,RA表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比特设置为1。,未用,全为0,rcode字段的值一般为0(没有差错)和3(名字差错)。名字差错从一个授权名字服务器上返回,表示在查询中指定的域名不存在。,实验:DNS的基本操作和协议分析,实验目的: 掌握DNS客户端的配置方法 通过ping和nslookup观察DNS的解析过程 掌握使用协议分析软件验证分析DNS请求报文和响应报文的格式 掌握在Windows 2003中搭建DNS服务器,WWW万维网,www通过网页的形式访问站点,通过超级链接,链接不同的网站不同的页面,WWW的相关概念,万维网采用的是C/S模式 客户端程序:浏览器 如:IE, firefox 服务器端程序: 如:IIS, Tomcat, Apache Web页面:即网页,由文字、图片、声音、视频、超级链接等多种对象组成,构建WWW应用需解决哪些问题?,如何唯一标识分布在因特网上的网页及其中包含的各种对象? 统一资源定位符 URL (Uniform Resource Locator) URL格式:,:/:/,ftp:文件传送协议 http: 超文本传送协议, 是存放资源的主机 在因特网中的域名或IP地址,端口根据协议有默认值,如http为80端口,默认端口可以省略; 路径是文件在主机中的相对位置,当路径省略时自动打开默认文档,构建WWW应用需解决哪些问题?,客户端如何从服务器端得到网页及相关对象? 超文本传送协议 HTTP (Hyper Text Transfer Protocol),使用TCP作为传输层,默认端口号80 如何表示和显示包含链接、图片等多种信息的网页? 超文本标记语言 HTML (Hyper Text Markup Language) 怎样使用户能够很方便地找到所需的信息? 搜索引擎SE(Search Engine) 如:,,HTTP协议,Web服务器,HTTP请求报文:给我某个页面吧,HTTP响应报文:我有这个页面,给你,浏览器,输入网址后发生了什么?,1.客户端浏览器向DNS服务器请求的IP地址,3.服务器收到请求,向客户端提供所需的网页,2.浏览器获得IP地址,向Web服务器建立TCP连接,不断发送页面对象请求。,4.客户端获得页面对象后断开TCP连接,HTTP1.0(RFC1945)的工作过程,Web服务器,浏览器,第一阶段:TCP建立连接阶段,第三阶段:断开TCP连接,依次请求页面链接的对象,。,第二阶段:获取页面文档阶段,断开TCP连接,客户端分析页面的链接对象,依次建立新的TCP连接,获取页面链接的对象,如图片,动画等,HTTP1.0的性能讨论,非持续连接(Non-persistent):使用多条TCP连接获取对象(http1.0默认使用的方式) 获得对象需要2 RTTs 每次传送都要受到TCP初始化时的慢启动影响 浏览器同时打开多个并行的连接来改善性能 非流水线作业方式 完整收到每个对象后才发送对下一个对象的请求 讨论:怎样改进HTTP1.0的性能?,改进版:HTTP1.1(RFC2616),浏览器,第一阶段:TCP建立连接阶段,第三阶段:在同一个TCP上依次请求页面链接的对象,。,第二阶段:获取页面文档阶段,客户端分析页面的连接对象,在同一个TCP连接上连续发送多个页面链接的对象的请求,如图片,动画等,逐渐接收对象,HTTP1.1的特点,持续连接(Persistent):多个对象共享同一条TCP连接(http/1.1的默认设置) 客户端一旦下载到了基本的html文件(base HTML),马上发送对所有网页引用对象的请求 较少的RTTs, 较少的慢启动 流水线作业方式 没有收到上一个请求的对象就发送对新的对象的请求,HTTP请求报文的格式,HTTP请求报文一般不需要数据,注意:HTTP协议首部使用ASCII码作为编码方式,HTTP请求报文的格式,常见的HTTP请求的方法: OPTION 请求一些选项的信息 GET 请求读取由URL所标志的信息 HEAD 请求读取由URL所标志的信息的首部 POST 给服务器添加信息(例如,注释) PUT 在指明的URL下存储一个文档 DELETE 删除指明的URL所标志的资源 TRACE 用来进行环回测试的请求报文 CONNECT 用于代理服务器 首部字段名定义了一些双方协商的参数,如客户端浏览器的类型,允许接收的数据类型,允许接收的语言,使用的编码方式等,HTTP响应报文的格式,HTTP响应报文的数据一般就是客户端请求的页面内容,HTTP响应报文的格式,响应报文的开始行是状态行,它包括: HTTP 的版本 状态码(3位数字) 解释状态码的简单短语 常见的状态码: 1xx 表示通知信息的,如请求收到了或正在进行处理。 2xx 表示成功,如接受或知道了。 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。 4xx 表示客户的差错,如请求中有错误的语法或不能完成。 5xx 表示服务器的差错,如服务器失效无法完成请求。,状态码及状态信息举例,200 OK 请求成功,请求的对象在这个报文后面 301 Moved Permanently 请求的对象已转移,新的URL在响应报文的Location:首部行中指定 400 Bad Request 请求报文不为服务器理解 404 Not Found 请求的文档没有在该服务器上发现 505 HTTP Version Not Supported 请求的HTTP版本不被支持,WWW的性能讨论,企业网,Web服务器,Internet,浏览器,R1,R2,企业网多个用户需要访问同一个Web服务器,Internet链路负载和时延都很大,试问:如何提高客户端访问效率,并减少Internet链路的流量和Web服务器的负载?,使用Web缓存,企业网,Web服务器,Internet,浏览器,R1,R2,增加一个Web高速缓存代理服务器,缓存页面,1.内网浏览器首次发送请求数据给Web服务器,2.Web服务器发送页面,3.页面进入内网会保存一份副本到代理服务器的缓存中,高速缓存 (代理服务器),4.其余内网用户需访问同一Web页面,会首先访问代理服务器,试问:如何保证代理服务器的页面与Web服务器的相关最新页面一致?,条件GET方法,代理服务器收到的HTTP响应报文,记录页面的最后修改时间,代理服务器发送给Web服务器的HTTP请求报文,判断页面是否有更新,HTTP响应 HTTP/1.0 200 OK ,未修改,已修改,缓存的效能举例,假定 平均对象长度 = 100kb 来自机构的浏览器的 平均请求 = 15次/s 从机构路由器到服务器 并返回的平均时延= 2 s 结果 LAN带宽利用率 = 15% 接入链路流量强度 = 1 总时延 = 因特网时延 + 接入排队时延 + LAN时延 = 2 s + 分钟 + 毫秒,服务器,公共因特网,机构网络,10 Mbps LAN,1.5 Mbps 接入链路,解决方案1:提高接入带宽,措施 将访问链路的带宽提高 到10 Mbps 结果 LAN带宽利用率 = 15% 接入链路流量强度= 0.15 总时延 = 因特网时延 + 接入排队时延 + LAN时延 = 2 s + 毫秒 + 毫秒 通常升级费用可观,服务器,公共因特网,机构网络,10 Mbps LAN,10 Mbps 接入链路,解决方案2:设置缓存服务器,假定 Web缓存的命中率是0.4 结果 40%请求将几乎立即得到满足 60%请求由起始服务器 满足 接入链路的流量强度减少到0.6, 产生可忽略不计的时延 总平均时延= 因特网时延 + 接入排队时延 + LAN时延 = 0.6*(2.01s) + 0.4*(0.01s) = 1.21 s 时延更短 成本更低,服务器,公共因特网,机构网络,10 Mbps LAN,1.5 Mbps 接入链路,机构缓存服务器,一般情况下,流量强度小于0.8时排队时延比较小,HTTP的无状态性,HTTP是“无状态的” 服务器不保留有关客户机过去请求的任何信息。,试问:服务器如何维护用户登录名和密码信息,保证用户下次访问不需要再次登录?,Cookie的奥妙,Cookie文件名,文件内容,HTTP请求报文携带cookie内容,使用Cookie保存信息,实验:构建Web服务与Http协议分析,实验目的: 了解iis的基本配置方法 判断Http是否加密传输? 测试Http的服务器监听端口是否必须是80端口 分析持续连接和非持续连接,流水线和非流水线 分析Http的请求报文和响应报文的格式 验证Web缓存,FTP文件传输协议,FTP(file transfer protocol)用于因特网文件传输(RFC 959) 使用客户端/服务器模式 使用TCP提供可靠的传输 FTP属于维护状态的协议 FTP使用两条TCP连接完成数据传输 数据连接:端口20 控制连接:端口21,控制连接与数据连接,Internet,控制进程,数据传送 进程,用户界面,控制进程,数据传送 进程,客户端,服务器端,控制连接:端口21,数据连接:端口20,讨论:FTP为什么使用两条TCP连接,FTP下载文件与HTTP文件下载的方式有何不同?,与FTP服务器交互,登录FTP,也可输入ftp,再用open + IP(域名),服务器端返回信息(控制连接),用户名,服务器端返回信息(控制连接),密码,客户端不会回显,服务器端返回信息(控制连接),列出目录,服务器端返回信息(控制连接),服务器FTP共享目录内容( 数据连接),服务器端返回信息(控制连接),进入class目录,下载文件rfc945(ftp).txt,服务器端返回信息(控制连接),退出FTP,断开和服务器的控制连接,服务器端返回信息(控制连接),FTP协议分析,服务器端返回信息(控制连接),客户端输入用户名,服务器端返回信息(控制连接),客户端输入密码,密码明文传输,分析:客户端输入ls命令和get命令后FTP协议具体通信内容,判断数据连接和控制连接,实验:构建FTP服务与FTP协议分析,实验目的: 学会构建FTP服务器,学会FTP服务器的配置和FTP客户端的使用 学会使用FTP命令行的方式在FTP客户端访问FTP 分析FTP协议的工作细节 分析FTP数据连接和控制连接 分析协议的安全性,电子邮件系统,电子邮件系统的组成 用户代理:电子邮件客户端软件,如IE浏览器,Outlook,Outlook Express,Foxmail等 邮件服务器:提供邮件服务的主机,如163邮件服务器和 邮件发送和接收协议:HTTP,SMTP,POP3等,用 户 代 理,用 户 代 理,邮件 服务器,邮件 服务器,电子邮件的发送和接收过程,假设一个新浪网的用户发送一封邮件到,接收邮件必须由接收端主动接收,邮件发送到目标邮件服务器后便完成发送,邮件服务器使用先到先服务原则发送邮件到目标邮件服务器,通过IE(HTTP)和邮件代理(SMTP)发送邮件,发送方,接收方,SMTP协议,SMTP(Simple Mail Transfer Protocol):简单邮件传输协议 使用TCP可靠的传送邮件报文, 服务器监听端口为25 使用命令/响应代码完成邮件传输的控制交互 命令: ASCII文本 响应: 状态码和短语 注意:邮件报文必须使用7-bit ASCII表示,SMTP协议细节,发送方,接收方,三次握手建立TCP连接,讨论:SMTP协议发邮件不需要认证可能带来的问题,SMTP进一步讨论,SMTP发送邮件不认证导致垃圾邮件泛滥,ESMTP使得发送邮件需要认证 SMTP使用持续连接完成邮件的发送 SMTP协议只能传输ASCII码,使得邮件只能发送文本文件 为突破只能发送文本文件的限制,SMTP使用扩展MIME将非文本文件采用Base64或Quoted printable编码成文本文件 讨论:SMTP协议与HTTP协议的异同,MIME,MIME(Multipurpose Internet Email Extension):多功能Internet邮件扩展 参考RFC 2045,RFC2046,MIME的关键是如何将非ASCII码转变成ASCII码,MIME协议分析,编码方式:Base64,编码内容,Base64编码,将三个Byte的数据变成4个6位的数 根据每个6位二进制数的值查找Base64编码表,找到对应的字符 用对应的4个字符来表示原来的三个字节的数据,0 A 17 R 34 i 51 z 1 B 18 S 35 j 52 0 2 C 19 T 36 k 53 1 3 D 20 U 37 l 54 2 4 E 21 V 38 m 55 3 5 F 22 W 39 n 56 4 6 G 23 X 40 o 57 5 7 H 24 Y 41 p 58 6 8 I 25 Z 42 q 59 7 9 J 26 a 43 r 60 8 10 K 27 b 44 s 61 9 11 L 28 c 45 t 62 + 12 M 29 d 46 u 63 / 13 N 30 e 47 v (pad) = 14 O 31 f 48 w 15 P 32 g 49 x 16 Q 33 h 50 y,Base64编码表,Base64编码图示,编码效率:75%,Base64编码举例,abc 01100001 01100010 01100011 (编码前:3字节) 011000 010110 001001 100011 00011000 00010110 00001001 00100011 24 22 09 35 YWJj (编码后:4字节) ab 01100001 01100010 011000 010110 001000 (补零) 00011000 00010110 00001000 24 22 08 YWI= a 01100001 011000 010000 (补零) 00011000 00010000 24 16 YQ=,Quote Printable编码,对于所有可打印的ASCII码,除等号“=”外,都不改变。 对于等号“=”和不可打印的ASCII码以及非ASCII码(如汉字),将每个字节的二进制代码用两个十六进制数字表示,然后在前面再加上一个等号“=” 例:“系统” 11001111 10110101 11001101 10110011 (编码前:4字节) CF B5 CD B3 =CF=B5=CD=B3 (编码后:12字节) 例:“=” 00111101 (编码前:1字节) 3D =3D (编码后:3字节),讨论:Base64编码和Quote Printable编码的优缺点与适用场合。,邮件接收协议,用户收取邮件常用的协议 POP(Post Office Protocol邮局协议) RFC 1939:服务器端口默认110 IMAP(Internet Mail Access 因特网邮件访问协议) Protocol RFC 1730:服务器默认端口143 HTTP,用户代理或浏览器,邮件 服务器,POP3协议,认证阶段: 客户端命令 服务器响应 user: 用户名 +OK pass: 口令 -ERR,交互阶段: 客户端: list: 列出邮件号码 retr: 用邮件号码取信 dele:用邮件号码删信 quit,明文发送密码,IMAP协议,IMAP具备和POP一样的邮件下载功能 IMAP 允许只读取邮件中的某一个部分。 IMAP提供操作的三种模式 在线方式:邮件保留在Mail服务器端,客户端可以对其进行管理。其使用方式与WebMail相类似 离线方式:邮件保留在Mail客户端,客户端可以对其进行管理。其使用方式与POP3相类似 分离方式:邮件的一部分在Mail服务器端,一部分在客户端。,实验:构建邮件服务和相关协议分析,实验目的: 掌握邮件服务器的构建 学会Outlook Express等邮件代理的基本配置 分析SMTP协议 分析POP协议 分析SMTP和POP的安全性,远程登录与Telnet协议(RFC854),远程登录:通过网络远程登录到其他主机。 Telnet(Telecommunication Network Protocol)是标准的提供远程登录功能的应用,几乎每个TCP/IP的实现都提供这个功能。 Telnet使用TCP提供可靠传输,服务器端口号23,传统的终端联机系统,Telnet的工作原理,伪终端驱动,终端驱动,应用程序,操作系统,终端,操作系统,Telnet协议的特点,网络虚拟终端(Network Virtual Terminal, NVT) 选项协商机制 对称处理连接的两端,网络虚拟终端NVT,伪终端,终端,本地计算机,字符集,远程计算机,字符集,NVT字符集,NVT字符集,NVT包括两个字符集 数据字符集 对于数据,NVT通常使用NVT ASCII,是8bit字符集,其中7个最低比特位和US ASCII相同,但最高位是0。 现在也可以最高位也可以是1,但必须在客户和服务器之间使用选项协商取得一致。 控制字符集 也使用8bit字符集,但最高位为1。,Telnet的控制字符集,数据信息与控制信息,Telnet仅使用一个TCP连接同时用于发送数据和控制信息。 思考:如何把字符流中的数据信息和控制信息区分开? IAC(将下一字符解释为命令) 在每个控制字符序列的前面加上控制字符IAC(FF) 。 如果要发送数据FF,则必须发送两个连续的IAC。 例:输入dir命令时,如果错输为dit则需使用回退键进行改正,回退字符将被转换为两个字符(IAC EC),即最终传给服务器的内容是(d i t IAC EC r)。,选项协商,Telnet运行客户与服务器相互进行选项协商。 选项协商是对称的,任何一方都可以主动发送选项协商请求给对方。 对于任何给定的选项,连接的任何一方都可以发送下面4种请求的任意一种请求: WILL (FB) 发送方本身想激活(enable)选项 WONT (FC) 发送发本身想禁止(disable)选项 DO (FD) 发送方想让接收方激活选项 DONT (FE) 发送方想让接收方禁止选项,选项协商,Telnet规定:对于激活选项请求(WILL和DO),可以同意或不同意,而对于禁止选项请求(WONT和DONT),必须同意。因此共有6种组合情况:,常见选项,子选项协商,有些选项不能仅仅用“激活”或“禁止”来表达,例如设置终端窗口的大小,为了处理这种选项,必须依靠子选项协商。 例:窗口大小选项协商 服务器: 客户端: ,子选项开始,子选项结束,客户转义符,Telnet运行用户直接和客户进程进行交互,而不是被发送到服务器进程。 用户可以使用客户转义符(也叫Escape字符,通常是Ctrl + ),使得客户进程显示其提示符(通常是“telnet”),这时有一些命令可供用户使用,以改变连接的特性或打印某些信息。 一般按回车键可以重新让用户和服务器进行交互。,操作方式,大多数Telnet的实现工作在三种方式中的一种: 默认方式(半双工方式) 字符方式 行方式,默认方式(半双工方式),回显由客户完成 用户键入字符,客户就把字符回显到屏幕,但到整个一行完成之前并不发送给服务器。 在把整个一行发送给服务器后,客户在接收来自用户的一个新行之前,要等待来自服务器的GA(Go ahead)命令。 这种操作是半双工的,因此比较低效。,字符方式,每一个键入的字符从客户发送给服务器。服务器通常将这个字符返回给客户,并显示在客户的屏幕上。 对每一个字符数据必须发送3个TCP报文段: 用户键入字符,发送给服务器 服务器确认收到的字符,将该字符回送给客户 客户确认收到被回送的字符,客户,服务器,行模式,行编辑(回显、字符删除、行删除等操作)由客户完成,然后客户把整个的行发送给服务器。 默认工作在全双工方式 客户一行接一行地发送,而不需要等待来自服务器的GA(Go ahead)命令。,实验:telnet使用及telnet协议分析,实验目的: 学习net start telnet及tlntadmn命令的用法 学习telnet客户的添加 学习telnet客户端命令的使用 分析telnet协议的选项协商及操作方式 分析telnet协议的安全性,套接字编程初步,套接字 API 在 BSD4.1 UNIX中首次引入(1981) 由应用程序显式产生、使用和释放 客户机/服务器模式 通过套接字 API 提供两类运输服务: 不可靠数据报 可靠, 面向字节流,TCP套接字编程,服务器首先运行并创建欢迎套接字 ,等待客户请求 客户创建客户套接字(需指定服务器的IP地址及端口号),并建立到服务器的TCP连接 当客户请求到达时, 服务器生成新的连接套接字,并通过新套接字与该客户通信 允许服务器同时为多个 客户服务 源端口号用于区分不同的客户,例:转换为大写,应用描述 1. 客户从标准输入读取行 2. 客户把该行数据发送给服务器 3. 服务器收到该行数据后,将其中的所有字符转换成大写字符 4. 服务器把修改后的行发回给客户端 5. 客户机收到后,把修改后的行打印出来,一个流是流入或流出 某进程的字符序列,客户端Java代码,import java.io.*; import .*; 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代码(续),/创建与客户套接字相连的输入流对象 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代码,import java.io.*; import .*; class TCP Server public static void main(String argv) throws Exception String ClientSentence; String capitalizedSentence; /在端口6789 创建欢迎套接字 ServerSocket welcomeSocket = new ServerSocket(6789); while(true) /在欢迎套接字上接收到客户请求后返回新的连接套接字 Socket connectionSocket = welcomeSocket.accept(); /创建与连接套接字相连的输入流对象 BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream();,服务器端Java代码(续),/创建与连接套接字相连的输出流对象 DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream(); /通过与连接套接字相连的输入流对象读取行 ClientSentence = inFromClient.readLine(); /进行大写转换 capitalizedSentence = ClientSentence.toUpperCase() + n; /通过与连接套接字相连的输出流对象写入行,即发回客户端 outToClient.writeBytes(capitalizedSentence); ,客户/服务器工作流程分析,UDP套接字编程,UDP客户端与服务器之间没有“连接”,也无需握手,因此不需要欢迎套接字 UDP不提供面向字符流的传输服务,所以无需与套接字相连的输入输出流 发送方必须在每个分组上携带目的IP地址和目的端口号,以指明接收方的地址 服务器必须从接收到的分组提取源IP地址和源端口号,以得到客户端的地址,例:转换为大写(UDP版),(UDP版)客户端Java代码,import java.io.*; import .*; class UDPSocket public static void main(String args) throws Exception /创建与标准输入设备相连的输入流对象 BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in); /创建客户套接字(数据报套接字) DatagramSocket ClientSocket = new DatagramSocket(); /调用DNS将服务器主机名解析为IP地址 InetAddress IPAddress = InetAddress.getByName(“hostname“); byte sendData = new byte1024; byte receiveData = new byte1024; String sentence = inFromUser.readLine(); sendData = sentenc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校母婴室管理制度
- 学校类设备管理制度
- 学校锅炉工管理制度
- 学生手卫生管理制度
- 安培训教学管理制度
- 安装小班组管理制度
- 官方自媒体管理制度
- 实施不闭环管理制度
- 实验室控制管理制度
- 客服全流程管理制度
- 贵州贵安发展集团有限公司笔试
- DG∕TJ 08-53-2016 行道树栽植技术规程
- 供应链管理在电网企业物资管理中的应用
- 2025版特种金属矿山股权收购与转让合同2篇
- 《螺栓连接多层全装配式混凝土墙板结构技术规程》
- 【MOOC】《电工技术》(北京科技大学)中国大学MOOC慕课答案
- 输血科内部审核检查表
- 《绿色低碳铝评价导则及追溯指南》T CNIA 0245-2024
- 冶金员工安全培训
- 腹股沟疝护理新进展
- 食品标准操作规程
评论
0/150
提交评论