Java学习笔记36

news2024/12/28 3:02:10

Java笔记36

网络编程

概述

  • 计算机网络
    • 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
  • 网络编程的目的
    • 利用网络传播交流信息,来实现信息传递、通信等功能。

网络通信的要素

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

IP

  • IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。
  • IP规定网络上所有的设备都必须有一个独一无二的IP地址,就好比是邮件上都必须注明收件人地址,邮递员才能将邮件送到。同理,每个IP信息包都必须包含有目的设备的IP地址,信息包才可以正确地送到目的地。同一设备不可以拥有多个IP地址,所有使用IP的网络设备至少有一个唯一的IP地址。

IP地址

  • IP地址是指互联网协议地址,又译为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个唯一的逻辑地址,以此来屏蔽物理地址的差异。

  • 127.0.0.1是一个特殊的IP地址,表示主机本身(localhost),用于本地机器的测试。

IP地址的分类

  • IPv4/IPv6
    • IPv4和IPv6是不同类型的IP地址。它们的主要用途相同,标记不同的用户,并且让用户能通过IP进行通信。主要区别在于IPv6是最新一代的IP地址,它的可用的IP数量远大于IPv4 。

    • IPv4:如:172.16.254.1,以“点分十进制”表示,由4个字节组成(0~255),共32位的地址方案。IPv4地址组合的数量是有限的。总体而言,可以算出40亿个唯一地址。 早在2011年,全球互联网编号分配机构(IANA)就已经分发完了IPv4地址空间的最后一块。
      在这里插入图片描述

    • IPv6:如:0123:4567:89ab:cdef:0123:4567:89ab:cdef ,IPv6地址使用以冒号分隔的十六进制数字。 它分为8个16位块(无符号整数),构成一个128位地址方案。 IPv6也存在数量限制。不过可用的IP数量远大于IPv4的总数40亿个 。

在这里插入图片描述

  • 公网(互联网)/ 私网(局域网)

    • 由于我们国家接入国际互联网的时期比较晚,所以分配到的IP地址十分的稀少, 再者随着网络建设速度的不断加快、联网设备的持续增加,IP地址的供应更是严重不足。在早期规划IPv4 的时候,很多专家就担心IP地址会出现不足的情况,因此为了应对这个问题,IPv4地址被划分为公网IP和私网IP。
    • 公网IP:公网IP属于注册地址,每个公网IP都是全球唯一的,能直接连接上网络,所以对于那些住宅小区,公司,学校,政府机构等场所,就可以集中使用私有的IP进行管理,而大家可以共用一个IP去连接上公网,这样,就省下了许多宝贵的公网IP。公网IP主要有A、B、C、D、E五类地址:
      • A类:地址范围为1.0.0.0 - 127.255.255.255,主要分配给大量主机而局域网网络数量较少的大型网络;
      • B类:地址范围为128.0.0.0 - 191.255.255.255,一般用于国际性大公司和机构;
      • C类:地址范围为192.0.0.0 - 223.255.255.255,用于一般小公司校园网研究机构等;
      • D类:地址范围为224.0.0.0 - 239.255.255.255,用于特殊用途,又称做广播地址;
      • E类:地址范围为240.0.0.0 - 255.255.255.255,暂时保留。
    • 私网IP:私网IP属于非注册地址,只能在组织机构内部使用,不能直接连接上网络。也就是说,私网IP是不会出现在互联网上的,无法直接使用它们来访问互联网,而只能在本地连接也就是局域网中使用。私网IP主要有A、B、C三类地址:
      • A类:地址范围为10.0.0.0 - 10.255.255.255
      • B类:地址范围为172.16.0.0 - 172.31.255.255
      • C类:地址范围为192.168.0.0 - 192.168.255.255
      • 另外127.0.0.0 - 127.255.255.255为系统环回地址。

域名

  • 由于IP地址不方便记忆并且不能显示地址组织的名称和性质,人们设计出了域名,并通过域名系统来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。如: www.baidu.com

拓展练习:测试IP地址与域名

  • 下面,我们来写一段代码来测试一下IP地址与域名:
package com.clown.net;

import java.net.InetAddress;
import java.net.UnknownHostException;

//测试 IP地址与域名
/*
InetAddress类:用来封装数字式的IP地址和该地址的域名。该类没有构造方法。
对于InetAddress,三个静态方法:getLocalHost()、getByName()以及getAllByName()可以用来创建InetAddress的实例。
 */
public class TestInetAddress {

    public static void main(String[] args) {
        try {
            //查询本机地址
            InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");  //方式一
            System.out.println(inetAddress1);

            InetAddress inetAddress2 = InetAddress.getByName("localhost");  //方式二
            System.out.println(inetAddress2);

            InetAddress inetAddress3 = InetAddress.getLocalHost();  //方式三
            System.out.println(inetAddress3);

            //查询网站ip地址
            InetAddress inetAddress4 = InetAddress.getByName("www.baidu.com");
            System.out.println(inetAddress4);

            //常用方法
            System.out.println(inetAddress4.getCanonicalHostName());  //获取此IP地址的规范的域名
            System.out.println(inetAddress4.getHostAddress());  //获取字符串格式的原始IP地址
            System.out.println(inetAddress4.getHostName());  //获取此IP地址的主机名
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }

}

  • 运行结果:

在这里插入图片描述

端口

  • 端口是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为物理端口和虚拟端口。物理端口,又称接口,是可见端口 ,用于连接物理设备之间的接口,如:集线器、交换机、路由器上用于连接其他网络设备的接口。 虚拟端口是不可见接口,用于区分服务的端口,如:用于浏览网页服务的80端口,用于FTP服务的21端口等。 我们这里讲的是虚拟端口。

端口号

  • 每一个端口都有一个对应的端口号,通过端口号能找到唯一个的一个端口 。

  • 如果说IP地址是一串用来区分不同网络设备的数字,通过它,我们可以将消息传给指定的设备;那么,端口号就是一串用来区分不同程序的数字,通过它,我们可以将信息传给指定的程序。

  • IP地址+端口号才能唯一确定一个特定设备中的特定程序。

端口的分类

  • TCP与UDP段结构中端口地址都是16比特,可以有在0~65535范围内的端口号。
  • 按照端口号分类:
    • 公认端口:0~1023。它们紧密绑定于一些服务,通常这些端口的通讯明确表明了某种服务的协议。
      • 常见的公认端口:
        • HTTP:80
        • HTTPS:443
        • FTP:21
        • Telnet:23
    • 注册端口:1024~49151。它们松散地绑定于一些服务,也就是说有许多服务绑定于这些端口,这些端口同样用于其他许多目的。
      • 常见的注册端口:
        • Tomcat:8080
        • MySQL:3306
        • Oracle:1521
    • 动态或私有端口:49152~65535。理论上,不应为服务分配这些端口,通常机器从1024开始分配动态端口。例外:SUN的RPC端口从32768开始。
  • **按照协议类型分类:**按协议类型划分可分为TCP端口、UDP端口、IP端口、ICMP。
    • TCP端口:即传输控制协议端口,需要在客户端和服务器之间建立连接,这样可以提供可靠的数据传输。常见的包括FTP的21端口,Telnet的23端口,SMTP的25端口,HTTP的80端口,HTTPS的443端口。
    • UDP端口:即用户数据报协议端口,无需在客户端和服务器端建立连接,安全性得不到保障。常见的DNS的53端口,SNMP(简单网络管理协议)的161端口,QQ使用的8000和4000端口。
    • 保留端口:UNIX有保留端口号的概念,只有超级用户特权的进程才允许给它自己分配一个保留端口号。这些端口号介于1~1023之间,一些应用程序将它作为客户与服务器认证的一部分。
  • 使用端口号的注意事项:
    • 不要使用端口号为01023的端口(公认端口),也尽量不要使用端口号为4915265535的端口(动态或私有端口)。
    • 单个协议下,端口号不能冲突(端口号一般习惯为4位整数,在同一台计算机上端口号不能重复,否则,会产生端口号冲突 )

拓展:端口操作常用的DOS命令

netstat -ano  #查看所有的端口
netstat -ano | findstr "5900"  #查看指定的端口
tasklist/findstr "8696"  #查看指定端口的进程

拓展练习:测试端口

  • 下面,我们来写一段代码来测试一下端口:
package com.clown.net;

import java.net.InetSocketAddress;

//测试端口
//InetSocketAddress类: 该类实现 IP套接字地址(IP地址 + 端口号),它也可以是一对(主机名 + 端口号)
public class TestInetSocketAddress {

    public static void main(String[] args) {
        //实例化
        InetSocketAddress socketAddress1 = new InetSocketAddress("127.0.0.1", 8080);
        InetSocketAddress socketAddress2 = new InetSocketAddress("localhost", 8080);
        System.out.println(socketAddress1);
        System.out.println(socketAddress2);

        //常用方法
        System.out.println(socketAddress1.getAddress());  //获得 InetAddress
        System.out.println(socketAddress1.getHostName());  //获取地址
        System.out.println(socketAddress1.getPort());  //获取端口号
    }

}
  • 运行结果:

在这里插入图片描述

通信协议

协议

  • 通信协议是指通信各方事前约定的通信规则,可以简单地理解为各计算机之间进行相互会话所使用的共同语言。

网络通信协议

  • 网络通信协议是一种网络通用语言,为连接不同操作系统和不同硬体系结构的互联网络引提供通信支持,是一种网络通用语言。
  • 网络通信协议由三个要素组成:
    • 语义:解释控制信息每个部分的意义。它规定了需要发出何种控制信息,以及完成的动作与做出什么样的响应。
    • 语法:用户数据与控制信息的结构与格式,以及数据出现的顺序。
    • 时序:对事件发生顺序的详细说明。
  • 可以形象地把这三个要素描述为:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。
  • 常见的网络通信协议有:TCP/IP协议、IPX/SPX协议、NetBEUI协议等。

TCP/IP协议簇

  • TCP/IP是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP和IP两个协议,而是指一个由FTP、SMTP、TCPUDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
  • 重点:
    • TCP协议:传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。
    • UDP协议:数据报协议,是OSI(开放式系统互联)参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
  • 最具代表性的协议:
    • TCP协议:同上。
    • IP协议:网际互连协议,是TCP/IP体系中的网络层协议,它可以向传输层提供各种协议的信息,例如TCP、UDP等; 对下可将IP信息包放到链路层,通过以太网、令牌环网络等各种技术来传送。

拓展:OSI七层模型,TCP/IP四层概念模型以及对应的网络协议

在这里插入图片描述

对比TCP协议与UDP协议

  • TCP协议:
    • 有连接,类似打电话
    • 可靠的,“三次握手,四次挥手”
    • 分客户端和服务端
  • UDP协议:
    • 无连接,类似发短信
    • 不可靠的,不管对方是否准备好,都可以发送
    • 虽然也分客户端和服务端,但二者并没有明确地界限

“三次握手,四次挥手”

  • “三次握手”:

客户端A:“我的序列号是X,我们建立连接吧。”

如果服务端B同意连接,

服务端B:“收到,我知道你的序列号是X了,我的序列号是Y,我们建立连接吧。”

客户端A:“收到,我知道你的序列号是Y了。”

建立连接。

  • “四次挥手”:

客户端A停止发送数据,

客户端A:”我的序列号是X,我们释放连接吧。“

服务端B:“收到,我知道你的序列号是X了,我的序列号是Y,你确认一下。”

服务端B将最后的数据发送完毕 ,

服务端B:“收到,我知道你的序列号是X了,我的序列号是Y,你再确认一下,然后我们就释放连接吧。”

客户端A:”收到,我知道你的序列号是Y了,我已确认要释放连接。“

释放连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/911250.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ssm汽车养护管理系统源码和论文

ssm汽车养护管理系统038 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 开题报告内容:(研究现状、目的意义;基本内容、研究方法、参考文献等。) 研究现状 国外…

常见前端面试之VUE面试题汇总一

1. Vue 的基本原理 当 一 个 Vue 实 例 创 建 时 , Vue 会 遍 历 data 中 的 属 性 , 用 Object.defineProperty ( vue3.0 使 用 proxy) 将 它 们 转 为 getter/setter,并且在内部追踪相关依赖,在属性被访…

百度工程师浅析解码策略

作者 | Jane 导读 生成式模型的解码方法主要有2类:确定性方法(如贪心搜索和波束搜索)和随机方法。确定性方法生成的文本通常会不够自然,可能存在重复或过于简单的表达。而随机方法在解码过程中引入了随机性,以便生成更…

idea插件grep console最佳实践

首发博客地址 https://blog.zysicyj.top/ 参考博客:https://blog.csdn.net/ayunnuo/article/details/123997304 效果 配置 具体颜色 日志级别前景色背景色Error#FF0000#370000Warn#FFC033#1A0037Info#00FFF3无Debug#808080无 本文由 mdnice 多平台发布

python schedule库使用教程

schedule 是一个 Python 库,用于在指定的时间间隔或特定时间点执行任务。它可以帮助你创建定时任务,例如定时运行函数、脚本等。以下是一个简单的 schedule 库的使用教程。 安装 首先,你需要安装 schedule 库。你可以使用以下命令通过 pip …

ABBYY FindReader2024免费版电脑PDF格式扫描软件

在日常工作和生活中,我们有时需要将各种格式的文件转换为PDF格式,也可能需要将纸质文件扫描成PDF文档。今天要和大家分享的是PDF扫描软件哪个好,如何把多个扫描件合成一个PDF。 PDF作为目前主流的文件格式之一,在日常生活中我们需…

解决npm安装依赖失败,node和node-sass版本不匹配的问题

npm安装依赖报错: npm ERR! cb() never called! npm ERR! This is an error with npm itself. 一. 问题描述 用npm安装依赖报错: npm ERR! cb() never called! npm ERR! This is an error with npm itself. Please report this error at: npm ERR! …

记录一次wordpress项目的发布过程

背景:发布一套已完成的代码到线上,有完整的代码包,sql文件,环境是linux 宝塔。无wordpress相关经验。 过程:正常的发布代码 问题1:访问自己的域名后跳转到别的域名。 解决: 修改数据表wp_optio…

YOLOv8改进——引入可变形卷积DCNv3

YOLOv8 详解 ✨✨✨YOLOv8详解 【网络结构代码实操】 可变形卷积DCNv1 & DCNv2 ✨✨✨论文及代码详解——可变形卷积(DCNv1) ✨✨✨论文及代码详解——可变形卷积(DCNv2) DCNv3 是InternImage中提出的,DCNv3在DCNv…

centos7.6 firewalld防火墙配置

1、查看系统版本 cat /etc/redhat-release 2、查看防火墙运行状态 systemctl status firewalld 此处可以看到防火墙已开启。 3、关闭开机自启动防火墙 systemctl disable firewalld.service 4、启动防火墙并查看状态,系统默认 22 端口是开启的。 systemctl start f…

HCIP学习--企业网三层架构实验

一、实验拓扑 二、实验要求 内网IP地址172.16.0.0/16合理分配 SW1/2之间互为备份 VRBP/STP/LANTRUNK均使用 所有PC通过DHCP获取ip地址 三、实验步骤 首先思考进行IP地址的规划 配置eht-trunk [sw1]interface Eth-Trunk 0 [sw1-Eth-Trunk0]q [sw1-GigabitEthernet0/0/1]i…

魏副业而战:她的闲鱼号被封了

我是魏哥,与其躺平,不如魏副业而战! 社群小K的闲鱼号被封了。 什么原因呢? 卖书被举报了。 魏哥调侃说,别干了,放弃吧。 她不听,重新开搞…… 这就是真正的网络创业者该有的素养。 魏哥蛮…

安卓系列机型-禁止卸载某个APP 防止误卸载软件 无需root权限

安卓系列机型-禁止安装某软件 防止“沉迷游戏的小孩”操作解析_安卓机器的博客-CSDN博客 上一期讲了如何禁止安装某个app。今天讲下如何禁止卸载某app。正好相反的操作。任何操作有利有弊。主要看使用者如何对待使用。 💔💔💔以腾讯的一款游…

Jenkins自动化部署Vue项目

1、新建item,选择 Freestyle project 2、源码管理选择git,输入git仓库地址和授权账号,并指明要部署的分支 3、构建选择 Execute shell,输入vue项目打包命令 命令示例: source /etc/profile node -v npm config set re…

内容分发网络CDN与应用程序交付网络ADN之间的异同

当您想要提高网站性能时,需要考虑许多不同的配置和设施,CDN和ADN是我们常遇见的几种选项之一。“CDN”指“内容分发网络”,而“ADN”指“应用程序交付网络”,但他们两者很容易被混淆,虽然它们的功能和作用都有较大差异…

​山东省图书馆典藏《乡村振兴战略下传统村落文化旅游设计》鲁图中大许少辉博士八一新书

​山东省图书馆《乡村振兴战略下传统村落文化旅游设计》鲁图中大许少辉博士八一新书

FastDFS与Nginx结合搭建文件服务器,并实现公网访问【内网穿透】

文章目录 前言1. 本地搭建FastDFS文件系统1.1 环境安装1.2 安装libfastcommon1.3 安装FastDFS1.4 配置Tracker1.5 配置Storage1.6 测试上传下载1.7 与Nginx整合1.8 安装Nginx1.9 配置Nginx 2. 局域网测试访问FastDFS3. 安装cpolar内网穿透4. 配置公网访问地址5. 固定公网地址5.…

arthas-安装

window环境 在线安装 进入到对应的目录,cmd 下载jar包 curl -O https://arthas.aliyun.com/arthas-boot.jar 运行 java -jar arthas-boot.jar 该问题是没有运行的java项目,启动idea运行一个java项目,重新执行 选择要监听的端口号 输入ar…

【2023七夕】星河漫舞,七夕的璀璨之夜。分享:七夕表白的前端特效(附完整原代码+详细注释),情不知何起,却一往情深。愿天下有情人终成眷属

满山遍野你的脸庞,唯有遗忘是最漫长。 又一年的七夕了,今年,你还是孤单一人吗? … … 若是的话,咱们可是一个阵营的!!! 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿…

快妥稳!户外拍摄,5G黑科技更给力!

随着新媒体时代的到来,“户外实景美学”已然成为影视创作打磨爆款作品、衍生荧屏效应的一把“杀手锏”。恢弘山川、烟雨江南、异域小城、古朴村落……从一方影棚再到“天然片场”,主打一个“身临其境”般更加真实的视听体验。 杭州浙文影业影视公司是一家…