实现网络编程关键的三要素

  • IP 地址:设备在网络中的地址,是唯一的标识。
  • 端口:应用程序在设备中唯一的标识。
  • 协议: 数据在网络中传输的规则,常见的协议有 UDP 协议和 TCP 协议。

IP 地址

IP(Internet Protocol):全称”互联网协议地址”,是分配给上网设备的唯一标志。
常见的IP分类为:IPv4 和 IPv6

  • IPv4:32 bit(4 字节),例如:192.168.1.66
  • IPv6:128 位(16 个字节),例如:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789

公网地址、和私有地址(局域网使用)。

192.168. 开头的就是常见的局域网地址,范围即为 192.168.0.0 到 192.168.255.255,专门为组织机构内部使用。
本机 IP: 127.0.0.1 或者 localhost:称为回送地址也可称本地回环地址,只会寻找当前所在本机。

ipconfig:查看本机 IP 地址
ping IP地址:检查网络是否连通


IP 地址操作类 InetAddress

  • static InetAddress getLocalHost():返回本主机的地址对象
  • static InetAddressgetByName(String host):得到指定主机的 IP 地址对象,参数是域名或者 IP 地址
  • String getHostName():获取此 IP 地址的主机名
  • String getHostAddress():返回 IP 地址字符串
  • boolean isReachable(int timeout):在指定毫秒内连通该 IP 地址对应的主机,连通返回 true ```java // 1.获取本机地址对象。 InetAddress ip1 = InetAddress.getLocalHost(); System.out.println(ip1.getHostName()); System.out.println(ip1.getHostAddress());

// 2.获取域名 IP 对象 InetAddress ip2 = InetAddress.getByName(“www.baidu.com”); System.out.println(ip2.getHostName()); System.out.println(ip2.getHostAddress());

// 3.获取公网 IP 对象。 InetAddress ip3 = InetAddress.getByName(“112.80.248.76”); System.out.println(ip3.getHostName()); System.out.println(ip3.getHostAddress());

// 4.判断是否能通: ping 5s 测试是否可通 System.out.println(ip3.isReachable(5000)); ```

端口号

端口号:标识正在计算机设备上运行的进程(程序),被规定为一个 16 位的二进制,范围是 0~65535。
端口类型:

  • 周知端口:0~1023,被预先定义的知名应用占用(如:HTTP占用 80,FTP占用21)
  • 注册端口:1024~49151,分配给用户进程或某些应用程序。(如:Tomcat 占用 8080,MySQL 占用 3306)
  • 动态端口:49152 到 65535,之所以称为动态端口,是因为它 一般不固定分配某种进程,而是动态分配。

一个设备中不能出现两个程序的端口号一样,否则出错。

协议

连接和通信数据的规则被称为网络通信协议

  • OSI 参考模型:世界互联协议标准,全球通信规范,由于此模型过于理想化,未能在因特网上进行广泛推广。
  • TCP/IP 参考模型(或 TCP/IP 协议):事实上的国际标准。 | OSI 参考模型 | TCP/IP 参考模型 | 各层对应 | 面向操作 | | —- | —- | —- | —- | | 应用层 | 应用层 | HTTP、FTP、DNS、SMTP… | 应用程序需要关注的:浏览器,邮箱。程序员一般在这一层开发 | | 表示层 | | | | | 会话层 | | | | | 传输层 | 传输层 | TCP、UDP… | 选择使用的 TCP , UDP 协议 | | 网络层 | 网络层 | IP、ICMP… | 封装源和目标 IP,进行路径选择 | | 数据链路层 | 数据链路层+物理 | 物理寻址、比特流… | 物理设备中传输 | | 物理层 | | | |

传输层的 2 个常见协议:

  • TCP(Transmission Control Protocol):传输控制协议
  • UDP(User Datagram Protocol):用户数据报协议

TCP 协议

TCP 协议特点:

  • 使用 TCP 协议,必须双方先建立连接,它是一种面向连接的可靠通信协议。
  • 传输前,采用“三次握手”方式建立连接,所以是可靠的 。
  • 在连接中可进行大数据量的传输 。
  • 连接、发送数据都需要确认,且传输完毕后,还需释放已建立的连接,通信效率较低。

TCP 协议通信场景:对信息安全要求较高的场景,例如:文件下载、金融等数据通信。
网络通信三要素 - 图1
TCP 三次握手确立连接
网络通信三要素 - 图2
TCP 四次挥手断开连接

UDP 协议

UDP 协议:

  • UDP 是一种无连接、不可靠传输的协议。
  • 将数据源 IP、目的地 IP 和端口封装成数据包,不需要建立连接
  • 每个数据包的大小限制在 64KB 内
  • 发送不管对方是否准备好,接收方收到也不确认,故是不可靠的
  • 可以广播发送 ,发送数据结束时无需释放资源,开销小,速度快。

UDP 协议通信场景:语音通话,视频会话等。