【JavaEE】网络(1)


🐵本篇文章开始讲解计算机网络相关的知识

一、基础概念

1.1 局域网和广域网

局域网→Local Area Network→简称LAN,局域网是局部组建的一种私有网络,局域网内的主机之间可以进行网络通信,局域网和局域网之间在没有连接的情况不能进行通信

广域网→Wide Area Network→简称WAN,广域网通过路由器将多个局域网连接组成很大范围的网络

1.2 IP地址

网络通信的本质就是主机之间基于网络进行数据传输,那该如何判断数据从哪台主机传给哪台主机?这就需要IP地址来表识

简单来说,IP地址用于定位主机的网络地址

【格式】

IP地址是一个32位的二进制数(4个字节)如:01100100.00000100.00000101.00000110,这种方式不太容易看,所以通常使用"点分十进制",比如:192.168.100.176,每个部分都是一个0-255的十进制数

1.3 端口号

端口号用来标识一个主机上的不同的应用程序(定位主机中的进程)每个程序在启动时都需要绑定一个和其他程序不重复的端口号

通过IP地址可定位唯一的一个主机,通过端口号可以定位主机里唯一的一个(应用程序)进程,也就是说通过IP地址和端口号可以确定网络中唯一一个进程

【格式】

端口号是0~65535范围的数字,再网络通信中,进程可以通过绑定一个端口号来发送和接收网络数据


端口号是一个由2个字节表示的无符号整数:0~65535,其中 <1024 的端口号称为 "知名端口号" 把这些端口号分配一些比较知名的服务器程序作为这些服务器的 "默认端口号"

注意,前面说每个进程都需要绑定和其他进程不冲突的端口号,但一个进程同一时刻可以绑定多个端口号

二、协议

2.1 概念

协议即网络协议,简单来说,协议就是计算机与计算机之间通过网络实现通信时事先达成的一种"约定",这种约定使那些那些由不同厂商的设备、不同CPU、不同操作系统所组成的计算机,只要遵循相同的协议就能够实现通信

如果不遵循相同的协议,则不能实现通信,就好比两个使用不同语言的人无法进行交流

2.2 协议分层

网络通信是一个很复杂的事情,如果用一个协议约定网络通信的所有细节,这个协议会非常复杂,所以要进行拆分,把一个复杂的协议拆分成多个功能更单一的协议,面对这么多协议,就要进行分类→分层

协议分层和公司中的分组结构很像:

协议分层,把很多协议按照功能分成不同的层级,每个层级都有对应的任务,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务(各种api、接口),不能够"越级调用"

【协议分层的好处】

1)起到封装的效果,某一层的协议不必知道其他层协议的细节,比如下图:

两个人用电话通信,他们只需要会说汉语就行,而不用理解电话的工作原理

2)相同层次的协议可以灵活替换→解耦合

上图可以看到,改变其他层协议并不影响本层协议的使用

2.3 分层模型(OSI和TCP/IP)

1)OSI七层模型:

许多通信协议或多或少都参考了这个模型,但是OSI七层模型没有落地实现,实际组键网络时,知识以OSI模型中的部分分层,也就是TCP/IP五层(或四层)模型来实现的

2)TCP/IP五层(或四层)模型

下图是TCP/IP 与 OSI 模型之间的关系:

可以看到,TCP/IP模型将OSI模型的应用层、表示层、会话层合并成了应用层

每一层代表什么意思:

  • 物理层:TCP/IP 的物理层时负责数据传输的硬件,这种硬件相当于以太网或电话线路等物理层的设备
  • 数据链路层:通信传输是通过物理层的传输介质实现的,数据链路层就是在通过传输介质互连的设备之间进行数据处理,关注相邻两个点之间的通信
  • 网络层:关注的是通信中,通信路径的规划,规划出的路径就决定了数据要经过哪些节点
  • 传输层:关注的是通信双方的起点和终点
  • 应用层:和具体的应用程序相关,传输的数据干啥用,如何使用,有何意义

2.4 网络设备所在分层

  • 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层
  • 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层
  • 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层
  • 对于集线器,它只实现了物理层
     

2.5 例子

协议的层和层之间是如何配合工作的,以qq发送信息为例:A 通过QQ发送hello给 B

1)假设QQ的应用层协议约定了数据应该按照这种格式来组织:四条信息组织成字符串以逗号分隔,使用\n表示结束标志→【发送人的qq号,接收人的qq号,发送时间,消息正文\n】

QQ应用程序会根据应用层协议约定的数据格式将A发送的数据组织成应用层数据包

应用层接下来要把数据交给传输层,传输层(操作系统内核)提供了api让应用程序去调用,调用api,应用层数据包就交给了传输层

2)传输层会对这个数据包进一步封装,构造成传输层数据包,在传输层有两个典型的协议:TCP、UDP,此处假设用UDP作为传输层协议,根据UDP协议构造UDP数据包

报头里放的是一些UDP属性,如发送方和接收方的端口号

传输层要把数据包交给网络层,调用网络层提供的api(这个调用过程都是系统内核负责的)

3)网络层典型的协议是IP协议,假设根据IP协议构造出IP数据包

IP报头包含一些发送方和接收方的IP地址

网络层要把数据包交给数据链路层,调用数据链路层提供的api

4)数据链路层的典型协议是以太网,以太网会将数据包进一步封装,构造出以太网数据帧

5)上述以太网数据帧本质上是二进制数据,物理层的硬件设备要把上述二进制数据转成光电信号,然后通过传输介质进行传输


数据不是直接到达B而是先到和A连接的路由器/交换机,经过一系列转发之后,最终会到达B,到了B要做的就是上述过程的逆过程

1)物理层收到一系列光电信号,把这些信号转成二进制数据交给数据链路层

2)按照以太网协议解析报头中的关键信息,取出载荷,把载荷交给网络层

3)IP协议拿到IP数据包,按照协议解析报头中的关键信息,取出载荷,把载荷交给传输层

4)UDP协议拿到UDP数据包,按照协议解析报头中的关键信息(要交给哪个端口号对应的进程),取出载荷,把载荷交给应用层

5)QQ程序拿到数据包,按照自己的协议解析并拿到结构化数据

到此,A向B发信息的过程就结束了~


上述过程提到的典型协议,后续都会详细讲解,这里只要有个印象就行

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 模板测试透视效果(URP)

可以实现笼中窥梦和PicoVR中通过VST局部透视效果。 使用到的Shader: Shader "Unlit/StencilShader" {Properties{[IntRange]_Index("Stencil Index",Range(0,255))0}SubShader{Tags{"RenderType""Opaque""Queue""Geo…

川渝地区软件工程考研择校分析

通过最新数据分析,5所高校软件工程专业2025年考研难度从高到低预计为: 电子科技大学 >> 四川大学 > 重庆大学 ≈ 西南交通大学 > 西南大学 对于想考川渝地区985但核心目标为优先上岸的考生,建议重点考虑西南交通大学软件工程学硕。该校24届软件工程学硕实际录取1…

KeepAlive与RouterView缓存

参考 vue动态组件&#xff1c;Component&#xff1e;与&#xff1c;KeepAlive&#xff1e; KeepAlive官网介绍 缓存之keep-alive的理解和应用 Vue3Vite KeepAlive页面缓存问题 vue多级菜单(路由)导致缓存(keep-alive)失效 vue3 router-view keeperalive对于同一路径但路径…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(五)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(五) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(四)

《拉依达的嵌入式\驱动面试宝典》—C/CPP基础篇(四) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《拉…

短波红外相机

短波红外相机搭载采用 SenSWIR 技术的 Sony 高灵敏度传感器&#xff0c;能捕获到400nm~1700nm范围的可见光-短波红外宽波段图像信息&#xff0c;该相机可替代传统的“可见光相机短波红外相机”双相机检测方案&#xff0c;降低系统成本、提高处理速度、扩大检测范围&#xff0c;…

系统安全——访问控制访问控制

访问控制 概念 什么是访问控制 access control 为用户对系统资源提供最大限度共享的基础上&#xff0c;对用户的访问权进行管理&#xff0c;防止对信息的非授权篡改和滥用 ​ 访问控制作用 保证用户在系统安全策略下正常工作 拒绝非法用户的非授权访问请求 拒绝合法用户越权…

封装confirm(Vue3+Ts)

文章目录 思路createApp封装confirm下周计划 思路 封装confirm首先要在以前js封装confirm的基础上进行操作 之前封装confirm的时候 是通过调用自己写的confirm函数实现弹窗的出现以及消失并进行逻辑的 那么在Vue3中怎么实现呢&#xff1f; 首先要进行调用函数进行传参的操作&a…

玉米叶病预测数据集,使用yolo,coco,voc格式人工标注,准确率可达95.7%以上, 10884张图片,可识别叶枯病,普通锈病,灰叶斑病,健康的玉米叶

玉米叶病预测数据集&#xff0c;使用yolo&#xff0c;coco&#xff0c;voc格式人工标注&#xff0c;准确率可达95.7&#xff05;以上&#xff0c; 10884张图片&#xff0c;可识别叶枯病,普通锈病&#xff0c;灰叶斑病&#xff0c;健康的玉米叶 普通锈病 灰叶斑病 健康的 叶枯病…

深入理解C++优先级队列:原理解析与代码实战

C嘎嘎探索篇&#xff1a;优先级队列&#xff1a;在数据之舞中揭开算法的艺术面纱 前言&#xff1a; 小编在前几日刚刚完成了栈和队列相关内容的书写&#xff0c;今天小编在讲一种特殊的队列&#xff0c;它的名字叫做优先级队列&#xff0c;细心的读者朋友可能会发现在queue这…

SpringBoot:快速构建微服务应用

一、SpringBoot简介 什么是SpringBoot 是由Pivotal团队提供的快速开发框架。它基于Spring框架&#xff0c;可以用于快速构建微服务应用程序。SpringBoot提供了一种快速、便捷的方式来启动和配置一个基于Spring的应用程序&#xff0c;它封装了很多常用的配置&#xff0c;简化了开…

轻量级日志管理平台:Grafana Loki搭建及应用(详细篇)

前言 Grafana Loki是Grafana Lab团队提供的一个水平可扩展、高可用性、多租户的日志聚合系统&#xff0c;与其他日志系统不同的是&#xff0c;Loki最初设计的理念是为了为日志建立标签索引&#xff0c;而非将原日志内容进行索引。 现在目前成熟的方案基本上都是&#xff1a;L…

ansible自动化运维(四)jinjia2模板

Jinjia2模板 前面说到playbook组成的时候&#xff0c;有介绍到template模块&#xff0c;而template模块对模板文件进行渲染时&#xff0c;使用的就是jinja2模板引擎&#xff0c;jinja2本身就是基于python的模板引擎&#xff0c;所以下面先来了解一下jinjia2模板的一些用法 基…

光谱相机

光谱相机是一种能够同时获取目标物体的空间图像信息和光谱信息的成像设备。 1、工作原理 光谱相机通过光学系统将目标物体的光聚焦到探测器上&#xff0c;在探测器前设置分光元件&#xff0c;如光栅、棱镜或滤光片等&#xff0c;将光按不同波长分解成多个光谱通道&#xff0c…

LLM 分布式训练六大关键技术介绍

编者按&#xff1a; 本文聚焦于分布式去中心化神经网络训练技术&#xff0c;作者系统阐述了在大规模模型训练中提高硬件使用效率的创新方法。 文章重点阐述了六种关键的分布式训练技术&#xff1a; 数据并行训练&#xff1a;通过将数据 mini-batches 分散到多个 workers&#x…

【记录】Django解决与VUE跨域问题

1 梗概 这里记录Django与VUE的跨域问题解决方法&#xff0c;主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…

跨平台开发技术的探索:从 JavaScript 到 Flutter

随着多平台支持和用户体验一致性在应用程序开发中变得越来越重要,开发者面临的挑战是如何在不同平台上保持代码的可维护性和高效性。本文将探讨如何利用现代技术栈,包括 Flutter、JavaScript、HTML5、WebAssembly、TypeScript 和 Svelte,在统一的平台上进行高效的跨平台开发…

队列+宽搜_429. N 叉树的层序遍历_二叉树最大宽度

429. N 叉树的层序遍历 定义一个队列q&#xff0c;将一层的节点入队&#xff0c;并记录节点个数。根据节点的个数&#xff0c;出队列&#xff0c;并将其孩子入队列。出完队列&#xff0c;队列当前剩余节点的个数就是下次出队列的次数。直到队列为空 /* // Definition for a Nod…

语音芯片赋能可穿戴设备:开启个性化音频新体验

在科技日新月异的今天&#xff0c;语音芯片与可穿戴设备的携手合作&#xff0c;正引领我们步入一个前所未有的个性化音频时代。这一创新融合&#xff0c;用户可以享受到更加个性化、沉浸式的音频体验。下面将详细介绍语音芯片与可穿戴设备合作的优点和具体应用。 1. 定制化音效…

单片机学习笔记 18. IIC总线EEPROM(理论)

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…