0


[线程与网络] 网络编程与通信原理(一):网络原理初步

🌸个人主页:https://blog.csdn.net/2301_80050796?spm=1000.2115.3001.5343
🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm=1001.2014.3001.5482
🧀Java EE(94平均质量分) https://blog.csdn.net/2301_80050796/category_12643370.html?spm=1001.2014.3001.5482
🍭MySql数据库(93平均质量分)https://blog.csdn.net/2301_80050796/category_12629890.html?spm=1001.2014.3001.5482
感谢点赞与关注~~~
在这里插入图片描述

目录

1. 网络发展史

起初,还没有网络的时候,主机和主机之间还是相互独立的,每个主机之间的信息不可相互交流.
在这里插入图片描述
在网络诞生的最初,网络是用来军用的,这是因为,在美苏冷战时期,“核武器"这个恐怖的东西诞生了,于是为了军队上下级保持正常的联络,不受核武器的影响,于是便诞生了网络.
为什么网络可以不怕核打击,是因为网络的一个重要的特点,“冗余”,两个信息传输点不仅仅只有一个网络结点连接,而是可以有好多结点连接.这就使得如果一部分的通信结点遭到了破坏,还是可以通过其他的结点保持联络.
在这里插入图片描述
最后,在军用之后,发现网络这个东西"很香”,于是随着时代的发展,网络便从军用一步一步转向了民用.
随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完
成业务,就有了⽹络互连.
⽹络互连:将多台计算机连接在⼀起,完成数据共享.
数据共享本质是网络数据传输,即计算机之间通过⽹络来传输数据,也称为网络通信.

2. 广域网,局域网及用于网络连接的设备

2.1 用于组建网络的硬件设备

  1. 主机 上网的设备(电脑/手机/其他设备)\
  2. 路由器 有很多网口,可以用来接入上一级的总网线和若干设备接入总网线通过路由器上的WAN口接入,接入设备的时候,通过路由器上的LAN口接入.在这里插入图片描述
  3. 交换机 由于接入路由器的设备太多,导致路由器的端口不够用,这时候我们就可以针对路由器的端口进行拓展,就可以在路由器的LAN口接入交换机,类似于我们平时给电脑用到的USB拓展坞的作用.在这里插入图片描述

拓展:
如今的交换机,都是自动完成数据转发,交换机早起,需要人手动接线,才可以完成数据的交换.比如我们在早期,我国刚刚有电话的时候,电话就需要通过接线员的接线来把两边的电话连接上,两者才可以相互通信.

  1. 集线器 与交换机的功能类似,也可以对端口进行拓展,与端口不同的是,集线器上的设备之间会发生冲突,同一时刻,只能有一个设备访问到路由器,其他设备及得等待.在这里插入图片描述

2.2 广域网与局域网

根据网络互联的规模不同,我们可以分为广域网和局域网.
[注意] 广域网和局域网是两个相对的概念.

2.2.1 局域网(LAN)

局域⽹,即Local Area Network,简称LAN
Local即标识了局域⽹是本地,局部组建的⼀种私有⽹络
局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况
下,是⽆法通信的。
局域⽹组建⽹络的⽅式有很多种:

  1. 基于网线直连在这里插入图片描述
  2. 基于集成器组建在这里插入图片描述
  3. 基于交换机组建在这里插入图片描述
  4. 基于路由器和交换机组建在这里插入图片描述

2.2.2 广域网(WAN)

  • 全世界最大的广域网,Internet,也叫做因特网或者万维网.
  • 如果属于全球化的公共型广域网,则称为互联网,属于广域网中的一个子集.有时在不严格控制环境的情况下,其实指的就是互联网.

⼴域⽹,即Wide Area Network,简称WAN.
通过路由器,将多个局域⽹连接起来,在物理上组成很大范围的网络,就形成了广域网.⼴域⽹内部的局域⽹都属于其⼦⽹.
在这里插入图片描述

3. IP地址与端口号

3.1 IP地址

  • 格式 IP地址本质上是一个32位(4字节)整数(IPv4),IP地址分为4个部分,每部分1字节,(0~255比特位). 比如144.108.233.254就是一个IP地址.
  • 用途 IP地址主要用于标识网络主机,其他网络设备(如路由器)的网络地址.简单说,IP地址就是用于定位主机的网络地址.

这就像我们发快递一样,知道对方的收货地址,快递员才可以将包裹送到目的地.

3.2 端口号

  • 用途 在网络通信中,IP地址用于标识主机的网络地址,端口号可以表示主机中,发送数据与接收数据的进程.简单说:端口号用于定位主机中的进程.

就像我们在寄快递时,不点要写收货地址(IP地址),还要写收货人姓名(端口号).

  • 格式 端口号是一个**0~65535(2字节)**的数字,在网络通信中,进程可以通过绑定一个端口号,用来发送以及接收网络中的数据.
  • 问题 有了IP地址和端⼝号,可以定位到⽹络中唯⼀的⼀个进程,但还存在⼀个问题,⽹络通信是基于⼆进制0/1数据来传输,如何告诉对⽅发送的数据是什么样的呢? ⽹络通信传输的数据类型可能有多种:图⽚,视频,⽂本等。同⼀个类型的数据,格式可能也不同,如发送⼀个⽂本字符串“你好!”如何标识发送的数据是⽂本类型,及⽂本的编码格式呢? 基于⽹络数据传输,需要使⽤协议来规定双⽅的数据格式。

4. 网络协议

4.1 概念

协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须遵循的一组约定,规则.比如如何建立连接,如何相互识别等.只有遵守这个约定,计算机才可以正常通信.
协议最终体现为在网络上传输的数据包格式.

4.2 作用

用户和用户之间:

  • 计算机的品牌有很多
  • 计算机的操作系统各不相同
  • 计算机网络硬件设备还是有很多

如何让这些不同的计算机之间保持正常通信?就需要有人站出来,约定一个共同的标准,大家都来遵守,这就是网络协议.
比如计算机之间通过电信号或者光信号来传输数据, 通过"频率"和"强弱"来表示0和1这样的信息.想要传输各种不同的信息,就要规定双方的数据格式.

举例说明:相亲
有请助教: 塞纳维斯,莱欧斯利
两个人去相亲,如何知道在我们到达指定地点之后,那个人就是我们要找的人呢,我们可以提前约好,我们在胸口插一朵玫瑰花,这就是两个人的一种协议,方便在相亲现场快速找到对方
在这里插入图片描述

4.3 协议分层

网络通信是一个非常复杂的事情,如果只使用一个协议去约定所有的细节的话,这个协议就会非常复杂.此时,我们就可以把这个复杂的协议拆分为多个功能单一的协议,这些协议可以被分层.对于一套完整的网络协议,经常分为好几个层次来拟定协议.

4.3.1 什么是网络协议分层

举例说明:打电话
在下面这个协议中,协议只有两层,一层是通话双方的语言协议,一层是双方的通话设备协议.
实际上的网络协议没有这么简单,比较复杂,我们后续介绍.
在这里插入图片描述

4.3.2 分层的作用

  1. 达到"封装"的效果. 某一层的协议,不必要知道其它层协议的细节,也就是对于使用方来说,不必关心提供方是如何实现的,只需要使用协议即可.对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可. 比如上面的例子,只要两者讲的语言一样,就可以正常打电话,不必在意电话的工作原理.同样电话的设计者也不必关心讲话两者的语言,只要把电话设计出来,即使是讲"鸟语",也可以通话.
  2. 任意层次的协议,都可以灵活切换. 比如上面的例子,虽然语言变了,但是对电话这一层没有任何影响,虽然设备变了,但是实质上都是打电话,没什么区别.该咋打还咋打.

4.3.3 OSI七层模型(了解)

OSI:即Open System Interconnection,开放系统互连

  • OSI七层⽹络模型是⼀个逻辑上的定义和规范:把⽹络从逻辑上分为了7层.
  • OSI七层模型是⼀种框架性的设计⽅法,其最主要的功能使就是帮助不同类型的主机实现数据传 输 OSI七层模型分为以下七层:在这里插入图片描述在这里插入图片描述

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

  • 由于我们对物理层的协议考虑的比较少,我们有时候就会忽略物理层,称为四层.
  • 我们目前PC端接触到的网络,大部分都是TCP/IP模型,移动端的4G/5G通信又是另一套专门的协议.
  • 这种协议模型可以认为是OSI模型的简化版本,把OSI模型的上三层合并为一层,统称为应用层.在这里插入图片描述
4.3.4.1 解释
  • 应用层: 和具体的应用程序相关,传输的数据干啥用,如何使用,有何意义.
  • 传输层: 关注的是通信双方的"起点"和"终点",终端到终端的传输.
  • 网络层: 关注的是通信中通信路径的规划,规划出的路径确定了数据要经过哪些"点到点的传输".
  • 数据链层: 关注的是通信过程中,相邻两个点之间的通信.
  • 物理层: 物理层就是网线和网口等硬件方面的东西.

举例说明: 网上购物
有请助教:莱欧斯利
莱欧斯利在淘宝上买了一箱面包.商家接到订单.

  • 应用层: 他买来这箱面包是用来吃的,绝对不是其他的什么用途~~.就像我们通过网络拿到数据之后,来干嘛用.
  • 传输层: 商家从仓库出库商品之后,寄到快递驿站,驿站揽收之后,快递单就会打印收货的地址.这时候就是只关注寄件地址和收件地址.也就是通信双方的"起点"的"终点".
  • 网络层: 揽收之后,商家就要对运输的路径进行规划,比如要从深圳市寄到北京市.可以是在深圳发件之后,在保定中转,之后到达北京,也可以在天津中转,最后到达北京.
  • 数据链层: 运输途中,两个结点之间该用什么样的交通方式,比如从深圳到北京比较远,可以采用铁路运输,从天津到北京比较近,可以才用大卡车运输.在这里插入图片描述
4.3.4.2 硬件设备所在分层(笔试真题)
  • 对于一台主机,他的操作系统内核实现了从传输层到物理层的内容,就是TCP/IP模型的下四层.
  • 对于一台路由器,实现了从网络层到物理层,也就是TCP/IP模型的下三层.
  • 对于一台交换机,实现了从数据链层到物理层,也就是TCP/IP模型的下两层.
  • 对于一台集线器,实现了只有物理层.

[注意] 随着现在⽹络设备技术的不断发展,也出现了很多3层或4层交换机,4层路由器。这里我们说的⽹络设备都是传统意义上的交换机和路由器.

4.3.5 各层之间的协议配合工作的原理

上面我们知道了协议的常见模型,以及分层之间的作用都各自有什么作用.我们接下来就要解释层与层之间是如何配合完成一个信息传输的.
总体来说: 上层协议调用下层协议,下层协议给上层提供服务,体现的是封装与分用的特性.
在这里插入图片描述
我们下面通过一个例子来说明:
比如A给B使用微信发送一个"hello".

  1. 应用层包装数据包 A在聊天窗口中输入一个hello,回车发送,这时候微信就会启动应用层网络协议,把要传递的内容,组织成"应用层数据包".
  • 什么叫应用层数据包呢? 就是协议中约定了数据应该按照什么样的格式来组织,按照应用协议中的格式组织下来的一个字符串或者二进制字符串就叫应用层数据包.组织的过程也叫做"序列化". 比如上面我们发送一个消息的时候,包括的数据有发送人,收件人,发送时间,发送内容,这些数据通过应用层网络协议,组织成一个字符串的形式.在这里插入图片描述
  1. 应用层和传输层配合 此时,应用层数据包已经有了,微信就要调用系统的API进行传输,也就是应用层把应用层数据包交给传输层,进入系统内核,之后传输层对应用层的数据包进行进一步封装,构造成传输层数据包.- 传输层数据包按照传输层协议分为两种,一种是TCP,一种是UDP,我们以UDP为例.在这里插入图片描述 在传输层进一步封装的时候,会在应用层数据包的前面加上UDP报头,其中UDP报头中包含有两个用户的端口号,应用层数据包称为UDP载核,使用UDP协议包装之后的数据包称为UDP数据包.
  2. 传输层和网络层的配合 有了传输层数据包之后,就要调用网络层的API,把传输层数据包交给网络层,网络层对数据包进一步封装,比如使用网络层IP协议对传输层数据包进行封装.在这里插入图片描述 在UDP数据包前加上IP报头,其中IP报头中包含两个用户的主机IP地址,后面的UDP数据包称为IP数据包载核.整个称为IP数据包.
  3. 网络层到数据链层的配合 网络层调用数据链层的API,进一步封装,比如使用以太网协议对网络层数据包进行封装.- 什么是以太网协议? 电脑会通过有线网传输数据,使用的就是以太网协议,所以网线也叫以太网线.在网络层数据包的前后加上帧头和帧尾,就是变成了以太网数据包.在这里插入图片描述
  4. 以太网数据包传输到网卡中
  5. 物理层,把二进制数据转化为光/电信号发送出去.信号经过A连接的路由器和交换机到达B.
  6. B接收到信号之后,就会执行上述过程的逆过程.
标签: java-ee 网络 java

本文转载自: https://blog.csdn.net/2301_80050796/article/details/138972120
版权归原作者 LileSily 所有, 如有侵权,请联系我们删除。

“[线程与网络] 网络编程与通信原理(一):网络原理初步”的评论:

还没有评论