JAVAEE——网络初始

文章目录

  • 网络发展史
    • 独立模式
    • 网络模式
      • 局域网LAN
      • 路由器的诞生
  • 网络通信的基础
    • IP地址
    • 端口号
  • 认识协议
    • OSI七层模型
    • TCP/IP五层模型

网络发展史

独立模式

在原始的年代中电脑间想要通信需要两台电脑连接一根网线,但是一台电脑基本上只有一个接口。因此想要链接更多的电脑是不可以的。

网络模式

随着时代的发展越来越多的计算机需要进行通信,那么这时候原来的是无法满足人们的需求的,这时候该怎么办呢?于是就进入了网络时代。
网络共享:将多台电脑连接起来完成数据共享。

局域网LAN

进入网络时代后我们以网络覆盖范围为基准将网络分为了局域网,城域网,广域网局域网的建立是通过一个设备叫做集线器诞生的。他是什么样子的呢?换句话说我们为什么需要集线器呢?我们来看看下述示意图
在这里插入图片描述
在没有集线器的时候主机(可以理解为电脑)之间是通过一根网线进行直链接的,这时候有一个弊端那就是这里面的消息会通过这一根网线传向所有的电脑并且,更为严重的问题是假如我们的电脑越多,那么这一根网线的传输效率就非常的慢,这时候怎么 解决呢?那就是用集线器,实现各个电脑通过集线器可以将自己与其他主机进行连接。
在这里插入图片描述
此时多个电脑之间的网线只需要链接集线器就可以了,并且自己想要发送的消息只需要交给集线器由集线器交给目标就可以了那么这时候一个局域网就组成了。


但是这时候只是解决了当需要链接的主机过多,导致的网线太长之类的问题还没有解决我们的数据传输的问题呢,因为集线器发送消息就像老师点名一样把自己的数据发给与自己相连的所有主机,那么就没有私密性可言了,所以人们又发明了交换机
在这里插入图片描述
交换机是可以实现我们说的主机与主机之间的发消息的私密性问题,可是如果我们的电脑很多怎么办?这时候导致我们所需要的交换机也变多了,那么这时候怎么办?聪明的人们就想到了我再发明一个机器用来让交换机链接不就好了这时候路由器诞生了

路由器的诞生

在这里插入图片描述
此时就可以用路由器组成局域网了。

网络通信的基础

现在网络通信的硬件上的基础我们满足了我们已经组成了一个网络空间了,那么如何在这个网络内发送和接受消息呢?这时候我们要解决两个问题。

  1. 要能够在这个网络内找到某个主机
  2. 在找到这个主机后要找到这个主机中进行通信的那个进程

第一点大家应该比较容易理解就是第二点不懂,我们来讲述一下。我们用QQ进行举例,我们两个人用QQ互相发消息。
在这里插入图片描述
而如何确定一个唯一的进程呢?那么就需要知道这个进程运行在哪个主机上,并且需要知道这个进程在这台主机的端口号是多少由此才可以确定唯一的一个进程。

IP地址

有了上面的了解我们可以知道IP地址是用来确定一台主机的。
地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如:
01100100.00000100.00000101.00000110。
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如:
100.4.5.6。

端口号

端口号是用来确定这个主机上唯一的一个进程的。
端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数
据。

认识协议

那么有了上面的基础我们来认识一下协议,什么是协议呢?协议就是规定,一种约定的意思,就像两个公司之间合作需要有合同一样,两台主机间进行交流也是需要协议的,可是我们要知道一台主机发出一条消息是涉及到方方面面的,从上到下一次分为了很多层。

OSI七层模型

在这里插入图片描述
在这里插入图片描述
从上到下依次为,应用层,表示层,会话层,表示层,传输层,网络层,数据链路层,物理层。
但是这个模型不仅复杂繁琐,而且还没啥实际用处,因此在开发的时候我们用的一般都是TCP/IP五层协议

TCP/IP五层模型

在这里插入图片描述
那么上面说了那么多其实就是想要告诉各位我们的主机发送消息这中间时经过很多层的,因此我们要知道,想用一个协议去规范这么多层的程序和硬件时不可能的,因此我们就需要对每一层都设计出不同的协议,那么一个消息究竟时如何传递的呢?
在这里插入图片描述
这时候我们知道一个消息的发送是分为发送方,和接受方的,发送方发送消息从上而下要经过应用层,传输层,网络层,数据链路层,物理层的。那么在这些层的消息是如何传递的呢?
在这里插入图片描述
此时用户输入的数据在经过每层的时候每一层都需要按照特定的协议在这个数据前加自己的报头,这个作用是什么呢?主要是为了使得用户数据在传递过程中可以有效的识别,我们可以理解为送快递,你的快递每当经过一个网点的时候都会将包装上的信息和二维码进行更新。并且往里面加入新的信息这个过程就是加报头的过程,可是这个根协议有什么关系我们来看一下下面的图
在这里插入图片描述
发送方到接受方的消息传播就是这样的一张图,发送方输入消息,消息从上到下经过各个层级的时候,会加报头,那么接收方的设备接受到消息后,为了能把你需要的信息呈现出来就会对收到的信息从下往上进行解报头。也就是分用,那么如何保证你的主机加的报头我这个主机可以进行正确的分用呢?那就是在各个层之间规定好固定的协议,这样就可以保证每个层可以按照这个规定正确的解报头以及正确的分用了。

	努力挣钱让家庭幸福美满吧。

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

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

相关文章

计算机基础知识-第9章-存储的本质(2)——硬盘和文件系统基础知识

一、机械硬盘的原理 概括来说,硬盘的工作原理是利用特定的磁粒子的极性来记录数据。磁头在读取数据时,将磁力子的不同极性转换成不同的电脉冲信号,再利用数据转换器将这些原始信号变成电脑可以使用的数据,写的操作正好与此相反。…

ubuntu或类Debian获取某些包的离线版本-包括依赖(还有一些意想不到的用途,哈哈)

前言 偶尔能碰到很特殊的情况。网址白名单,纯内网,超多依赖及一些很难描述的场景。 比如一些少见的发行版缺少某些包。这时候可以找一台类似的系统环境来下载离线包及 其依赖包,然后转移到内网进行安装。如果是网址白名单,或者纯内…

【讲解下常见的分类算法】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

牛客NC413 两个升序数组的中位数【hard 数组,模拟 Java、Go、PHP】

题目 题目链接: https://www.nowcoder.com/practice/b3b59248e61f499482eaba636305474b 思路 直接模拟2个数组有顺序放到一个数组中help中如果help长度为奇数,返回中间的数如果help长度为偶数,返回中间2个数的和除以2参考答案java import j…

会话跟踪技术基础:Cookie和Session

久违了,之前忙碌了一周赶毕设,今天抽空更新~ 一.理论知识 1.会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应~ 2.会话跟…

Python生成图片和音频验证码

captcha是pyhton的一个模块,用来生成图片和音频验证码。 安装 pip install captcha使用 from captcha.audio import AudioCaptcha from captcha.image import ImageCaptcha# 加载声音和字体 audio AudioCaptcha(voicedir/path/to/voices) image ImageCaptcha(…

StylizedGS: Controllable Stylization for 3D Gaussian Splatting

StylizedGS: Controllable Stylization for 3D Gaussian Splatting StylizedGS:3D高斯溅射的可控样式化 Dingxi Zhang, Zhuoxun Chen, Yu-Jie Yuan, Fang-Lue Zhang, Zhenliang He, Shiguang Shan, and Lin Gao1 张定西,陈卓勋,袁玉洁&#x…

vue3.4 新特性 defineModel() 宏

v-model 简介 官网是这样解释 v-model 的 v-model 的功能是&#xff0c;实现数据的双向绑定【本质上是 :value 和 input 语法糖】 如果是表单元素&#xff0c;下面两种写法是一样&#xff0c;这时v-model就是语法糖&#xff0c;帮你简化了操作 <input v-model"messag…

【MySQL】锁篇

SueWakeup 个人主页&#xff1a;SueWakeup 系列专栏&#xff1a;学习技术栈 个性签名&#xff1a;保留赤子之心也许是种幸运吧 本文封面由 凯楠&#x1f4f8;友情提供 目录 本系列专栏 1. MySQ 中的锁 2. 表锁和行锁 表锁 行锁 3. InnoDB 存储引擎的三种行级锁 4. 悲观锁…

文心一言 VS 讯飞星火 VS chatgpt (234)-- 算法导论17.2 2题

二、用核算法重做练习17.1-3。练习17.1-3的内容是&#xff1a;假定我们对一个数据结构执行一个由 n 个操作组成的操作序列&#xff0c;当 i 严格为 2 的幂时第 i 个操作的代价为 i &#xff0c;否则代价为1。使用聚合分析确定每个操作的摊还代价。 文心一言&#xff1a; 练习…

【树莓派初始化】教你从0开始搭建树莓派的使用环境

文章目录 前言1.什么是树莓派&#xff1f;1.1什么用户适合购买树莓派学习编程&#xff1f; 2.如何初始化一个树莓派2.1 烧录系统2.2 测试开机2.3 设置树莓派显示输出的分辨率2.4 网络链接2.5 Putty链接树莓派2.6 VNC链接树莓派2.7 使用filezilla软件传输文件到树莓派 3.使用Xsh…

实现创建线程的五种写法

创建线程的五种写法 1、通过继承Thread类并实现run方法创建一个线程package 创建线程;2、通过实现Runnable接口&#xff0c;并实现run方法的方法创建一个线程3、通过Thread匿名内部类创建一个线程4、通过Runnable匿名内部类创建一个线程5、通过Lambda表达式的方式创建一个线程 …

【OpenVINO™】使用 OpenVINO™ C# API 部署 YOLOv9 目标检测和实例分割模型(上篇)

YOLOv9模型是YOLO系列实时目标检测算法中的最新版本&#xff0c;代表着该系列在准确性、速度和效率方面的又一次重大飞跃。它通过引入先进的深度学习技术和创新的架构设计&#xff0c;如通用ELAN&#xff08;GELAN&#xff09;和可编程梯度信息&#xff08;PGI&#xff09;&…

AWS游戏全球智能翻译,助力企业出海

随着全球数字化时代的到来&#xff0c;游戏行业已经成为跨越国界、语言和文化的强大力量。然而&#xff0c;要将游戏产品成功推向全球市场并确保用户体验的流畅与愉悦&#xff0c;语言障碍却是一道不可忽视的挑战。在这个多元化的世界中&#xff0c;如何解决语言障碍&#xff0…

graylog使用Sidecars方式收集springboot程序的日志

1、部署graylog后台服务 使用docker-compose启动三个服务程序&#xff0c;包括graylog、mongodb、opensearch。 docker-compose.yml内容如下 version: 3 services: # MongoDB: https://hub.docker.com/_/mongo/ mongodb: image: mongo:6.0.14 privileged: true …

PS入门|如何让模糊的图片变得清晰?

前言 前段时间的PS入门讲的都是如何抠图、抠图、抠图。小白都快抠出三室一厅了&#xff0c;不知道学习的小伙伴如何了。 如果在学习过程中没有练习的照片&#xff0c;那直接使用每一篇文章的照片即可&#xff0c;学PS最忌讳的就是光看不练&#xff0c;眼睛会了&#xff0c;手…

Erlang中常用数据结构原理及其实现

文章目录 一、Erlang 简介二、数据结构2.1、元组&#xff08;Tuple&#xff09;2.1.1、示例&#xff1a;2.1.2、实现&#xff1a; 2.2、列表&#xff08;List&#xff09;2.2.1、示例2.2.2、实现2.2.3、原理 3. 字典&#xff08;Dictionary&#xff09;3.1、创建字典3.2、添加和…

FPGA基于VCU的H265视频压缩,HDMI2.0输入,支持4K60帧,提供工程源码+开发板+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的视频图像编解码方案 3、详细设计方案设计框图FPGA开发板视频输入Video PHY ControllerHDMI 1.4/2.0 Receiver SubsystemVideo Processing SubsystemVideo Frame Buffer WriteZynq UltraScale VCUPetaLinux 系统制作VLC播放器工…

Collection与数据结构 二叉树(二):二叉树精选OJ面试题(上)

1. 判断是否为相同的二叉树 OJ链接 public boolean isSameTree(Node p, Node q) {if (p null && q ! null || p ! null && q null){//结构不同return false;}if (p null && q null){//结构相同,都是空树return true;}if (p.value ! q.value){//…

vector及cv::Mat删除指定元素并不改变位置

1、vector删除指定元素且不改变原有的顺序 使用erase方法&#xff0c;测试例子如下所示&#xff1a; //测试用例 struct MyStruct {int a;int b; }; std::vector<MyStruct> spotInfo; spotInfo.push_back({ 1,2 }); spotInfo.push_back({ 3,4 }); spotInfo.push_back({…