计算器网络概述
概述
我们把分布在不同地理区域的计算机与专门的外部设备用通信线路互相连成一个规模宏达,功能强大的网络系统,从而使从多的计算机可以方便地相互传递信息,共享硬件,软件,数据信息等资源
网络分类
按照网络规模和范围可以简单划分为:
局域网
都市网
广域网
按照网络拓扑结构可以分为:
星型网络、总线网络、换线网络、树型网络、星型环线网络等
按照传输介质划分:
双绞线
同轴电缆
光导纤维
视线介质
IP&Port
ip:网络红主机的唯一标识,通过ip可以定位到主机地址,其中ip又被分为ipv4和ipv6
port:端口,是主机中应用程序的唯一标识,是应用程序跟外界通信,交流的出入口
IP地址
ip(Internet Protocol)是网络上的计算机进行连接的基础,为了实现Internet上不同计算机之间的通信,每台计算机都必须有一个不与其他计算机重复的地址,ip地址又被划分为ipv4和ipv6,这里的重点研究ipv4;ipv4是由四个字节构成,因此最大取值为40多亿个,ipv4被划分为ABCDE五类地址,民用一般为C类地址,其中D类地址为广播地址
port(端口号)
端口是计算机中的网络程序与外界交流的出入口i,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入/输出)缓冲区,端口可以从0到65535,通常将它分为三类:
·公认端口(Well Known Ports):从0到1023,他们紧密绑定一些服务
·注册端口(Registered Ports):从1024到49151,他们松散地绑定一些服务
·动态/私有端口(Dynamic / Private Ports):从49152到65535。理论上不应该服务分配这些端口
常见的TCP/IP端口对应的服务和名称
InetAddress类
java网络编程相关的类都位于java.net包,InetAddress表示为一台主机的名称以及其绑定的ip地址的总称,InetAddress类的中为提供公开的构造方法,因此无法直接new对象,通常我们使用其中的静态方法来获取InetAddress对象自身,常用静态方法如下:
-
getLocalHost() 获取本地主机对象
-
getByName(String host) 根据主机名(或ip)获取InetAddress对象
-
getByAddress(byte[] b) 根据字节数组获取InetAddress对象
-
getByAddress(String host,byte[] b) 根据主机名称和ip的字节数组获取InetAddress对象
其他方法:
-
getHostName() 获取主机名称
-
getHostAddress() 获取主机地址
public class InetAddressDemo {
public static void main(String[] args) throws UnknownHostException {
//获取本地主机对象 localhost
InetAddress ip = InetAddress.getLocalHost();
System.out.println(ip);
//获取主机名(计算名)
System.out.println(ip.getHostName());
//获取主机地址(ip)
System.out.println(ip.getHostAddress());
//获取回送地址
System.out.println(InetAddress.getLoopbackAddress());
ip = InetAddress.getByName("mrchai");
System.out.println(ip);
byte[] b = new byte[]{(byte)192,(byte)168,(byte)0,(byte)198};
ip = InetAddress.getByAddress(b);
System.out.println(ip);
ip = InetAddress.getByAddress("mrchai", b);
System.out.println(ip);
}
}