IP、TCP和UDP
java支持的协议只有TCP和UDP,以及建立在TCP和UDP之上的应用层协议。所有其他传输层、网际层和更底层的协议,如ICMP、IGMP、ARP和其他协议在java程序中都只能通过链接到原生代码来实现。
IP地址和域名
IPv4网络中的每台计算机都由宇哥4字节的数字标识。一般写为点四分段格式,这4个数都是无符号字节,范围是0~255。IPv4网络中的每台计算机都有唯一的4字节地址。当数据通过网络传输时,包的首部会包括发往的机器地址(目的地址)和发送这个包的机器地址(源地址)。沿路的路由器通过检查目的地址来选择发送数据包的最佳路由。包括源地址是为了让接收方知道要向谁回复。
IPv6使用16字节地址。通常写为冒号分隔的8个区块,每个区块是4个十六进制数字(一个块两个字节)。
虽然计算机可以轻松处理数字,但人类对于记忆数字却不在行。因此,开发了域名系统(Domai Name System,DNS),用来将人类易于记忆的主机名转换为数字Internet地址。当java程序访问网络时,它们需要同时处理数字地址和相应的主机名。这些方法由java.net.InetAddress类提供。
有些计算机(尤其是服务器)有固定的地址。其他计算机(特别是局域网和无线连接上的客户端)可能每次启动时会收到不同的地址,这是由DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器提供的。动态分配和手工分配的地址之间的区别对java程序没有影响。
端口
每台有IP地址的计算机都有几千个逻辑端口(确切地讲,每个传输层协议有65535个端口)。这些只是计算机内存中的抽象,不表示任何物理实物,与USB端口不同。每个端口号由1到65535之间的一个数字标识。每个端口可以分配给一个特定的服务。例如,Web的底层协议HTTP一般使用端口80。