《Lesson10网络编程.ppt》由会员分享,可在线阅读,更多相关《Lesson10网络编程.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、LOGO网网网网络编络编络编络编程程程程计计算机网算机网络络v计算机网络是相互连接的独立自主的计算机的集合,最简单的网络形式由两台计算机组成。两台两台计计算机通算机通过过网网络进络进行通信行通信AB网络网络192.168.0.118192.168.0.10协议协议协议协议端端口口端端口口IP地址地址vIP网网络络中每台主机都必中每台主机都必须须有一个惟一的有一个惟一的IP地址;地址;vIP地址是一个地址是一个逻辑逻辑地址;地址;v因特网上的因特网上的IP地址具有全球唯一性;地址具有全球唯一性;v32位,位,4个字个字节节,常用点分十,常用点分十进进制的格式表示,例如:制的格式表示,例如:192
2、.168.0.16协议协议v为进为进行网行网络络中的数据交中的数据交换换(通信)而建立的(通信)而建立的规则规则、标标准或准或约约定。定。(=语义语义+语语法法+规则规则)v不同不同层层具有各自不同的具有各自不同的协议协议。网网络络的状况的状况多种通信媒介有线、无线不同种类的设备通用、专用不同的操作系统Unix、Windows 不同的应用环境固定、移动不同业务种类分时、交互、实时宝贵的投资和积累有形、无形用户业务的延续性不允许出现大的跌宕起伏。它它们们互相交互相交织织,形成了非常复,形成了非常复杂杂的系的系统应统应用用环环境。境。网网络络异异质质性性问题问题的解决的解决v网网络络体系体系结结构
3、构就是使就是使这这些用不同媒介些用不同媒介连连接起来的不同接起来的不同设备设备和网和网络络系系统统在不同的在不同的应应用用环环境下境下实现实现互操作性,并互操作性,并满满足各种足各种业务业务需需求的一种粘合求的一种粘合剂剂,它,它营营造了一种造了一种“生存空生存空间间”任何厂商的任任何厂商的任何何产产品、以及任何技品、以及任何技术术只要遵守只要遵守这这个空个空间间的行的行为规则为规则,就能,就能够够在其中生存并在其中生存并发发展。展。v网网络络体系体系结结构构解决异解决异质质性性问题问题采用的是分采用的是分层层方法方法 把复把复杂杂的的网网络络互互联问题联问题划分划分为为若干个若干个较较小的、
4、小的、单单一的一的问题问题,在不同,在不同层层上上予以解决。予以解决。就像我就像我们们在在编编程程时时把把问题问题分解分解为为很多小的模很多小的模块块来解决一来解决一样样。ISO/OSI七七层层参考模型参考模型vOSI(Open System Interconnection)参考模型将网参考模型将网络络的不同功能划分的不同功能划分为为7层层。应用层表示层物理层会话层传输层网络层数据链路层处理网络应用数据表示主机间通信端到端的连接寻址和最短路径介质访问(接入)二进制传输ISO/OSI七七层层参考模型参考模型v通信实体的对等层之间不允许直接通信。v各层之间是严格单向依赖。v上层使用下层提供的服务
5、Service user;v下层向上层提供服务 Service provider。对对等通信示例等通信示例“你好你好”“Hello”传真传真中国中国教师教师翻译翻译秘书秘书“Hallo”“Hello”传真传真德国德国教师教师翻译翻译秘书秘书对交谈内容的共识对交谈内容的共识用英语对话用英语对话使用传真通信使用传真通信P3P2P1物理通信线路物理通信线路对对等等层层通信的通信的实质实质v对对等等层实层实体之体之间间虚虚拟拟通信。通信。v下下层层向上向上层层提供服提供服务务,实际实际通信在最底通信在最底层层完成。完成。OSI各各层层所使用的所使用的协议协议v应用层:远程登录协议Telnet、文件传输
6、协议FTP、超文本传输协议HTTP、域名服务DNS、简单邮件传输协议SMTP、邮局协议POP3等。v传输层:传输控制协议TCP、用户数据报协议UDP。TCP:面向连接的可靠的传输协议。UDP:是无连接的,不可靠的传输协议。v网络层:网际协议IP、Internet互联网控制报文协议ICMP、Internet组管理协议IGMP。数据封装数据封装v一台一台计计算机要算机要发发送数据到另一台送数据到另一台计计算机,数据首先必算机,数据首先必须须打包,打包,打包的打包的过过程称程称为为封装封装。v封装就是在数据前面加上特定的封装就是在数据前面加上特定的协议头协议头部。部。数据数据数据数据协议头协议头数据
7、封装数据封装vOSI参考模型中,参考模型中,对对等等层协议层协议之之间间交交换换的信息的信息单单元元统统称称为协议为协议数据数据单单元元(PDU,Protocol Data Unit)。vOSI参考模型中每一参考模型中每一层层都要依靠下一都要依靠下一层层提供的服提供的服务务。v为为了提供服了提供服务务,下,下层层把上把上层层的的PDU作作为为本本层层的数据封装,然后加入本的数据封装,然后加入本层层的的头头部(和尾部)。部(和尾部)。头头部中含有完成数据部中含有完成数据传输传输所需的控制信息。所需的控制信息。v这样这样,数据自上而下,数据自上而下递递交的交的过过程程实际实际上就是不断封装的上就是
8、不断封装的过过程。到达目程。到达目的地后自下而上的地后自下而上递递交的交的过过程就是不断拆封的程就是不断拆封的过过程。由此可知,在物理程。由此可知,在物理线线路上路上传输传输的数据,其外面的数据,其外面实际实际上被包封了多上被包封了多层层“信封信封”。v但是,某一但是,某一层层只能只能识别识别由由对对等等层层封装的封装的“信封信封”,而,而对对于被封装在于被封装在“信信封封”内部的数据内部的数据仅仅仅仅是拆封后将其提交是拆封后将其提交给给上上层层,本,本层层不作任何不作任何处处理。理。TCP/IP模型vTCP/IP起源于美国国防部高起源于美国国防部高级级研究研究规规划署划署(DARPA)的一的
9、一项项研究研究计计划划实现实现若干台主机的相互通信。若干台主机的相互通信。v现现在在TCP/IP已成已成为为Internet上通信的工上通信的工业标业标准。准。vTCP/IP模型包括模型包括4个个层次:次:应用用层传输层网网络层网网络接口接口TCP/IP与OSI参考模型的对应关系应用层应用层表示层表示层会话层会话层传输层传输层物理层物理层数据链路层数据链路层网络层网络层7 76 65 54 43 32 21 1OSI参考模型参考模型应用层应用层传输层传输层网络接口网络接口网络层网络层TCP/IP模型模型端口端口v端口是一种抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序通过系统调用与
10、某端口建立连接(binding)后,传输层传给该端口的数据都被相应的进程所接收,相应进程发给传输层的数据都通过该端口输出。v端口用一个整数型标识符来表示,即端口号。端口号跟协议相关,TCP/IP传输层的两个协议TCP和UDP是完全独立的两个软件模块,因此各自的端口号也相互独立,端口通常称为协议端口(protocol port),简称端口。v端口使用一个16位的数字来表示,它的范围是065535,1024以下的端口号保留给预定义的服务。例如:http使用80端口。套接字(socket)的引入v为了能够方便的开发网络应用软件,由美国伯克利大学在Unix上推出了一种应用程序访问通信协议的操作系统调用
11、socket(套接字)。socket的出现,使程序员可以很方便地访问TCP/IP,从而开发各种网络应用的程序。v随着Unix的应用推广,套接字在编写网络软件中得到了极大的普及。后来,套接字又被引进了Windows等操作系统中。Java语言也引入了套接字编程模型。基于基于TCP的的socket编编程程ServerServerServerServerSocket(int port)Socket accept()OutputStream Socket.getOutputStream()InputStream Socket.getInputSream()Socket.close()ClientSock
12、et(InetAddress address,int port)OutputStream Socket.getOutputStream()InputStream Socket.getInputStream()Socket.close()服务器程序编写:服务器程序编写:调用ServerSocket(int port)创建一个服务器端套接字,并绑定到指定端口上;调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。最后关闭通信套接字。客户端
13、程序编写:客户端程序编写:调用Socket()创建一个流套接字,并连接到服务器端;调用Socket类的getOutputStream()和getInputStream获取输出流和输入流,开始网络数据的发送和接收。最后关闭通信套接字。基于基于UDP的的socket编编程程接收端接收端(Server)发送端发送端(Client)DatagramSocket(int port)DatagramSocket()DatagramPacket(byte buf,int length)DatagramSocket.receive(DatagramPacket p)DatagramSocket.close()
14、DatagramSocket.close()DatagramPacket(byte buf,int length,InetAddress address,int port)DatagramSocket.send(DatagramPacket p)接收端程序编写:接收端程序编写:调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上;调用DatagramPacket(byte buf,int length),建立一个字节数组以接收UDP包。调用DatagramSocket类的receive(),接收UDP包。最后关闭数据报套接字。发送端程序编写:发送端程序编
15、写:调用DatagramSocket()创建一个数据报套接字;调用DatagramPacket(byte buf,int offset,int length,InetAddress address,int port),建立要发送的UDP包。调用DatagramSocket类的send(),发送UDP包。最后关闭数据报套接字。URL与与URIvURL(Uniform Resource Locator),通用资源定位符。http:/ Resource Identifier),通用资源标识符。vURI纯粹是个符号结构,用于指定构成Web资源的字符串的各个不同部分。URL是一种特殊类型的URI,它包含了用于查找某个资源的足够信息。其它的URI,例如:mailto:则不属于定位符,因为它里面不存在根据该标识符来查找的任何数据。这种URI称为URN(通用资源名)。v在Java库中,URI类不包含用于访问通用资源标识符设定的任何方法,它的唯一作用是进行分析。相反,URL类则可以打开到达资源的一个字符串。http:/www.sunxin.org