科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Java2 参考大全:第18章 网络 (1)

Java2 参考大全:第18章 网络 (1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Java2 参考大全:第18章 网络 (1)

作者:Herbert Schildt 著 张玉清 吴溥峰等 译 来源:清华大学出版社 2007年10月30日

关键字: 网络 java

  • 评论
  • 分享微博
  • 分享邮件

本章讨论支持网络应用的java.net包。它的创建者称Java为“为网络编程”。尽管它只占Java的一小部分,与C++或FORTRAN相比,这种编程语言更有利于编写网络程序。使Java成为好的网络语言的正是java.net包定义的类。
这些类包装了由加州大学的伯克利分校的BSD引入的“套接字(socket)”范型。如果不简单介绍UNIX和BSD套接字的历史对Internet网络库的讨论就是不完整的。
18.1 网 络 基 础
1969年,Ken Thompson和Dennis Ritchie在Murray Hill,New Jersey的贝尔电话实验室开发了与C语言一致的UNIX。很多年来,UNIX的发展停留在贝尔实验室和一些大学及研究机构,用特意设计的DEC PDP机器运行。到了1978 年,Bill Joy在Cal Berkeley领导了一个项目,给UNIX增添新的特性,例如虚拟内存和全屏显示功能。到了1984年早期,当Bill正准备建立Sun Microsystems,它发明了4.2BSD,即众所周知的Berkeley UNIX。4.2BSD带有快速文件系统、可靠信号处理、进程间通信以及最重要的网络功能。最先在4.2中发现的网络支持后来成为了实际的Internet标准。Berkeley的TCP/IP实现保留了在Internet内通信的最初的标准。进程间和网络通信的套接字范型被Berkeley以外的系统广泛采用。甚至Window和Macintosh在20世纪80年代晚期也开始和“Berkeley 套接字”谈话。
18.1.1 套接字概述
网络套接字(network socket)有一点像电源插座。网络周围的各式插头有一个标准方法传输它们的有效负载。理解标准协议的任何东西都能够插入套接字并进行通信。对于电源插座,不论你插入一个电灯或是烤箱,只要它们使用60HZ,115伏电压,设备将会工作。思考一下你的用电账单是怎样生成的。在你的房子和电网支架间可能有1米的距离,经过这一米的每千瓦电都将列入账单。账单到达你的“地址”。所以,虽然电流在电源插座周围是自由流动的,你房子的所有插头都是有特定的地址的。除了我们谈论的是TCP/IP包和IP地址而不是电器和街道地址外,同样的思想被应用到网络套接字。Internet Protocol(IP)是一种低级路由协议。该协议将数据分解成小包然后通过网络传到一个地址,它并不确保传输的信息包一定到达目的。传输控制协议(TCP)是一种较高级的协议,它把这些信息包有力的捆绑在一起,在必要的时候,排序和重传这些信息包以获得可靠的数据传输。第三种协议,用户数据报协议(UDP)几乎与TCP协议相当,并能够直接用来支持快速的、无连接的、不可靠的信息包传输。
18.1.2 客户/服务器模式
你经常在与网络有关的话题中听说客户/服务器(client/server)这个术语。在一些产品说明中,这个概念似乎非常复杂,其实它的含义很简单。 服务器(server)就是能够提供共享资源的任何东西。现在有计算服务器,提供计算功能;打印服务器,管理多个打印机;磁盘服务器,提供联网的磁盘空间;以及Web服务器,用来存储网页。客户(client)是简单的任何有权访问特定服务器的实体。客户和服务器之间的连接就像电灯和电源插头的连接。房间的电源插座是服务器,电灯是客户。服务器是永久的资源,在访问过服务器之后,客户可以自由的“拔去插头”。在Berkeley套接字中,套接字的概念允许单个计算机同时服务于很多不同的客户,并能够提供不同类型信息的服务。该种技术由引入的端口(port)处理,此端口是一个特定机器上的被编号的套接字。服务器进程是在“监听”端口直到客户连到它。尽管每个客户部分是独特的,一个服务器允许在同样端口接受多个客户。为管理多个客户连接,服务器进程必须是多线程的,或者有同步输入/输出处理多路复用技术的其他方法。
18.1.3 保留套接字
一旦连接成功,一个高级的协议跟着生效,该协议与所使用的端口有关。TCP/IP 为特定协议保留了低端的1024 个端口。如果你在网络上冲浪有一些时间了,那么这中间的很多你已经很熟悉了。端口21是为FTP的,23是Telnet,25是为e-mail,79是为finger的,80是HTTP,119是为网络新闻的——等等。下面该轮到讲述每个协议决定客户如何与端口交互了。举例来说,HTTP是网络浏览器及服务器用来传输超文本网页和图像的协议。它是基本网页浏览服务器的一个非常简单的协议。下面是它的工作原理。当一个客户向一个HTTP服务器请求一个文件时,即一个点击动作,它仅仅以一种特定格式向预先指定的端口打印文件名然后读回文件的内容。服务器同样对状态代码编号反应,告诉客户请求是否被执行以及原因。下面是一个例子。客户请求单个文件/index.html,服务器回应它已成功找到该文件并且把文件传输到客户:
服务器 客户
监听80端口 与端口80连接
接受连接 写“GET /index.html HTTP/1.0\n\n”
读取数据直到遇到第二个换行符(\n)
知道GET是一个命令,HTTP/1.0是有效的协议
读取名为/ index.html的本地文件
写“HTTP/1.0 200 OK\n\n” “200”意味着“文件来了”
向套接字复制文件内容 读取文件内容并显示
挂起 挂起
很明显,HTTP协议比该例显示的要复杂的多,但这是一个实际的和附近Web服务器的传输。
18.1.4 代理服务器
一个代理服务器(proxy server)以客户端协议与其他服务器通信。这在客户与服务器连接受到某些限制的情况下经常是必需的。这样,客户可以连接代理服务器,代理服务器没有这些限制并且代理服务器也会依次和客户通信。代理服务器具有过滤某些请求或缓存一些这样的请求的结果以备后用的额外功能。一个缓冲代理HTTP 服务器可用来减小局域网连向Internet的带宽要求。若一个流行网站的网址被成百上千个用户点击,代理服务器可以一次获得该网络服务器的流行网页,节省昂贵的Internet网络传输,同时为用户快速提供对这些网页的访问。本章的后面部分,我们将实际建立一个完整的缓冲代理HTTP服务器。这个程序有趣的是它既是客户又是服务器。为服务于某些网页,它必须像客户那样向其他服务器获取被请求内容的一个拷贝。
18.1.5 Internet 编址
Internet上的每一台计算机都有一个地址。Internet地址是网络上标识每台计算机的惟一定义的数。IP地址有32位,我们通常把它们分成4个从0到255的,有点号(.)隔开的序列。这使它们易于记忆,因为它们不是随机指派的——它们是按层次结构指派的。最开始的字节定义了网络属于A、B、C、D或E哪个等级。多数Internet用户使用C级,因为有多于两百万的网络是在C类。C类网的开始字节从192到224,最后字节实际上标识了256之中可以上单个C类网的独立计算机。这种安排允许在C类网中可以有5亿的设备。
域名服务(DNS)
如果每台机器必须用数字作为它们的地址,Internet不是一个漫游的友好场所。例如,设想在广告的底部看见“http://192.9.9.1/”,这一定使人头昏脑胀。感谢上帝,存在一个与所有这些数字相伴的一个平行层次的名称的交换所,叫做域名服务(DNS)。就像IP地址中从左到右描绘网络层次的四个数字一样,Internet 地址的名称,域名,在名称空间从右到左描述了机器的地址。例如,www.osborne.com是在COM域(为美国商业企业保留)中的,叫做osborne(公司名称)的,www是Osborne的Web服务器的特定计算机的名称。www在意义上相应于IP地址的最右边的数字。
查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章