当前位置: 首页 > news >正文

JAVA——网络编程基本概念

🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!

人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习!

欢迎志同道合的朋友一起加油喔🦾🦾🦾
目标梦想:进大厂,立志成为一个牛掰的Java程序猿,虽然现在还是一个🐒嘿嘿
谢谢你这么帅气美丽还给我点赞!比个心


目录

一. IP地址和端口号 

1. IP地址

2. 端口号

二.协议

1. 为什么要引入协议

2. 协议的基本概念 

3. 一些协议的默认端口

 三.协议分层

OSI七层模型

TCP/IP五层模型(重点)

封装和分用



一. IP地址和端口号 

1. IP地址

  1. IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址,就好比我们每个人的身份证号一样,一个身份证号有且只能对应一个人
  2. IP地址由一个32位的二进制数表示,它被分割为4个“8位二进制数”(也就是4个字节),如:01100100.00000100.00000101.00000110。
    通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:
    100.4.5.6
  3. 一般情况下,我们都希望网路上每个主机的IP地址都不一样,但实际上由于IP地址不太够用(最多只能取42亿9千万),所以还是有多个主机共用一个IP地址的情况

注意:
127.?的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)而言,常见的开发方式都是本机到本机的网络通信

IP地址解决了网络通信时定位网络主机的问题,但是还存在一个问题,传输到目的主机后,由哪个进程来接收这个数据呢?这就需要端口号来标识

2. 端口号

  1. 用于区分一台主机上的应用程序,相当于应用程序的一个标识,端口号是一个整数(2个字节,取值范围为0-65535)。
  2. 例如:MySQL的默认端口号为3306
  3. 当一台主机收到一个具体的数据的时候,要把这个数据交给哪个程序来处理往往是通过端口号来进行区分的;每个访问网络的程序,都需要有一个不同的端口号,即一台主机上,不能用两个进程尝试关联(绑定)同一个端口号

二.协议

1. 为什么要引入协议

有了IP地址和端口号,这样可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,那么我们如何告诉对方发送的数据是什么样的呢?
网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?
为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式

2. 协议的基本概念 

协议就例如:接头行动,两个人必须规定一个暗号,才能对上,这就是一种协议
计算机中的协议就是
规定网络通信中的设备如何连接,如何互相识别的一套规则

协议有三要素:

  • 语法:规定数据与控制信息格式。例如两个人打电话规定用中国话
  • 语义:规定当一端发出了控制信息,另一端该如何响应,做出什么动作。比如跑步,发令枪一响运动员就跑起来了
  • 时序:即事件实现顺序的详细说明。规定了何时通信,先干什么,后干什么。

协议(protocol)最终体现为在网络上传输的数据包的格式

3. 一些协议的默认端口

系统端口号范围为 0 ~ 65535,其中:0 ~ 1023 为知名端口号,这些端口预留给服务端程序绑定广泛使用的应用层协议,如:

  1. 22端口:预留给SSH服务器绑定SSH协议
  2. 21端口:预留给FTP服务器绑定FTP协议
  3. 23端口:预留给Telnet服务器绑定Telnet协议
  4. 80端口:预留给HTTP服务器绑定HTTP协议
  5. 443端口:预留给HTTPS服务器绑定HTTPS协议

 以上只是说明 0 ~ 1023 范围的知名端口号用于绑定知名协议,但某个服务器也可以使用其他 1024 ~65535 范围内的端口来绑定知名协议

一个协议如果要解决网络通信的全部问题,那么一个协议是十分复杂的,于是有了协议分层


 三.协议分层

协议分层就如同我们写代码时,一个类太复杂了,我们就把他拆分成多个类,一个类实现一个功能。
类似,有些协议解决的问题都差不多,于是依据他解决问题的类型,把他们分成了多层协议。

常见协议分分层模型:

OSI七层模型

由于OSI七层模型过于复杂,且不实用,所以并没有实现

TCP/IP五层模型(重点)

TCP/IP模型根据OSI七层模型进行了精简,如图



理解每层协议的功能:

  • 应用层:负责数据传输到之后,该怎么使用
  • 传输层:负责两点之间数据传输,只管发出者和接收者,不管传输路径。可类比卖家发货只管发货地和收货地
  • 网络层:负责两个点之间的路径规划。可类比卖家把东西给物流公司后,物流公司负责规划路径,例如北京到深圳,可以是这个路径:北京——杭州——苏州——深圳,也可以是这个路径:北京——广东——上海——深圳。
  • 数据链路层:负责两个节点之间如何传输。可类比物流公司规划完路径之后,两个节点之间如何运输,北京到广东该用货车运还是飞机运。
  • 物理层:网络通信基础设施。就是我们平常可见的信号塔,也可类比送快递的公路,没有公路快递也没法送

协议在此拆分过后,有许多好处:

  1. 下层协议使用上层协议不需要知道他实现细节,只管用
  2. 每一层协议可以替换成其他协议,其他层次的协议是不会感受到的,这也是协议更加灵活了

网络设备所在分层:

  • 路由器:网络层
  • 交换机:数据链路层
  • 集线器:物理层

封装和分用

封装就是在每层进行处理成一个数据报,然后递给下一层,在处理完后,交给物理层传输出去。

过程在应用层会产生一个数据包,然后将数据包递给传输层,传输层拿到数据包和自己的数据整合好产生一个数据报再给网络层,以此类推,直到数据链路层整合好所有数据后,会构成一个以太网数据帧,将这个数据给物理层,物理层会将二进制信息转化为光信号/电信号传递出去。

同理,分用就是封装的逆过程,将数据层层拆分,最后拿到应用程序数据

相关文章:

JAVA——网络编程基本概念

🎉🎉🎉点进来你就是我的人了 博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!人生格言:当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔🦾&am…...

[JavaEE]----Spring02

文章目录Spring_day021,IOC/DI配置管理第三方bean1.1 案例:数据源对象管理1.1.1 环境准备1.1.2 思路分析1.1.3 实现Druid管理步骤1:导入druid的依赖步骤2:配置第三方bean步骤3:从IOC容器中获取对应的bean对象步骤4:运行程序1.1.4 实现C3P0管理步骤1:导入C3P0的依赖步…...

笔记本可自行更换CPU、独显了,老外用它手搓了台“PS5”

前面说到微软打算在 Win12 出来前搞出个模块化的Windows:下一个系统不是Win12,微软要复活Win10X。 模块化不用小蝾再过多介绍了,就像积木一样拼在一起组成一个整体。 优势就很明显了,由于每个部分都是单独的模块,更新…...

Linux uart驱动框架

Linux内核提供了标准的UART驱动程序,可以通过以下步骤编写: 首先需要定义一个结构体来存储串口设备数据。在该结构体中,包含一个uart_port结构体,用于与Linux内核通信,并包含一些设备特定的数据(例如波特率…...

第一个禁止ChatGPT的西方国家

意大利成为第一个有效禁止 ChatGPT 的西方国家。 由于可能违反隐私和数据法,该国的数据监管机构已下令开发聊天机器人的 OpenAI 停止运营。 意大利数据保护局 (GPDP) 提到了一些担忧,包括大量收集用户数据和存储以训练 AI 算法。 ChatGPT 是一种大型语…...

Web 攻防之业务安全:Session会话注销测试.

Web 攻防之业务安全:Session会话注销测试. 业务安全是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台(操作系统、数据库,中间件等)、业务系统自身(软件或设备)、业务所…...

4月最新编程排行出炉,第一名ChatGPT都在用~

作为一名合格的(准)程序员,必做的一件事是关注编程语言的热度,编程榜代表了编程语言的市场占比变化,它的变化更预示着未来的科技风向和机会! 快跟着一起看看本月排行有何看点: 4月Tiobe排行榜前…...

生成不保存在服务器的附件,并以附件形式发送邮件

需求:从数据库中抓取需要的数据,将数据生成excel表格,并将此表格以附件的形式放置到邮件中发送 //发送带附件的邮件,同时附件不会生成到服务器中public static String sendFileEmail(String form, String code, String to, String…...

Golang Gin框架HTTP上传文件

Golang Gin框架HTTP上传文件解析 文章目录Golang Gin框架HTTP上传文件解析HTTP上传的文件的原理Gin框架文件上传Demo限制文件上传的大小文件类型验证文件上传进度-后台计算文件上传进度HTTP上传的文件的原理 HTTP协议的文件上传是通过HTTP POST请求实现的,使用mult…...

BM36-判断是不是平衡二叉树

题目 输入一棵节点数为 n 二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空…...

Quartz 单例定时任务

1、引入jar包&#xff0c;继承 Job 接口&#xff0c;编写需要执行的业务逻辑 <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.2</version></dependency> public class D…...

不要告诉同事你要离职!打算跳槽,新公司开出两倍薪资,私下告诉要好的同事,却被同事出卖给领导!...

职场上有真正的朋友吗&#xff1f;来看看这位网友的讲述&#xff1a;一位前同事本来打算跳槽&#xff0c;新公司开出的薪资是原来的两倍。她私下告诉了几位同事自己打算离职的消息&#xff0c;并跟同事们分享了工资翻倍的喜悦。可她万万没想到&#xff0c;两天之后的公司会议上…...

RK3399平台开发系列讲解(外设篇)Camera OV13850配置过程

🚀返回专栏总目录 文章目录 一、DTS 配置二、驱动说明三、配置原理四、cam_board.xml沉淀、分享、成长,让自己和他人都能有所收获!😄 📢我们以 OV13850/OV5640 摄像头为例,讲解在该开发板上的配置过程。 一、DTS 配置 isp0: isp@ff910000 {…status = "okay&quo…...

yolov8训练自己的数据集

yolov8训练自己的数据集 1. 标注自己的数据集1.1 确认标注格式1.2 开始标注1. 标注自己的数据集 1.1 确认标注格式 YOLOv8 所用数据集格式与 YOLOv5 YOLOv7 相同,采用格式如下: <object-class-id> <x> <y> <width> <height...

【产品经理】对接第三方平台,你应该怎么做?

作为产品经理&#xff0c;有时候你会接到需求、要求处理对接第三方平台的工作&#xff0c;那么你知道如何判断该不该接这个需求、如何处理第三方平台的对接工作吗&#xff1f; 一、Why 首先是为什么要选择对接第三方平台&#xff0c;这不是一个拍脑袋就可以做决定的事情&#…...

Hbase 介绍

Hbase 简介 Hbase 是一个开源的非关系型的分布式数据库&#xff0c;运用于HDFS文件系统之上&#xff0c;可以容错地存储海量稀疏的数据。Hbase是一个高可靠、高性能、面向列、可伸缩、实时读写的分布式数据库&#xff0c;主要用来存储非结构化和半结构化的松散数据 。 Hbase的…...

金三银四没把握住,凉了...

大家好&#xff0c;前两天跟朋友感慨&#xff0c;今年的铜三铁四、裁员、疫情导致好多人都没拿到offer!现在互联网大厂终于迎来了应届生集中求职季。 对于想跳槽的软件测试人来说&#xff0c;绝对是个找工作的好时机。这时候&#xff0c;很多高薪技术岗、管理岗的缺口和市场需…...

模拟axios请求的数据Mockjs在vue3的使用

1.安装mockjs和axios cnpm install mockjs -Scnpm install axios -S目录结构(这里的演示只用到这四个文件) 2.创建模拟返回的数据(src/mockjs/http.js),放入以下内容 //模拟的请求数据 export default {getData: () > {return {code: 200,tableData: [{id: "01",…...

Elasticsearch:索引状态是红色还是黄色?为什么?

在我之前文章 “Elasticsearch&#xff1a;如何调试集群状态 - 定位错误信息” 中&#xff0c;我有详细介绍如何调试集群状态。在今天的文章中&#xff0c;我将详细介绍如何故障排除和修复索引状态。 Elasticsearch 是一个伟大而强大的系统&#xff0c;特别是创建一个可扩展性极…...

一对多关系映射

在MyBatis中,可以使用XML文件或者注解来进行关系映射。其目的就是将Java对象和数据库表进行映射,从而可以方便地进行数据的操作。 MyBatis关系映射数据库表到Java对象的映射SQL语句到Java方法的映射定义Java类,在XML文件中定义这个Java类和数据库表之间的映射关系定义Java方…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中&#xff0c;各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过&#xff0c;在涉及到多个子类派生于基类进行多态模拟的场景下&#xff0c;…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...

Unity中的transform.up

2025年6月8日&#xff0c;周日下午 在Unity中&#xff0c;transform.up是Transform组件的一个属性&#xff0c;表示游戏对象在世界空间中的“上”方向&#xff08;Y轴正方向&#xff09;&#xff0c;且会随对象旋转动态变化。以下是关键点解析&#xff1a; 基本定义 transfor…...