javaSE————网络原理

今天巨无聊,全是概念,重点记一下五元组,TCP/IP五层模型和OSI七层调用模型,大家这期就当看故事啦;

1,网络发展史

1)独立模式

我们刚开始使用计算机呢,客户端的数据不是共享的,如果有一个人想要办理业务,而这个业务所需的资源是在三台电脑上,那么这个人就需要在这三个电脑上不断的办理任务,而其他人想要办理业务,还需要等到前一个人办理完,效率非常低,那怎么办,我们就改进;

2)网络互联

接下来我们就使用网络进行计算机资源的共享,让多个计算机可以一起办理业务,达成数据共享,即网络通信,我们可以根据网络互联的规模分为局域网和广域网;

3)局域网LAN

局域网是本地,局部构建的一种私有网络,又被称为内网,局域网内的主机能够实现网络通信,局域网和局域网在没有连接的情况是不能进行通信的;

组件局域网等待方式也有很多种,可以通过网线直连,也可以通过交换机相连,还可以通过集线器相连,还可以通过路由器连接交换机在与多个主机相连;

4)广域网WAN

广域网就是多个局域网完成了连接,很多很多的局域网都能进行网络通信,我们其实可以把咱们中国的网络看成一个巨大的广域网,我们管内部叫做内网,外面的就是我们常说的外网,有很多人可能对此不满,但这也是保护我们的一种方式,起码我们活的挺快乐的;不说了,再说被封了,哈哈哈哈哈哈;


2,网络通信基础

1)IP地址

那么,广域网这么大,我们怎么能准确找到每个主机的所在呢,我们就使用IP地址来标识每个网络主机和网络设备的网络地址,我们可以通过CMD看自己主机的地址,输入这个命令ipconfig,就能看到了,那个IPv4地址就是我们的地址啦;

2)端口号

端口是啥玩意,我们有了地址,那么电脑发送或者我们接收了一个数据,难道我们只是通过地址就能知道吗,我们知道了地址,但不知道是哪个软件发送或者接收这个数据,比如发来一个QQ的数据报,那我们去给CSDN吗,不,我们应该是找到QQ的端口号,之后把这个数据给到QQ,让QQ来做相应的操作;

我们可以把网络通信可以看成送快递,我们把IP地址看作收货地址,把端口号看作收件人;

3)认识协议

我们现在能找到地址和端口号了,我们网络传输的是二进制的数据,那么我们传入一段二级制指令,对方是怎么知道我们传的是什么东西呢,之前说过,图片,音频和视频都是二进制的指令,我们到一个数据报,我们怎么知道这是啥文件呢,去使用什么编码方式呢,所以就需要大家都统一一下,我们就约定网络传输的格式,我们就管它叫协议;

协议的最终体现呢,就是网络传输数据报的格式;

4)五元组

在TCP/IP协议中,我们使用五元组来标识网络通信:

1,源IP:标识源主机

2,源端口号:标识源主机中该次通信发送的进程

3,目的IP:标识目的主机

4,目的端口号:标识源主机中该次通信接收的进程

5,协议号:标识发送进程和接收进程双方约定的格式

5)协议分层

啥事协议分层呢,我们的协议很多,很复杂,我们把它分为不同层次的协议,让每个协议尽可能有自己的功能,OSI七层模型和TCP/IP五层模型,都把每层划分了很多不同的功能;

OSI七层调用模型:

|----|-------|---------------------------------|---------------------------------|
| 层数 | 名称 | 功能 | 功能概览 |
| 7 | 应用层 | 针对特定应用的协议 | 比如我们发送邮件,就用电子邮件协议,实现登录,就要使用登录协议 |
| 6 | 表示层 | 数据固有格式和网络标准格式的转换 | 我们将接收的信息会根据网络标准格式转换为标准的信息 |
| 5 | 会话层 | 通讯管理,负责建立和断开通讯 | 何时建立连接,何时断开连接和建立多久的连接; |
| 4 | 传输层 | 管理两个节点之间的数据传输,负责可靠传输 | 检查是否有数据丢失 |
| 3 | 网络层 | 地址管理与路由选择 | 会考虑经过哪些路由到达地址 |
| 2 | 数据链路层 | 互联数据的传送和识别数据帧 | .....数据帧和比特流之间的转换 |
| 1 | 物理层 | 以'0','1'代表电压高低,灯光闪灭,界定连接器和网线的规格 | 比特流与电子信号的转换 |

这个我们大概了解即可,我们也是从网上扒下来的,我们会重点去学习应用层;

TCP/IP通讯协议:

TCP/IP模型其实就是OSI七层协议模型,只不过把OSI重新划分了一下,TCP/IP通讯协议采用五层的层级结构,每一层都可以呼叫下一层来给自己提供网络需求;

5层,应用层:

负责应用程序间沟通,如简单电⼦邮件传输(SMTP)、文件传输协议(FTP)、网络远 程访问协议(Telnet)等。我们的⽹络编程主要就是针对应⽤层。

4层,传输层:

负责两台主机之间的数据传输。如传输控制协议(TCP),能够确保数据可靠的从源主机发 送到⽬标主机,还有UDP。

3层,网络层:

负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识⼀台主机,并通过路由表 的⽅式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)⼯作在⽹路层。

2层,数据链路层:

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

1层,物理层:

负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同 轴电缆(现在主要⽤于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理 层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

这也是扒来的,下面我用自己的理解讲讲:

------------------

5,应用层:

就是我们拿到了包裹(数据包)后怎么样~

4,传输层:

任意两个设备的通信,不考虑传输过程,只考虑起点和终点;

3,网络层:

任意两个设备的通信,考虑中间的过程,传输过程可能有很多的交换机啥的;

2,数据链路层:

完成相邻两个设备之间的通信;

1,物理层:

规定网络通信中一些硬件设施的符合要求:

我们拿送快递来举一个例子,比如我们网购一个手机,

我们拿到手机之后怎么使用,就是应用层;

商家发货的寄件方后收件方的地址,就是传输层;

物流公司关心包裹是咋传输的,就是网络层;

大车司机关心今天送到哪个地方,一个一个节点之间,就是数据链路层;

TCP/IP协议栈其实里面包含了很多协议,但是最重要的就是TCP/IP协议了,我们再来谈谈主机,交换机和路由器都涉及到哪些层次:

1,主机 工作涉及到 物理层到应用层(通过应用层满足数网络通信的要求);

2,路由器 工作涉及 物理层到网路层(组件局域网,进行网络数据报的转发);

3,交换机 工作涉及到 物理层到数据链路层(对路由器接口的扩展,不需要考虑组网问题);

3,网络通信基本流程

不同的协议层对数据包有不同的叫法,在传输层叫段,在网络层叫数据报,在数据链路层叫数据帧;

应用层数据包,往往是结构化数据:

我们发送数据的时候,会把结构化数据变成二进制比特流或者字符串,我们叫做序列化;

我们接收数据的时候,会把二进制比特流或者字符串变成结构化数据,我们叫做反序列化;

流程:

我们使用QQ,发送Hello给对方;

1,应用程序获取用户输入,构造一个应用层数据包,会遵守应用层协议(往往是程序员自己定制的)

我们假设约定的格式为(发送者QQ,接收着QQ,消息时间,消息正文);

2,应用层调用传输层API(socket api)把数据交给传输层,把数据拿到后,构造出传输层数据包,

传输层的协议主要就是TCP和UDP;

我们拿TCP数据包举例,

TCP数据包 = TCP报头(TCP功能的相关属性) + TCP载荷(就是应用层的数据包);

数据包就变成这样的了;

3,传输层数据包构造好之后,就会调用网络层的API,把传输层的数据包交给网络层,网络层来处理数据包,网络最重要的协议,IP协议我们又会加一个IP报头,

IP数据包 = IP报头(包含很多信息,包括源IP和目的IP) + IP载荷(整个传输层的数据包);

在这些报头中还包含了上一层所用协议的内容,

4,IP协议继续调用数据链路层的API,把IP协议交给数据链路层,数据链路层的核心协议,以太网,根据以太网这个协议会在网络层的基础上进一步加工

以太网数据帧 = 帧头 + 载荷 + 帧尾

5,以太网继续把数据帧给硬件设备(网卡)

网卡会把二进制的比特流发送出去,这才成功的发送出去 。

发送数据我们我们从上到下的过程我们称为封住,

反过来接收数据的时候我们从下到下的过程我们称为复用;

讲完了~~~~

相关推荐
SKYDROID云卓小助手12 分钟前
三轴云台之相机技术篇
运维·服务器·网络·数码相机·音视频
战族狼魂3 小时前
CSGO 皮肤交易平台后端 (Spring Boot) 代码结构与示例
java·spring boot·后端
yuzhangfeng3 小时前
【云计算物理网络】从传统网络到SDN:云计算的网络演进之路
网络·云计算
TDengine (老段)3 小时前
TDengine 中的关联查询
大数据·javascript·网络·物联网·时序数据库·tdengine·iotdb
zhu12893035564 小时前
网络安全的现状与防护措施
网络·安全·web安全
xyliiiiiL4 小时前
ZGC初步了解
java·jvm·算法
杉之4 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
hycccccch5 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
zhu12893035565 小时前
网络安全与防护策略
网络·安全·web安全
沫夕残雪5 小时前
HTTP,请求响应报头,以及抓包工具的讨论
网络·vscode·网络协议·http