【JavaEE】初识网络
网络初识
文章目录
- 网络初识
- 网络发展史
- 独立模式
- 网络互连
- 局域网LAN
- 广域网
- 网络通信基础
- IP地址
- 端口号
- 格式
- 协议
- 五元组
- 协议分层
- OSI七层模型
- TCP/IP五(四)层协议
- 1.物理层
- 2.数据链路层
- 3.网络层
- 4.传输层
- 5.应用程序
- 网络设备所在的分层
- 封装和分用
- 例子
- 发送方
- 接收方
网络发展史
单机时代 -> 局域网时代 -> 广域网时代 -> 移动互联网时代
独立模式
计算机之间相互独立
网络互连
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同工作来完成业务,就有了网络互连。
网络互连:将多台计算机连接在一起,完成数据共享。
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。
根据网络互连的规模不同,可以划分为局域网和广域网。
局域网LAN
把几个电脑,通过路由器连接到一起
局域网,即 Local Area Network
,简称LAN
。
Local
即标识了局域网是本地,局部组建的一种私有网络。
局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。
以下是局域网组建网络的几种方式:
-
基于网线直连
-
基于集线器或交换机组建
-
基于交换机和路由器构建
广域网
把更多的局域网连接到一起,所构成的网络更加庞大,可能已经覆盖一个城市/一个国家/全世界
广域网,即 Wide Area Network
,简称WAN
。
通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。
但是有一个点:局域和广域之间是没有明确的界限的!
网络通信基础
IP地址
描述了一个设备,在网络上的地址
举例子:
生活中:江苏省 盐城市 建湖县境内 蔡徐村
计算机中:使用一个32位,4字节数字,表示地址,一啊不能来说,会把IP地址给表示成4个0-255之间的十进制数字,并且使用3个点进行分隔,点分十进制
特殊IP
127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1
本机环回主要用于本机到本机的网络通信(系统内部为了性能,不会走网络的方式传输),对于开发网络通信的程序(即网络编程)
端口号
区分一个主机上不同的应用程序的
端口号也是一个整数(2个字节,相对比较小的数字)
不同的程序,就可以关联/绑定到不同的端口号
要求同一个主机上的应用程序,不能关联到同一个端口号、
(一个端口号只能被一个程序绑定,但是一个程序可以绑定多个端口号)
格式
端口号是2字节:0->65535
0 :一般不是使用
1-1023 : 这个范围的端口号,系统留作特殊用途,我们写的程序不要去占用
知名端口号:
22 :ssh
80 :http
443 :https
23 : telnet
在实际的通信过程中,IP和端口往往是一对
举个例子:
我们买东西
收件人地址,收件人电话
发件人地址,发件人电话
好比西游记中的唐僧
贫僧自东土大唐而来,前往西方拜佛求经
贫僧:源端口
东土大唐:源IP
西方:目的IP
佛:目的端口
协议
协议就是一种约定,约定了通信双方按照啥样的方式来传递数据~
网络上,本质就是通过光/电信号佬传输数据的
比如说:低电平(电压)表示1,高电平表示0,高频光信号表示1,低频光信号表示0
举个例子
就好比你去相亲,你们约好了在xx酒店相遇,然而呢别的相亲对象也约定好在xx酒店,那待会你就会可能发生认错人的情况(你懂的,反正我不懂🥵🥵🥵)
那么此时就有一个简单的方法,你们可以约定见面的时候带个绿帽子或者戴个项圈🫣🫣🫣(正经的哈别乱想)
通过这样的操作,就像相当于是一种协议~
协议,就是单纯的约定,并不一定会遇到很复杂的。
由于在网络通信的世界中,遇到的场景/问题往往比较棘手,的确是有一些网络协议是非常复杂的~
五元组
在TCP/IP协议中,用五元组来标识一个网络通信:
-
源IP:标识源主机
-
源端口号:标识源主机中该次通信发送数据的进程
-
目的IP:标识目的主机
-
目的端口号:标识目的主机中该次通信接收数据的进程
-
协议号:标识发送进程和接收进程双方约定的数据格式
五元组在网络通信中的作用,类似于发送快递:
同时我们也可以在cmd
中输入netstat -ano
来查看网络数据传输中五元组的信息:
协议分层
我们平时写代码,若代码越写越多,越写越复杂,那么我们往往需要将代码拆分成多个部分~
网络通信的场景,可能会比较复杂
有很多的问题需要通过协议来进行解决,
如果搞一个大的协议来解决所有问题,此时这个协议就会非常庞大.非常复杂,就不利于人们去学习和理解,
相比之下,也可以把大的协议,拆分成多个小的协议.让每个小的协议只专注于做一小块事情~~
使每个小的协议,都不会太复杂.(化繁为简)由于网络通信实在太复杂,拆分就拆出来太多的小的协议.这么多小的协议也就不好管理了.
此时就需要对协议进行分层了.
并且约定了不同层次之间的"调用关系
“上层协议,调用下层协议”"下层协议给上层协议提供支持
这样的话,这么多协议就不容易混乱~~
这里我们用一个例子来理解
协议分层的好处就是;
-
协议分层之后,上层和下层彼此之间就进行了封装
使用上层协议,不必过多关注下层;
使用下层协议,也不必过多关注上层这也就大大降低了使用者的成本~
-
每一层协议都可以根据需要灵活替换
协议分层之后,好处多多.因此现在网络世界都是这种分层的结构。
OSI七层模型
这种一般就出现在教科书中~
OSI:即Open System Interconnection
,开放系统互连
-
OSI 七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了7层。
-
OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
-
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
越往下,越进阶硬件~
重点还是关注TCP/IP协议
TCP/IP五(四)层协议
1.物理层
描述的是网络通信的硬件设备.
好比基础设施.公路,铁路,
比如使用的网线,光纤都应该是啥规格~
2.数据链路层
两个相邻节点之间的数据传输情况
3.网络层
进行路径规划
4.传输层
关注起点和终点
5.应用程序
如何使用数据(也是我们最需要关注的一点)
物理层我们考虑的比较少。因此很多时候也可以称为 TCP/IP四层模型
网络设备所在的分层
-
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的下四层;
-
对于一台路由器,它实现了从网络层到物理层,也即是TCP/IP五层模型的下三层;
-
对于一台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层;
交换机的作用就是针对路由器端口进行拓展,路由器上的端口可能是有限、不够
-
对于集线器,它只实现了物理层;
实际上,现在的路由器和交换机功能都越来越强大了.(甚至说一些高端的交换机,也有路由功能)
另一方面,路由器交换机可能还会支持一些更复杂的操作.甚至可能会工作在传输层或者应用层
以下为跨网段的主机的文件传输:数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器:
封装和分用
不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。
首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理
描述了网络通信中,基本的数据传输过程
例子
A通过qq将hello发给B
发送方
-
应用层:QQ应用程序.QQ就会把用户输入的"hello",给打包成一个应用层的数据报(这个数据报的格式,得是qq的程序员才能知道)
就可以将应用层数据报,通过操作系统的API,将数据交给传输层
-
传输层
就要对列才的应用层数据,再进行打包,变成传输层的数据报~~
这里的打包过程,本质上还是"字符串拼接"
把刚才的应用层数据,基础上拼接上传输层的报头传输层典型的协议TCR/UDP
传输层将数据报搞好了之后,这个数据就会进一步交给网络层
-
网络层
网络层的数据打包好了之后,继续将数据交给“数据链路层”再来进一步打包
-
数据链路层
把这个数据给物理层
-
物理层
把上述数据,转换成2进制的01序列
通过光信号/电信号进行传输数据发送出去之后,就会经过一系列的交换机和路由器进行转发
A和B一般来说不是直接网线连接的.中间还要经过很多的交换机/路由器设备进行转发从上层协议到下层协议,层层给数据报添加报头
这个过程称为"封装"
注意区分,此处的封装不是面向对象的封装了,
作用有点像~当数据到达B这边之后,B就要针对上述数据进行"分用”(针对上述数据报进行层层的解析)
接收方
-
物理层
拿到的光电信号=>转换成二进制数据=>得到以太网数据报
这个数据要交给数据链路层对应的议处理 -
数据链路层
-
网络层
-
传输层
-
应用层
将上述的数据根据端口号交给QQ这个程序
另外,数据报在网络中还会经历一定的转发过程
如果经过路由器:就会封装分用到网络层
路由器解析到网络层,拿到P地址,决定进一步如何传输
下一步传输的时候,又会重新经过网络层,数据链路层和物理层的封装
如果经过交换机:就会封装分用到数据链路层
那么本篇文章就此结束咯,简单介绍一下网络传输的基本流程
接下来关于网络编程的干货满满,敬请期待~
相关文章:
【JavaEE】初识网络
网络初识 文章目录 网络初识网络发展史独立模式网络互连局域网LAN广域网 网络通信基础IP地址端口号格式 协议五元组协议分层OSI七层模型TCP/IP五(四)层协议1.物理层2.数据链路层3.网络层4.传输层5.应用程序 网络设备所在的分层封装和分用例子发送方接收方…...
UGUI交互组件ScrollBar
一.ScrollBar的结构 对象说明Scrollbar挂有Image和Scrollbar组件的主体对象Sliding Area表示滑动范围Handle滑块 二.Scrollbar的属性 属性说明Handle Rect控制柄对象的引用Direction拖动控制柄时滚动条值增加的方向Value滚动条的当前值,范围为 0.0 到 1.0Suze控制柄…...
DamiBus v0.51 发布
DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。 支持事务传…...
[OpenJDK:环境变量配置]:填充Profile并修改默认配置
文章目录 一:背景:安装hadoop启动提示未找到JAVA_HOME1.1:配置Hadoop的Java环境变量 二:排查-定位解决2.1:查看环境变量配置发现没有JAVA_HOME2.1.1:解决:查看java安装目录2.1.2:再次…...
连接mysql报错 :Host ‘xxx.xx.x.x‘ is not allowed to connect to this MySQL server
排查思路 命令行连接mysql 我是安装在本地docker容器中的,可以使用一下命令直接连接 docker exec -it mysqldb mysql -u root -p其中mysqldb是我的mysql容器名字,后面跟随mysql的连接命令,然后输入密码即可。 如果没有设置过密码,…...
Qt 布局(QSplitter 类QDockWidget 类) 总结
一、QSplitter 类(窗口分割) QSplitter类是一个Qt框架提供的基础窗口控件类,用于分割窗口,使得用户可以通过拖动分隔条来调节子窗口的大小。QSplitter在用户界面设计中非常常见,经常用于划分窗口区域,使得程序可以同时显示多个子…...
git-ssh-key协议同步文件
生成秘钥 ssh-keygen -t rsa ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/Beza/.ssh/id_rsa): /c/Users/Beza/.ssh/id_rsa already exists. Overwrite (y/n)? y Enter passphrase (empty for no passphrase): …...
2018-2019 ACM-ICPC, Asia Nanjing Regional Contest G. Pyramid(组合数学 计数)
题目 t(t<1e6)组样例,每次给定一个n(n<1e9),统计边长为n的上述三角形的等边三角形个数 其中等边三角形的三个顶点,可以在所有黑色三角形&白色三角形的顶点中任取, 答案对1e97取模 思路来源 申老师 & oeis A0003…...
C++学习——string 详解(即C++字符串详解)
以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 一、定义string变量的方法 C增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的 string 类。 string是类,而不是基本数据类型。虽…...
LeetCode 1 两数之和
题目描述 链接:https://leetcode.cn/problems/two-sum/?envTypefeatured-list&envId2ckc81c?envTypefeatured-list&envId2ckc81c 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 targ…...
【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程
【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【opencv】windows10下opencv4.8.0-cuda Python版本源码编译教程前言准备工具anaconda/cuda/cudnnanaconda创建环境(选做)安装原…...
【1day】用友U8Cloud未授权访问漏洞学习
注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...
基于单片机智能汽车仪表设计系统
基于单片机的汽车智能仪表的设计 摘要:汽车的汽车系统。速度测量以及调速是我们这次的设计所要研究的对象,本次设计的基础核心的模块就是单片机,其应用的核心的控制单元就是stc89c52单片机,用到的测速模块是霍尔传感器,…...
java double 保留两位小数
在Java中,你可以使用 DecimalFormat 或 String.format 来保留 double 类型的数字两位小数。以下是两个例子: 使用 DecimalFormat import java.text.DecimalFormat;public class Main {public static void main(String[] args) {double number 123.456…...
计网第六章(应用层)(三)(文件传输协议FTP)
一、基本概念 将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中即文件传送。 FTP就是因特网上使用得最广泛的文件传送协议。采用客户/服务器方式。 FTP提供交互式的访问,允许客户指明文件的类型和格式(如指明是否使用ASCII码…...
微信小程序canvas画布绘制base64图片并保存图片到相册中
WXML部分: <view class"img_" style"width: 100%;"><canvas type"2d" id"canvasId" style"width: 100%;height: 100%" ></canvas> <button style"margin: auto;width: 70%;marg…...
Hadoop3教程(八):MapReduce中的序列化概述
文章目录 (79)MR序列化概述(80)自定义序列化步骤(81)序列化案例需求分析(82)序列化案例代码参考文献 (79)MR序列化概述 什么是序列化,什么是反序…...
Flash-Attention
这是一篇硬核的优化Transformer的工作。众所周知,Transformer模型的计算量和储存复杂度是 O ( N 2 ) O(N^2) O(N2) 。尽管先前有了大量的优化工作,比如LongFormer、Sparse Transformer、Reformer等等,一定程度上减轻了Transformer的资源消耗…...
发布npm包质量分测试
查询质量分接口 https://registry.npmjs.org/-/v1/search?textcanvas-plus v0.0.1 quality 0.2987 新建文件夹 canvas-plus 执行命令 npm init 生成package.json {"name": "3r/canvas-plus","version": "0.0.1","descript…...
基于适应度相关优化的BP神经网络(分类应用) - 附代码
基于适应度相关优化的BP神经网络(分类应用) - 附代码 文章目录 基于适应度相关优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.适应度相关优化BP神经网络3.1 BP神经网络参数设置3.2 适应度相关算法应用 4…...
复杂网络 | 利用复杂网络预测城市空间流量
文章目录 效果一览文章概述导入必要的包读取时间序列数据,并使用日期做索引将时间序列进行可视化展示取一年的数据进行分析将数据分布进行可视化展示画移动平均图n 代表滑动窗口的大小向前差分法去趋势化线性回归方法去趋势化拟合模型的线性趋势将拟合得到趋势进行可视化detren…...
【1】c++11新特性(稳定性和兼容性)—>原始字面量
在C11中添加了定义原始字符串的字面量,定义方式为:R “xxx(原始字符串)xxx”其中()两边的字符串可以省略。原始字面量R可以直接表示字符串的实际含义,而不需要额外对字符串做转义或连接等操作。 编程过程中,…...
学习pytorch13 神经网络-搭建小实战Sequential的使用
神经网络-搭建小实战&Sequential的使用 官网模型结构根据模型结构和数据的输入shape,计算用在模型中的超参数coderunning log网络结构可视化 B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/generated/torch.nn.Sequential.html#torch.nn.Se…...
TCP发送接口(如send(),write()等)的返回值与成功发送到接收端的数据量无直接关系
1. TCP发送接口:send() TCP发送数据的接口有send,write,sendmsg。在系统内核中这些函数有一个统一的入口,即sock_sendmsg()。由于TCP是可靠传输,所以对TCP的发送接口很容易产生误解,比如sn send(...); 错误…...
【Python、Qt】使用QItemDelegate实现单元格的富文本显示+复选框功能
主打一个 折磨 坑多 陪伴。代码为Python,C的就自己逐条语句慢慢改吧。 Python代码: import sys from types import MethodType from PyQt5.QtCore import Qt,QPoint,QSize,QRect,QEvent from PyQt5.QtGui import QStandardItemModel, QStandardItem,QTe…...
【JVM】JVM类加载机制
JVM类加载机制 加载双亲委派模型 验证准备解析初始化 JVM的类加载机制,就是把类,从硬盘加载到内存中 Java程序,最开始是一个Java文件,编译成.class文件,运行Java程序,JVM就会读取.class文件,把文件的内容,放到内存中,并且构造成.class类对象 加载 这里的加载是整个类加载的一…...
【面试经典150 | 区间】汇总区间
文章目录 Tag题目来源题目解读解题思路方法一:一次遍历复杂度分析 其他语言python3C 写在最后 Tag 【一次遍历】【数组】【字符串】 题目来源 228. 汇总区间 题目解读 给定一个无重复的升序数组 nums,需要将这个数组按照以下规则进行汇总࿱…...
主流接口测试框架对比
公司计划系统的开展接口自动化测试,需要我这边调研一下主流的接口测试框架给后端测试(主要测试接口)的同事介绍一下每个框架的特定和使用方式。后端同事根据他们接口的特点提出一下需求,看哪个框架更适合我们。 需求 1、接口编写…...
LeetCode 150.逆波兰表达式求值
题目链接 力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 题目解析 首先我们需要知道什么是逆波兰表达式,像我们平常遇到的都是中缀表达式,然而逆波兰确实后缀表达式,因此这个题目隐含的意思就是将一个后缀表达式转…...
华为---企业WLAN组网基本配置示例---AC+AP组网
ACAP组网所需的物理条件 1、无线AP---收发无线信号; 2、无线控制器(AC)---用来控制管理多个AP; 3、PoE交换机---能给AP实现网络连接和供电的交换机; 4、授权:默认AC管理的AP数量有限,买授权才能管控更多AP。 WLAN创建…...
html css网站模板/微信管理软件哪个最好
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言有限状态机FSM的概念一、步骤1:思考清楚系统所有的状态和转移条件,画出状态转移图示例(fast_planning)二、设计有限状态机FSM的枚举状态与变量…...
网站手机端做app开发工具/写软文怎么接单子
1. SSR 的应用场景 SPA 页面内容是在浏览器中(客户)渲染,搜索引擎不友好互联网(公众,天猫,京东,静态化 --- SSR )企业应用(内网,没有 SEO 需求࿰…...
做拍福利爱福利视频网站/b2b免费发布网站大全
码小渣们,不学习是不行了。让我们不断挑战代码,让自己从渣变成块。有好多天没写博客了,今天来和一些码小渣小伙伴分享两个控件 “DatePicker” , "TimePicker"不拿起我久违的书本我可能都忘了这两个控件,对于很多小伙…...
鄱阳有做百度网站的/如何宣传自己的网站
vmstat 命令报告关于内核线程、虚拟内存、磁盘、陷阱和 CPU 活动的统计信息。由 vmstat 命令生成的报告可以用于平衡系统负载活动。系统范围内的这些统计信息(所有的处理器中)都计算出以百分比表示的平均值,或者计算其总和。遇到个问题。机器在晚上的运行情况需要监…...
wordpress 文章分页省略号/seo快速排名培训
UML几种图的绘制 UML是Unified Modeling Language(统一建模语言)的简称。UML是对软件密集型系统中的制品(软件开发过程中产生的各种各样的产物,如模型、源代码、测试用例等)进行可视化、详述、构造和文档化的语言。 UM…...
网站设计的国际专业流程/网络推广怎么做效果好
NFS 《network file system》------>网络文件系统释义:NFS是FressBSD所支持的文件系统的其中一种,,它的主要作用就是实现linux与linux,linux与 unix之间的共享问题。使用户可以进行一些远程的访问操作。特点:1.本地…...