网络通信(一)

网络编程概述

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

Java提供了哪些网络编程的解决方案

  • java.net.*包下提供了网络编程的解决方案

基本的通信架构

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

无论是CS架构,还是BS架构的软件都必须依赖网络编程

网络通信三要素

IP地址

  • IP(internet Protocol):全称当"互联网协议地址",设备在网络中的地址,是唯一的标识
  • IP地址有两种形式:IPv4、IPv6

IPv4

IPv6

  • IPv6:共128位
  • IPv6分成8段表示。每段每4位编码成一个十六进制位表示,数之间用冒号(:)分开。

公网IP,内网IP

  • 公网IP:就是可以连接互联网的IP地址;内外IP:也叫局域网IP,只能组织机构内部使用。
  • 192.168.开头的就是常见的局域网地址,范围即为192.168.0.0~192.168.255.255,专门位组织机构内部使用。

特殊IP地址

  • 127.0.0.1、localhost:代表本机IP,只会寻找当前所在的主机。

IP常用命令:

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

InetAddress

  • 代表IP地址
InetAddress的常用方法
名称 说明
public static InetAddress getLocalhost() 获取本机IP,会以一个inetAddress的对象返回
public static InetAddress getByName(String host) 根据IP地址或者域名,返回一个inetAddress对象
public String getHostName() 获取该IP地址对象对应的主机名
public String getHostAddress() 获取该IP地址对象中的IP地址信息
public boolean isReachable(int timeout) 在指定毫秒内,判断主机与该IP对应的主机是否能连通
java 复制代码
import java.net.InetAddress;

public class InetAddressTest {
    public static void main(String[] args) throws Exception {
        // 获取本机IP地址对象
        InetAddress ip1 = InetAddress.getLocalHost();
        System.out.println(ip1.getHostName());
        System.out.println(ip1.getHostAddress());

        // 获取指定IP或域名的IP地址对象
        InetAddress ip2 = InetAddress.getByName("www.baidu.com");
        System.out.println(ip2.getHostName());
        System.out.println(ip2.getHostAddress());

        // 相当于ping
        System.out.println(ip2.isReachable(6000));
    }
}

端口号

  • 应用程序在设备中唯一的标识,标记正在计算机设备上运行的应用程序的,被规定为一个16位的二进制,范围是0~65535。

分类

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

注意:我们自己开发的程序一般选择使用注册端口,且一个设备中不能出现两个程序的端口一样,否则出错。

协议

  • 网络上通信的设备,事先规定的连接规则,以及传输数据的规则被称为网络通信协议。

开发式网络互联标准:OSI网络参考模型

  • OSI网络参考模型:全球网络互联标准。
  • TCP/IP网络模型:事实上的国际标准。
OSI网络参考模型 TCP/IP 各层对应 面向操作
应用层 应用层 HTTP、FTP、SMTP...... 应用程序需要关注的:浏览器,邮箱。程序员一般在这一层开发
表示层 应用层 HTTP、FTP、SMTP...... 应用程序需要关注的:浏览器,邮箱。程序员一般在这一层开发
会话层 应用层 HTTP、FTP、SMTP...... 应用程序需要关注的:浏览器,邮箱。程序员一般在这一层开发
传输层 传输层 UDP、TCP...... 选择使用的TCP,UDP协议
网络层 网络层 IP...... 封装源和目标IP
数据链路层 数据链路层+物理 比特流...... 物理设备中传输
物理层 数据链路层+物理 比特流...... 物理设备中传输

传输层的2个通信协议

  • UDP(User Datagram Protocol):用户数据报协议;
  • TCP(Transmission Control Protocol):传输控制协议。
UDP协议
  • 特点:无连接,不可靠通信。通信效率高
  • 不事先建立连接,数据按照包发,一包数据包含:自己的IP、程序端口,目的地址、程序端口和数据(限制在64KB内)等。
  • 发送方不管对方是否在线,数据在中间丢失也不管,如果接收方收到数据也不返回确认,故是不可靠的。
TCP协议
  • 特点:面向连接、可靠通信。通信效率相对不高
  • TCP的最终目的:要保证在不可靠的信道上实现可靠的传输。
  • TCP主要有三个步骤实现可靠传输:三次握手建立连接,传输数据进行确认,四次挥手断开连接。

TCP协议:三次握手建立可靠连接

可靠连接:确认通信双方,收发消息都是正常无问题的(全双工)

TCP协议:四次握手断开连接

目的:确保双方数据的收发都已经完成

相关推荐
kkce3 小时前
快快科技 MTR 路由检测全面支持 IPv6,多节点覆盖赋能全协议网络诊断
服务器·网络·科技
acrel158215962213 小时前
新品!分布式新能源群调群控装置!ANet-4E16S-AGVC 装置让分布式发电更智能、更高效
网络·安科瑞电气·分布式新能源群调群控装置·微电网能源管理
zbtlink3 小时前
企业级路由器双网接入指南:实现高效稳定的网络融合
网络
ifeng09184 小时前
HarmonyOS网络请求优化实战:智能缓存、批量处理与竞态处理
网络·缓存·harmonyos
llilian_164 小时前
智能数字式毫秒计在实际生活场景中的应用 数字式毫秒计 智能毫秒计
大数据·网络·人工智能
武汉唯众智创5 小时前
职业院校网络安全靶场实训演练系统建设方案
网络·安全·web安全·网络安全·网络安全靶场实训演练系统·网络安全靶场实训·网络安全实训演练系统
G31135422735 小时前
判断 IP 地址纯净度
服务器·网络
北京盛世宏博6 小时前
如何利用技术手段来甄选一套档案馆库房安全温湿度监控系统
服务器·网络·人工智能·选择·档案温湿度
濊繵7 小时前
Linux网络--Socket 编程 TCP
linux·网络·tcp/ip
menge23337 小时前
Linux网站搭建
linux·运维·网络