JAVA网络编程

EaborH

网络编程
可以让设备中的程序与网络上其他设备中的程序进行数据交互的技术(实现网络通信)。

基本的通信架构

基本的通信架构有2种形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)。

网络通信三要素

IP

设备在网络中的地址,是设备在网络中的唯一标识

IP地址

  • IP(Internet Protocol):全称”互联网协议地址”,是分配给上网设备的唯一标识。目前,被广泛采用的IP地址形式有两种:IPv4、IPv6。
    1. IPv4是InternetProtocolversion4的缩写,它使用32位地址,通常以点分十进制表示
    2. IPv6是InternetProtocolversion6的缩写,它使用128位地址,号称可以为地球上的每一粒沙子编号。IPv6分成8段,每段每四位编码成一个十六进制位表示,每段之间用冒号(:)分开,将这种方式称为冒分十六进制。

IP域名(Domain Name)

  • 用于在互联网上识别和定位网站的人类可读的名称。
  • DNS域名解析 (Domain Name System): 是互联网中用于将域名转换为对应IP地址的分布式命名系统。它充当了互联网的“电话簿”,将易记的域名映射到数字化的IP地址,使得用户可以通过域名来访问网站和其他网络资源。

公网IP、内网IP

  • 公网IP:是可以连接到互联网的IP地址
  • 内网IP:也叫局域网IP
    • 是只能组织机构内部使用的IP地址;例如,192.168.开头的就是常见的局域网地址,范围为192.168.0.0–192.168.255.255,专门为组织机构内部使用。
  • 本机IP:127.0.0.1、localhost:代表本机IP,只会寻找当前程序所在的主机。

InetAddress: 代表IP地址。

InetAddress的常用方法

InetAddress类的常用方法 说明
public static InetAddress getLocalHost() throws UnknownHostException 获取本机IP,返回一个InetAddress对象
public String getHostName() 获取该ip地址对象对应的主机名
public String getHostAddress() 获取该ip地址对象中的ip地址信息
public static InetAddress getByName(String host)throws UnknownHostException 根据ip地址或者域名,返回一个inetAddress对象
public boolean isReachable(int timeout) throws IOException 判断主机在指定毫秒内与该ip对应的主机是否能连通

端口

应用程序在设备中的唯一标识

用来标记标记正在计算机设备上运行的应用程序,被规定为一个16位的二进制,范围是0~65535
端口分类

  • 周知端口:0~1023,被预先定义的知名应用占用(如:HTTP占用80,FTP占用21)
  • 注册端口:1024~49151,分配给用户进程或某些应用程序。
  • 动态端口:49152到65535,之所以称为动态端口,是因为它一般不固定分配某种进程,而是动态分配。
  • 注意:我们自己开发的程序一般选择使用注册端口,且一个设备中不能出现两个程序的端口号一样,否则报错。

协议

连接和数据在网络中传输的规则、

OSI网络参考模型:全球网络互联标准。
TCP/IP网络模型:事实上的国际标准。

UDP(User Datagram Protocol):用户数据报协议。

  • 特点:无连接、不可靠通信。
  • 不事先建立连接,数据按照包发,一包数据包含:自己的IP、端口、目的地IP、端口和数据(限制在64KB内)等。
  • 发送方不管对方是否在线,数据在中间丢失也不管,如果接收方收到数据也不返回确认,故是不可靠的。
    TCP(TransmissionControl Protocol):传输控制协议。
  • 特点:面向连接、可靠通信。
  • TCP的最终目的:要保证在不可靠的信道上实现可靠的数据传输。
  • TCP主要有三个步骤实现可靠传输:三次握手建立连接,传输数据进行确认,四次挥手断开连接。
  • Title: JAVA网络编程
  • Author: EaborH
  • Created at : 2025-03-28 00:00:00
  • Updated at : 2025-03-28 17:31:06
  • Link: https://eabor.xyz/2025/03/28/Java网络编程/
  • License: This work is licensed under CC BY-NC-SA 4.0.