JAVAEE初阶相关内容第十四弹--网络初识

写在前:

这一部分开启网络部分的相关知识,这一弹内容初始网络将主要进行网络相关知识的简单介绍,以及着重介绍协议、协议分层、OSI七层模型、TCP/IP五层模型、封装和分用。

需要认识协议,并知道协议的效果是什么;知道为什么分层,分层的好处?每一层都是干什么的?以及层与层之间是如何进行配合工作的。

目录

写在前:

1.网络发展史

1.1独立模式

1.2网络互连

1.3局域网LAN

1.3.1局域网组建网络的方式:

(1)基于网线直连

(2)基于集线器组建

(3)基于交换机组建

(4)基于交换机和路由器组建

1.3.2知识拓展--光纤

1.4广域网WAN

2.网络通信基础

2.1IP地址

2.1.1概念 

2.1.2格式

2.1.3特殊IP

2.2端口号

2.2.1概念

2.2.2格式

2.2.3注意事项

2.2.4了解内容

2.3认识协议

2.3.1概念

2.3.2五元组

(1)源IP

(2)源端口号

(3)目的IP

(4)目的端口号

(5)协议号

2.3.3协议分层

(1)协议分层的好处

(2)OSI七层模型

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

2.4封装和分用

2.5内容拓展

(1)数据包

(2)数据包的组成

(3)载荷

(4)载荷的传输过程


1.网络发展史

网络在国外起步比较早,在国内是2000年左右开始起步的。2000年左右,网络开始兴起,越来越多联网游戏出现,这里就有局域网联网、广域网联网。【局域和广域没有一个明确的界限】

2007年,乔布斯发布苹果一代,智能手机登上历史舞台,标志着网络时代,开始往“移动互联网进军”。2008年安卓登场。2011年安卓崛起,2014年左右,移动互联网发展最迅速的一年,资本的风口疯狂涌入这个赛道,掀起全民创业的高潮。

1.1独立模式

计算机之前是相互独立的,每个终端各自持有客户数据。

1.2网络互连

将多台计算机连接在一起,完成数据共享。

数据共享的本质是网络数据传输,即计算机之间通过网络来传输数据,也称网络通信

1.3局域网LAN

局域网(Local Area NetWork),简称LAN。Local即标识了局域网是本地,局部组建的一种私有网络。

局域网内的主机之间能方便进行通信,又称内网;局域网和局域网之间在没有连接的情况下是不能进行通信的。

1.3.1局域网组建网络的方式:

(1)基于网线直连
(2)基于集线器组建

比较古老的东西,现在比较少见(一根网线岔出来两根)

(3)基于交换机组建

组建局域网,不能跨局域网。【交换机有家用的也有企业用的】

(4)基于交换机和路由器组建

WiFi的本质就是一个无线路由器,路由器的本质上就是把两个局域网给连起来。

现在带有路由功能(三层转发)交换机也是很多很常见的,交换机哥路由器之间的界限越来越模糊。

1.3.2知识拓展--光纤

传输信号的介质。

网络通信信号传递:

电信号(网线)、光信号(光纤-玻璃丝、电磁波)

对于电信号,可以使用低电平表示1,高电平表示0;

对于光信号,可以使用高频光表示1,低频光表示0;

1.4广域网WAN

广域网Wide Area NetWork 简称WAN

通过路由器,将多个局域网连起来,在物理上组成很大范围的网络,就形成广域网,广域网内部的局域网都属于其子网。

2.网络通信基础

网络互联的目的是进行网络通信,也即是网络数据传输,更具体一点,是网络主机之间的不同进程间基于网络传输数据。

2.1IP地址

2.1.1概念 

IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单的说,IP地址用于定位主机的网络地址。类似于我们发快递一样,需要知道对方的收货地址,快递员才能将包裹送到目的地。

2.1.2格式

32位二进制数 “点分十进制”。

2.1.3特殊IP

环回IP:用于本机环回(loop back)测试,通常是127.0.0.1

2.2端口号

标识一个具体的应用程序。

2.2.1概念

端口号可以标识主机中发送数据、接收数据的进程。简单说,端口号用于定位主机中的进程。

2.2.2格式

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

2.2.3注意事项

两个不同的进程,不能绑定同一个端口号,但是一个进程可以绑定多个端口号。

2.2.4了解内容

一个进程启动之后,系统会随机分配一个端口(启动端口)

程序代码中,进行网络编程时,需要绑定端口号(收发数据的端口)来发送、接收数据。

此时我们提出一个问题:有了IP和端口号后,可以定位到网络中唯一的一个进程,但是存在问题,网络是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样子的?

网络通信传输的数据类型也是很多种的,同一个数据类型,格式也可能不同,如何识别?

基于网络数据传输,需要使用协议来规定双方的数据格式。

2.3认识协议

2.3.1概念

协议,网络协议的简称,网络协议是网络通信(及网络数据传输)经过所有的网络设备都必须共同遵从的一组约定、规则。如何建立、怎么识别。只有遵循这个约定才能实现计算机之间的相互交流。

协议(protocol)

最终体现为在网络上传输的数据包格式。

2.3.2五元组

(1)源IP

标识源主机。

(2)源端口号

标识源主机中该次通信发送的数据进程。

(3)目的IP

标识目的主机。

(4)目的端口号

标识目的主机中该次通信接收的数据进程。

(5)协议号

标识发送进程和接收进程双方约定的数据格式。

2.3.3协议分层

网络通信是一个比较复杂的事情,需求场景复杂,实现的功能也复杂,如果这个协议复杂,学习成本、使用成本、理解成本、维护成本都非常高。因此,实际采用的做法,都是针对这个复杂的大协议,拆分成若干小的协议。每个协议负责一部分功能。此时就会发现,某些协议之间起到的功能和作用是类似的。就针对这些小的协议继续进行“分类”(分层),这就好比代码拆分为很多类,有些类功能差不多,就可以放到同一个包里。

(1)协议分层的好处

降低了学习和维护的成本(封装)。

灵活的针对这里的某一层协议进行替换。

当前互联网世界,协议分层有两种风格

(2)OSI七层模型

教科书上的,实际上是没有的

物理层 、数据链路层、网络层、传输层、会话层、表示层、应用层。

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

五层或四层是针对的包不包含物理层来说的。

是OSI简化的实现方式。

TCP/IP是一组协议的代名词,它还包括很多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫他的下一层所提供的网络来完成自己的需求。

TCP/IP五层协议
层级名称主要负责内容协议举例备注
应用层负责应用程序间沟通如简单的电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。网络编程主要针对的就是应用层。应用程序,用户怎样进行使用。应用程序(程序员自己写的代码)
传输层负责两台主机之间的数据传输如传输控制协议(TCP),能够确保数据可靠的从源主机发送到目的主机。类比于快递公司的送货,在网上买衣服需要填写收货人地址、姓名;卖家与买家均不需要关心快递传输的过程,只关心起点和终点。操作系统
网络层负责地址管理和路由选择例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的路线(路由)。路由器(Router)工作在网络层。

路径规划:走那条路划算。

例如快递从上海发往北京选择卡车运输,这时就需要考虑具体从哪条路走,这就是网络层的作用。

数据链路层负责设备之间的数据帧的传送和识别例如网卡设备的驱动、帧同步(就是说从网线上检测到有什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网、无线LAN等标准。交换机(Switch)工作在数据链路层。

相邻的两个节点之间具体进行怎么传输。例如将一个快递从上海运到哈尔滨。可以分为上海到北京再到哈尔滨。
第一段上海到北京选择卡车运输。

第二段北京到哈尔滨选择飞机运输。

这里运输方式的选择就是数据链路层的作用。

设备驱动程序与网络接口。(驱动程序和硬件设备关联,每个硬件的厂商会提供对应的驱动软件,操作系统内核通过驱动程序来控制硬件)
物理层负责光/电信号的传递方式现在的以太网通用的网线(双绞线)、早期以太网采用的同轴电缆(现在主要用于有线电视)、现在的WiFi,无线网使用的电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率,传输距离,抗干扰性。集线器(Hub)工作在物理层。

约定了网络通信中基础的硬件设备是啥,类比于现实生活中的修路。

通信使用的网线、网口设备都是相同规格的。

以上层级越往下越接近硬件设备,越往上越接近用户。上层协议调用下级协议,下层协议给上层协议提供服务。

2.4封装和分用

不同的协议对数据包有不同的称谓

不同协议层对数据包的不同称谓
传输层segment
网络层数据报datagram
数据链路层frame

应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。

首部信息中保护你一些类似于首部有多长,载荷(payload)有多长,上层协议时什么等信息。

数据封装成帧后发送到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

2.5内容拓展

(1)数据包

什么是数据包?数据包是计算机网络中传输的基本单位,它是由网络层和传输层协议定义的一组二进制数据。每个数据包都包含了发送方和接收方之间的信息,例如源地址、目标地址、控制信息以及载荷等。

(2)数据包的组成

一个标准的数据包通常由以下几个部分组成:

a.首部:首部是指在数据包最前面的一段二进制数据,它通常用于存储控制信息,例如源地址、目标地址以及其他与传输相关的参数。

b.载荷:载荷是指在数据包中实际要传输的信息,例如文本、图片、音频等等。

c.尾部:尾部是指在数据包最后面的一段二进制数据,它通常用于校验和错误检测等操作。

d.标志位:标志位用于标记当前数据包是否为最后一个分片或者是否需要特殊处理。

e.序号:序号用于保证接收方能够正确地按照顺序接收所有分片,并且不会重复接收。

f.确认号:确认号用于告诉发送方接收方已经成功接收了哪些分片,并且可以继续发送下一个分片。

g.时间戳:时间戳用于记录当前数据包被发送的时间,以便后续的分析和调试。

h.其他:除了以上几个部分之外,数据包还可能包含其他一些与传输相关的信息,例如优先级、负载均衡等等。

(3)载荷

载荷是指在一个通信协议中实际要传输的信息。在计算机网络中,载荷通常被封装在一个或多个数据包中,并通过网络进行传输。

(4)载荷的传输过程

当一个计算机向另一个计算机发送载荷时,它会将载荷封装在一个或多个数据包中,并将每个数据包按照一定的顺序发送出去。接收方则会按照相同的顺序接收所有分片,并在接收完所有分片之后将它们重新组合成原始载荷。

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

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

相关文章

RN(React Native)的应用程序在雷电模拟器可以运行,安卓真机运行失败问题解决记录

yarn react-native build-android打包的apk在真机安卓运行提示: Unable to load script . Make sure you re either running Metro ( run npx react - native start ) or that your bundle index . android . bundle is packaged correctly for release . jn…

微服务12-分布式服务理论基础+Seata的认识

文章目录 分布式服务理论基础前言微服务和分布式的区别CAP定理BASE理论 Seata流程:seata部署微服务集成seata 分布式服务理论基础 前言 单体架构: 1.项目过于臃肿,所有服务在一起,一个业务挂了,整个项目就不能用了&…

哪个牌子的电容笔好用?ipad触控笔推荐平价

有哪些电容笔适合学生党入手?苹果Pencil虽然与普通的电容笔,不同的是,这款电容笔同时具有重力传感器和倾斜传感器,而平替电容笔,只有一种倾斜传感器,但在书写方面的体验很不错,可以用来写字&…

【算法|前缀和系列No.4】leetcode238. 除自身以外数组的乘积

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【leetcode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

如何实现前端数据持久化(LocalStorage、IndexedDB等)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

MySQL InnoDB引擎深入学习的一天(InnoDB架构 + 事务底层原理 + MVCC)

目录 逻辑存储引擎 架构 概述 内存架构 Buffer Pool Change Buffe Adaptive Hash Index Log Buffer 磁盘结构 System Tablespace File-Per-Table Tablespaces General Tablespaces Undo Tablespaces Temporary Tablespaces Doublewrite Buffer Files Redo Log 后台线程 事务原…

Hadoop 配置 Kerberos 认证

1、安装 Kerberos 服务器和客户端 1.1 规划 服务端: bigdata3 客户端(Hadoop集群): bigdata0 bigdata1 bigdata2 192.168.50.7 bigdata0.example.com bigdata0 192.168.50.8 bigdata1.example.com bigdata1 192.168.50.9 b…

4.Python-用Python,Ajax实现MySQL数据库的新增数据

题记 用python,ajax实现mysql数据库的新增数据。以下是一个简单的实例和操作过程。 安装flask模块 pip install flask 安装mysql.connector模块 pip install mysql-connector-python 编写app.py文件 app.py文件如下: 块引用可能显示不完整&#x…

第15章 SpringBoot

所有的流程逻辑原理都是针对2.3.2.RELEASE版本 15.1 谈谈你对微服务架构演进的理解 难度:★ 重点:★ 白话解析 还是串主线,在串主线的过程中发现问题,解决问题。主线的入口:随着业务的逻辑越来越复杂,架构再不断升级演进,先理解架构的演进。 这道题参考了:企业IT架构转…

kantts docker化

kan-tts docker本地化 环境安装 下载docker镜像(python3.8的) registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.2 安装基础模型 pip install modelscope 安装语音模型 pip install "modelscope…

系列八、Redis的事务

一、是什么 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不允许加塞。 二、能干嘛 一个队列中,一次性、顺序性、排他性的执行一些列命令。 三、怎么玩…

git本地仓库及远端仓库推送【linux】

git本地仓库及远端仓库推送【linux】 一.git上创建仓库二.linux中git三板斧i.检查是否安装gitii.克隆仓库到本地iii.提交到本地仓库iiii.上传到远端仓库 三.其他内容补充git loggit status.gitignore 一.git上创建仓库 已经创建好的可以直接跳到第二步进入到创建仓库界面&…

SpringBoot + 自定义注解 + AOP 高级玩法打造通用开关

前言 最近在工作中迁移代码的时候发现了以前自己写的一个通用开关实现,发现挺不错,特地拿出来分享给大家。 为了有良好的演示效果,我特地重新建了一个项目,把核心代码提炼出来加上了更多注释说明,希望xdm喜欢。 案例 …

SQL注入漏洞

0x01 漏洞介绍 泛微e-office系统是标准、易用、快速部署上线的专业协同OA软件,国内协同OA办公领域领导品牌,致力于为企业用户提供专业OA办公系统、移动OA应用等协同OA整体解决方案。泛微e-office深谙改革之道以迎变革之机,沉心产品研发数十载…

电子笔记真的好用吗?手机上适合记录学习笔记的工具

提及笔记,不少人都会和学习挂钩,的确学习过程中我们经常会遇到很多难题,而经常记录笔记可以有效地帮助大家记住很多知识,而且时常拿出笔记查看一下,可方便巩固过去学习的知识。 手机作为大家日常随身携带的工具&#…

Matlab进阶绘图第31期—桑基图(Sankey Chart)

桑基图(Sankey Chart)本质为一种流程图,可以很好地展示数据的层次结构以及流量变化。 桑基图主要由节点块与流动路径线组成。 其中,节点块用于表示类别;流动路径线除了可以直观地表示流动的方向,其宽度还…

【EI会议征稿】第九届能源资源与环境工程研究进展国际学术会议(ICAESEE 2023)

第九届能源资源与环境工程研究进展国际学术会议(ICAESEE 2023) 2023 9th International Conference on Advances in Energy Resources and Environment Engineering 第九届能源资源与环境工程研究进展国际学术会议(ICAESEE 2023)…

补体C3/C4(C3/C4)介绍

补体是一种血清蛋白质,存在于人和脊椎动物血清及组织液中,不耐热,活化后具有酶活性、可介导免疫应答和炎症反应。可被抗原-抗体复合物或微生物所激活,导致病原微生物裂解或被吞噬。可通过三条既独立又交叉的途径被激活&#xff0c…

【MATLAB源码-第48期】基于matlab的16QAM信号盲解调仿真。

操作环境: MATLAB 2022a 1、算法描述 16QAM (16个象限幅度调制) 是一种广泛使用的数字调制技术。在无线和有线通信系统中,为了在固定的带宽内发送更多的信息,高阶调制如16QAM被使用。下面是16QAM盲解调的基本步骤、优缺点及应用场景。 16Q…

从零开始学习调用百度地图网页API:一、注册百度地图账号

目录 注册账号申请AK 注册账号 https://lbsyun.baidu.com/index.php?titlejspopular3.0/guide/getkey JavaScript API只支持浏览器类型的ak 申请AK 注:使用示例时,需要在百度地图示例加上https:,替换ak。