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.mzph.cn/news/107903.shtml

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

相关文章

不写注释就是耍流氓?

不写注释就是耍流氓? 关于写代码不写注释这么说“我”不想写注释的原因如何才能写出漂亮的注释 关于写代码不写注释这么说 关于代码注释的争论一直存在,程序员社区中有不同的观点和实践。写代码时是否应该写注释是一个有深度的话题,我认为需…

word如何设置页码?教你快速提升文档颜值!

在创建文档时,为了更好地组织内容,页码是一个必不可少的元素。但是很多人不知道word如何设置页码,其实word提供了多种设置页码的方法,以满足不同文档的需求。本文将详细介绍3种设置页码的方法,无论您是初学者还是有经验…

LMI FocalSpec 3D线共焦传感器 使用笔记1

一.硬件介绍 以上特别注意: 屏蔽线必须接地,因为在现场实际调试中,使用软件调试发现经常 弹窗 传感器丢失警告!! 以上 Position LED 的灯被钣金挡住,无法查看异常现象,能否将指示灯设置在软件界面上? 需要确认是软触发还是硬触发,理论上 硬触发比软触发速度要快.(我们目前使用…

LinkedList集合

LinkedList集合 底层数据结构是双链表,查询慢,增删快,但如果操做的是首元素,速度也是极快的 本身多了很多直接操做首尾元素的特有API 这些特有方法不常用,了解即可 LinkedList源码分析 迭代器的源码分析 iterator():生成一个迭代器对象,默认指向集合的0索引处hasNext():判…

javascript利用xhr对象实现http流的comet轮循,主要是利用readyState等于3的特点

//此文件 为前端获取http流 <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml" lang"UTF-8"></html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"/&g…

sqlserver系统存储过程添加用户学习

sqlserver有一个系统存储过程sp_adduser&#xff1b;从名字看是添加用户的&#xff1b;操作一下&#xff0c; 从错误提示看还需要先添加一个登录名&#xff0c;再执行一个系统过程sp_addlogin看一下&#xff0c; 执行完之后看一下&#xff0c;安全性-登录名下面有了rabbit&…

【Linux】屏蔽项目服务非正常日志输出到message文件中

屏蔽项目服务非正常日志输出到message文件中 # vi /etc/rsyslog.conf ### ....省略n行 :programname, isequal, "进程名" stop *.info;mail.none;authpriv.none;cron.none /var/log/messages### 或者 if $programname 进程名 then stop *.info;mail…

表结构的增删改(约束)、表数据的增删改、truncate总结归纳 | sql笔记自查用

和表的定义相关的语言 DDL&#xff1a;create、drop、alter 建表&#xff1a; create table tbl_student(stu_id int,stu_name varchar(32) );-- 查询结果放入新表 create table tbl_student_backup as select * from tbl_student;删表&#xff1a; drop table tbl_student;…

【JavaEE】初识网络

网络初识 文章目录 网络初识网络发展史独立模式网络互连局域网LAN广域网 网络通信基础IP地址端口号格式 协议五元组协议分层OSI七层模型TCP/IP五&#xff08;四&#xff09;层协议1.物理层2.数据链路层3.网络层4.传输层5.应用程序 网络设备所在的分层封装和分用例子发送方接收方…

ERP系统供应商协同:优化企业供应链管理

一、ERP系统供应商协同的概念和功能 供应商协同是指在供应链中&#xff0c;企业与供应商之间通过ERP系统进行紧密合作和信息共享&#xff0c;实现供应链各个环节的协调和优化。ERP系统供应商协同功能涉及以下方面&#xff1a; 1. 供应商管理&#xff1a;ERP系统提供完善的供应…

el-table添加fixed属性后底部滚动条添加小手

0 效果 1 样式 /deep/ .el-table--scrollable-x {cursor: pointer; } /deep/ .el-table__empty-block {cursor: auto; } /deep/ .el-table__row {cursor: auto; }

Docker 安装Redis

一、下载redis 镜像 docker pull redis 二、创建数据卷映射路径、配置redis.conf mkdir -p /usr/local/myredis/confvim redis.conf # redis.conf appendonly yes 配置内容可以参考 https://github.com/redis/redis/blob/unstable/redis.conf 启用内存过渡分配 #修改配置 vim…

深入剖析 深度学习中 __init()__函数和forward()函数

目录 前言1. __init()__函数2. forward()函数3. 两者关系 前言 再看代码时&#xff0c;发现init函数和forward函数都有参数&#xff0c;具体是怎么传参的呢&#xff1f; 为了更方便的讲解&#xff0c;会举简单的代码例子结合讲解。 forward() 和 __init__() 是神经网络模型类…

开源/免费的scrum工具:敏捷项目管理的选择

有许多开源和免费的敏捷管理工具可供敏捷团队使用&#xff0c;以支持他们的敏捷项目管理和开发需求。以下是一些常见的开源/免费敏捷管理工具&#xff1a; 免费敏捷工具 以下是一些免费的敏捷工具&#xff0c;这些工具提供了一定的功能&#xff0c;可用于支持敏捷项目管理和开…

13-k8s-ingress网络

文章目录 一、ingress介绍二、创建nginx和tomcat供测试三、创建ingress-http四、yaml方式安装ingress五、helm方式安装ingress&#xff08;推荐&#xff09;六、Ingress的HTTPS代理 一、ingress介绍 Service对集群之外暴露服务的主要方式有两种&#xff1a;NotePort和LoadBalan…

VulnHub Alice

一、信息收集 发现开发了22、80 2.访问ip&#xff0c;右击查看源代码 发现需要利用X-Forwarded-For 火狐插件&#xff1a;X-Forwarded-For Header 挂上代理后&#xff1a; 出现以下页面&#xff1a; 先注册一个账户&#xff0c;然后再登录 发现有参数进行传参 发现传参&a…

从Flink的Kafka消费者看算子联合列表状态的使用

背景 算子的联合列表状态是平时使用的比较少的一种状态&#xff0c;本文通过kafka的消费者实现来看一下怎么使用算子列表联合状态 算子联合列表状态 首先我们看一下算子联合列表状态的在进行故障恢复或者从某个保存点进行扩缩容启动应用时状态的恢复情况 算子联合列表状态主…

用建筑中智能消防应急照明系统的应用

【摘要】&#xff1a;火灾应急照明是火灾安全疏散、保障消防人员生命安全的关键。对电气设计人员来说&#xff0c;火灾紧急照明系统的设计非常必要&#xff0c;消防紧急照明系统启动与其正常工作状态有直接的关系&#xff0c;但由于其存在的问题通常不能被及时发现&#xff0c;…

ubuntu 22.04版本修改服务器名、ip,dns信息的操作方法

总结 1、ubuntu修改服务器名重启后生效的方法是直接修改/etc/hostname文件 2、ubuntu 22.04操作系统配置ip和dns信息&#xff0c;一般只需要使用netplan命令行工具来配置就行&#xff0c;在/etc/netplan/在目录下创建一个yaml文件就可以实现ip和dns的配置&#xff0c;当然如果…

C#,数值计算——分类与推理Gaumixmod的计算方法与源程序

1 文本格式 using System; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Gaumixmod { private int nn { get; set; } private int kk { get; set; } private int mm { get; set; } private double…