随着互联网技术的不断发展,网络应用已经成了计算机应用领域中使用最为广泛的应用,而网络编程技术已经成为了当代Java开发者必须掌握的核心技术。学习网络编程技术,就必须先掌握网络及通信的相关基础知识。
所谓网络,就是指由分布在不同地理位置的计算机以及专门的外部设备所组成的系统。相较于单个计算机而言,这个网络系统规模大、功能强,系统中众多计算机能够方便的相互传递信息、共享硬件、软件以及数据等各种资源。计算机网络是计算机技术和通信技术相结合的产物,网络的出现能给人们带来以下好处:
计算机网络种类的划分依据有很多。如果按照计算机网络的规模大小和延伸范围来划分,可以把计算机网络分为局域网(LAN),城域网(MAN)和广域网(WAN)。如果按照网络的拓扑结构来划分,可以把网络划分为星型网络、总线型网络、环型网络、树型网络等。而如果按照传输介质来划分,又可以划分为双绞线网、同轴电缆网、光纤网和卫星网等。
无论哪一种类型的网络,在传输数据时都必须遵循一定的规则或约定,这种规则或约定在专业上被称为“协议”。协议实际上就是一种标准,它规定了信息的传输速率、传输代码、代码结构、传输控制步骤、出错控制等各方面标准。网络上的各个节点只有遵循了相同的协议,才能准确的传输和解读数据。
网络协议有很多,其中最基础也是最重要的一个协议就是IP协议。IP是Internet Protocol的缩写,按照其名称的含义,IP协议中文译为“互联网协议”,它规定了数据在网络上传输的很多规则细节,其中最主要的作用是规定了IP地址的定义方式。
IP地址用于唯一地标识网络中的一个通信实体,这个通信实体既可以是一台主机, 也可以是一台打印机,或者是路由器的某一个端口。而在基于IP协议网络中传输的数据包,都必须使用IP地址来进行标识。
就像写一封信,要标明收信人的通信地址和发信人的地址,而邮政工作人员则通过该地址来决定邮件的去向。类似的过程也发生在计算机网络里,每个被传输的数据包也要包括一个源IP地址和一个目标IP地址,当该数据包在网络中进行传输时,这两个地址要保持不变,以确保网络设备总能根据确定的IP地址,将数据包从源通信实体送往指定的目的通信实体。
IP地址是数字型的,IP 地址是一个32位整数,但通常为了便于记忆,通常把它转换成4个8位的二进制数,每8位之间用圆点隔开,每个8位整数可以转换成一个0~255的十进制整数,因此日常看到的IP地址常常是这种形式: 202.9.128.88。
IP地址被分成了A、B、C、D、E五类,其中D类地址用于多点广播,E类地址为将来使用保留,而A、B、C类的地址范围如表15-1所示。
表15-1 IP地址范围
IP地址类别 | 范围 |
A | 10.0.0.0~10.255.255.255 |
B | 172.16.0.0~172.31.255.255 |
C | 192.168.0.0~192.168.255.255 |
IP地址用于唯一地标识网络上的一个通信实体,但一个通信实体可以有多个通信程序同时提供网络服务,为区别各个通信程序,每个通信程序都必须规定一个端口号。端口号表示数据交给哪个通信程序处理。不同的应用程序处理不同端口上的数据,同一台机器上不能有两个程序使用同一个端口号。端口号可以从0到65535,可以分为如下三种类型。
公共端口:范围0~1023,它们紧密绑定系统服务。
注册端口:范围1024~49151,应用程序通常使用这一范围的端口号。
动态或私有端口:范围49152~65535,应用程序的动态端口。
由于端口号与应用程序绑定,所以网络上的数据必须指定了正确的IP地址和端口号才能准确的找到计算机上的某个应用程序。