




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10.1网络技术的基本概念
10.2Java网络技术架构
10.3URL编程
10.4Socket编程10.1网络技术的基本概念10.1.1TCP/IP协议集合传输控制协议/因特网互联协议(TransmissionControlProtocol/InternetProtocol,TCP/IP),又名网络通信协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何联入因特网,以及数据如何在它们之间传输的标准。协议采用了四层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。也就是说,TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。尽管TCP/IP协议的名称中只有TCP这个协议名,但是在TCP/IP的传输层同时存在TCP和UDP两个协议。TCP是面向连接的通信协议,通过三次握手建立连接,通信完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通信。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向“上”传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,即设备驱动程序和物理介质,最后到接收方。面向连接的服务(如Telnet、FTP、rlogin、XWindows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP发送和接收域名数据库,而使用UDP则传送有关单个主机的信息。UDP是面向无连接的通信协议,UDP数据包括目的端口号和源端口号信息,由于通信不需要连接,所以可以实现广播发送。UDP通信时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编程验证。UDP与TCP位于同一层,但它不负责数据包的顺序、错误或重发。因此,UDP不应用于那些使用虚电路的面向连接的服务,而主要应用于那些面向查询—应答的服务,如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手,因为在两个系统间没有虚电路)。也就是说,与UDP相关的服务面临着更大的危险。10.1.2IP地址与端口网际互联协议(IP)用于数据包在互联的网络设备间传送。这些设备都带有一个称为IP地址的逻辑地址。由网际互联协议提供的IP地址具有特定的形式。每个IP地址都是32位的数值,通常由4个范围在0~255之间的8位数值表示,如。在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的IP地址来进行互联网络中的路由选择。可见,数据包顺利地传送到目的主机是可以的。但是大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给同时运行的哪一个进程呢?为了解决这个问题,端口(port)机制便被引入进来。本地操作系统会给那些有需求的进程分配协议端口(protocolport,即我们常说的端口),每个协议端口由一个正整数标识。当目的主机接收到数据包后,将根据包文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会读取数据并等待下一组数据的到来。不光接收数据包的进程需要开启端口,发送数据包的进程也需要开启端口,这样,数据包中将会标识有源端口,以便接收方能顺利地回传数据包到这个端口。如果没有指明端口号,则使用服务文件中服务器的端口。每种协议有一个缺省的端口号,在端口号未指明时使用该缺省端口号。端口号应用如下:21FTP:传输文件。23Telnet:提供远程登录。25SMTP:传递邮件信息。67BOOTP:在启动时提供配置情况。80HTTP:传输Web页。109POP:使用户能访问远程系统中的邮箱。10.1.3URL统一资源定位符(UniformResourceLocator,URL)是对可以从互联网上得到的资源位置和访问方法的一种简洁表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。URL的组成形式为protocol://resourceName,其中协议名(protocol)指明获取资源所使用的传输协议,如http、ftp、gopher、file等;资源名(resourceName)则应该是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个引用。10.2Java网络技术架构Java最初是作为一种网络编程语言出现的,它能够使用网络上的各种资源和数据,与服务器建立各种传输通道,将自己的数据传送到网络的各个地方。Java中有关的网络功能都定义在程序包中。Java所提供的网络功能可分为以下三种:URL和URLConnection是功能中最高级的一种。通过URL的网络资源表达方式,很容易确定网络上数据的位置。利用URL的表示和建立,Java程序可以直接读取网络上的数据,或把自己的数据传送到网络的另一端。所谓Socket,可以想象成两个不同的程序通过网络的通道,这是传统网络程序中最常用的方法。一般在TCP/IP网络协议下的客户服务器软件采用Socket作为交互的方式。Datagram是功能中最低级的一种。其他网络数据传送方式都假想在程序执行时,建立一条安全稳定的通道。但是以Datagram的方式传送数据时,只是把数据的目的地记录在数据包中,然后就直接放在网络上进行传输,系统不保证数据一定能够安全送到,也不能确定什么时候可以送到。也就是说,Datagram不能保证传送质量。10.3URL编程Java网络API通过提供URL类让我们能在源代码层使用URL。每一个URL对象都封装了资源的标识符和协议处理程序。通过调用URL构造函数来建立URL对象后,我们可以通过调用URL的方法来提取URL的组件,打开一个输入流(InputStream),从中读取信息,获得某个能方便检索资源数据的对象的引用,然后比较两个URL对象中的URL,获得资源的连接对象,该连接对象允许代码了解并写入更多的资源信息。10.3.1创建URL对象为了表示URL,中实现了类URL。我们可以通过下面的构造方法来初始化一个URL对象:(1) publicURL(Stringspec);通过一个表示URL地址的字符串可以构造一个URL对象。URLurlBase=newURL("http://www.263.net/")(2) publicURL(URLcontext,Stringspec);通过基于URL和相对URL构造一个URL对象。URLnet263=newURL("/");URLindex263=newURL(net263,"index.html");(3) publicURL(Stringprotocol,Stringhost,Stringfile);newURL("http","","/pages/G.html");(4) publicURL(Stringprotocol,Stringhost,intport,Stringfile);URLgamelan=newURL("http","",80,"Pages/Gwork.html");注意:类URL的构造方法都声明抛出非运行时异常(MalformedURLException),因此生成URL对象时,我们必须要对这一异常进行处理,即:try{URLmyURL=newURL("")}catch(MalformedURLExceptione){…}10.3.2获取URL对象的信息一个URL对象生成后,其属性是不能被改变的,但是我们可以通过以下类URL所提供的方法来获取这些属性: publicStringgetProtocol():获取该URL的协议名。 publicStringgetHost():获取该URL的主机名。 publicintgetPort():获取该URL的端口号,如果没有设置端口,返回-1。 publicStringgetFile():获取该URL的文件名。 publicStringgetRef():获取该URL在文件中的相对位置。 publicStringgetQuery():获取该URL的查询信息。 publicStringgetPath():获取该URL的路径。 publicStringgetAuthority():获取该URL的权限信息。 publicStringgetUserInfo():获得使用者的信息。 publicStringgetRef():获得该URL的锚。10.4Socket编程Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面。对用户来说,一组简单的接口就是全部,由Socket去组织数据,符合指定的协议。服务器端先初始化Socket,然后与端口绑定(Bind),对端口进行监听(Listen),调用accept(),等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接(Connect)服务器,若连接成功,则客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,交互结束。10.4.1Socket类和ServerSocket类Java在包中提供了Socket和ServerSocket两个类,分别用来表示双向连接的客户端和服务端。其构造方法如下:Socket(InetAddressaddress,intport);Socket(InetAddressaddress,intport,booleanstream);Socket(Stringhost,intprot);Socket(Stringhost,intprot,booleanstream);Socket(SocketImplimpl);Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort);Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort);ServerSocket(intport);ServerSocket(intport,intbacklog);ServerSocket(intport,intbacklog,InetAddressbindAddr);其中,address、host和port分别是双向连接中另一方的IP地址、主机名和端口号;stream指明Socket是Socket流还是Socket数据报;localPort表示本地主机的端口号;localAddr和bindAddr是本地机器的地址(ServerSocket的主机地址);impl是Socket的父类,既可以用来创建serverSocket,又可以用来创建Socket;count则表示服务端所能支持的最大连接数。注意,在选择端口时,必须小心。每一个端口提供一种特定的服务,只有给出正确的端口,才能获得相应的服务。0~1023的端口号为系统所保留,例如,http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口号为23,所以我们在选择端口号时,最好选择一个大于1023的数以防止发生冲突。在创建Socket时如果发生错误,将产生IOException,在程序中必须对此作出处理。所以,在创建Socket或ServerSocket时必须捕获或抛出异常。10.4.2So
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025汽车销售合同签订时应注意的关键要素
- 安全知识主题班会策划书
- 2024年理财助理资金需求报告代可行性研究报告
- 2024年超高速切削机床资金申请报告代可行性研究报告
- 2024年物理特性分析产品项目资金需求报告代可行性研究报告
- 集成家居设计与商品房预售合同
- 2025年中国焙烤食品制造行业市场规模调研及投资前景研究分析报告
- 2025年中国保温灯行业市场前景预测及投资价值评估分析报告
- 知识产权代理合伙人知识产权培训合作协议
- 无人机技术支持下的土方工程量计算与施工合同
- 企业安全防汛知识企业安全生产培训
- 好书阅读分享交流《福尔摩斯探案集》课件
- 【要填报的表格】园林行政许可申请表-树木砍伐、移栽、修剪(洪山园林局专用)
- 《白龙马》注音歌词
- 二、问题解决型(指令性目标)QC成果案例
- 特种作业人员体检表
- PCB制板要求模板-综合版
- 集装箱板房技术要求
- 沥青与沥青混合料教学课件
- 自身免疫病及检验(免疫学检验课件)
- 简单机械主题单元教学设计
评论
0/150
提交评论