当前位置: 首页 > article >正文

【网络】网络基础入门

文章目录

  • 局域网和广域网
  • 协议
    • 协议概念
    • 协议分层
    • 数据传输条件
  • OSI七层模型(了解)
  • TCP/IP五层(四层)模型
  • 网络传输基本流程
    • 报头
    • 局域网通信原理
    • 以太网(了解)
    • 网络传输流程图
    • 数据包封装和分用
  • 六、IP与MAC地址

局域网和广域网

独立模式: 计算机之间相互独立 ;网络互联: 多台计算机连接在一起, 完成数据共享

局域网LAN: 计算机数量更多了, 通过交换机和路由器连接在一起 ,范围相比于广域网,范围较小,这个小范围可以具体是一个家庭、学校、公司。私网和内网通常也表示同样的概念,都指的是企业、学校或家庭等组织内部形成的局域网。

广域网WAN: 将远隔千里的计算机都连在一起 所谓 “局域网” 和 “广域网” 只是一个相对的概念. 也可以看做一个比较大的局域网 。Internet可以被看作是一个广域网。公网和外网通常是指同一个概念,它们可以被看作是广域网的一部分

我们可能还听说过城域网和校园网这样的概念,城域网实际就是在一个城市范围内所建立的计算机通信网,而校园网对应的就是在一个校园范围内所建立的计算机通信网。城域网和校园网实际也是一种相对的概念,我们都可以将它们看作一个大的局域网。

如何区分广域网和局域网

在一般情况下,可以通过是否有路由器来初步区分一个网络是广域网还是局域网。理论上来说,如果一个网络中存在路由器,则该网络可以连接到其他局域网和互联网上,从而形成了广域网。而如果一个网络中没有路由器,则只能与同一局域网内的设备进行通信,因此可以被视为局域网。这种区分方法可能并不完全准确。例如,在一些大型企业或学校中,可能会使用多个路由器来分隔不同部门或楼层的网络。这种情况下,整个网络仍然可以被视为一个局域网,而不是多个广域网

协议

协议概念

“协议”本质就是一种约定,通信双方曾经做过某种约定,之后就可以使用这种约定来完成某种事情.

计算机有各种各样的组件:如CPU\显卡\网卡等等设备,内部通过线连接起来,所以一台计算机内部本质也是一个小型网络结构,在计算机的内部设备和识别之间也存在协议,协议不只是网络专属的,比如驱动程序访问硬件就要通过协议。而如果这些线可以延展地很长,硬盘放到很远处,那么还是属于同一台计算机,只不过网线拉长了,那么我们现在存储数据从写入本地编程通过网络写入远端了,在把CPU等等放到远处,相当于我们把一台计算机的各个功能用多台计算机构建起来,通过网络连接起来

所以计算机中体系结构中有网络,网络中有体系结构

我们在学习系统的时候没有谈论过协议,那么现在为什么要进行讨论,这是因为多台主机距离较远,为了减少通信成本,所以需要协议

所有的网略的问题都是由于传输距离变长了,说了这么长,其实我们都是在说为什么会有协议,那如何去简单理解什么是协议呢:

理解协议

基于打电话需要花钱的缘故,两个比较有想法的少年想了一个办法:打一个个电话铃声响了一下立即挂断,表示该出去玩了,如果遇到急事那就是响三次铃声,通过铃声的次数我们就可以知道要干什么,减少了成本

通过响起几声代表不同的含义,这个含义不需要解释,双方早就已经有共识了,这就叫做约定,而用计算机语言来说就叫做协议

如果计算中,一台主机想让另一台主机干事,先规定只会发送一个字节,字节中不同的数字代表不同的含义,这样就减少成本了

现在虽然有了协议,但有很多的计算机生产厂商、也有不同的操作系统,它们可能各自有各自的协议,所以这个时候就需要约定一个共同的标准,让大家都遵守,这就是网络协议(TCP/IP标准)

协议分层

分层:打电话时,从人的角度出发,是人与人之间在沟通联系,从通信设备的角度出发,是电话与电话之间沟通,这是分层。语言层与通信设备层是不同的,搭配使用

分层好处:把软件进行模块化,可以很好的进行解耦,解耦以后我们如果把通信设备进行更换,上层不用改变,而如果上层语言改变,底层不需要改变。所以对任何一层做任何修改并不影响其他层

分层依据:功能比较集中,耦合度比较高的模块放在一层,也就是高内聚,每一层解决特定的问题,功能解耦

数据传输条件

数据包交付能力:如果两台很远的主机之间要传递数据,首先要先有把数据交付给另一台主机的能力
路径选择的能力:有成千上万个主机,如果不知道给哪一台也不行。
容错纠错的能力:如果出错了就要重新传递一份。
数据解析能力:数据传递过去主机要识别这是什么,然后才能使用这个数据。

而这里的每一层都有自己的协议,每一层协议都解决当前层的问题。

OSI七层模型(了解)

分层名称功能每层功能概述
应用层针对特性应用的协议针对每个应用的协议
表示层备固有数据格式和网络标准数据格式的转换接收不同表现形式的文件,如文字流、图像、声音等
会话层通信管理。负责建立和断开通信连接。管理传输层以下的分层何时建立连接,合适断开连接以及保持多久的连接
传输层管理两个节点之间的数据传输负责可靠传输(确保数据被可靠的传送到目标地址)是否有数据丢失
网络层地址管理与路由选择经过哪个路由传递到目标地址
数据链路层互联设备之间传送和识别数据帧数据帧与比特流之间的转换
物理层用‘0’和‘1’表示高低电压比特流与电子信号的转换、连接器与网线的规格

但是,OSI七层模型既复杂又不实用,所以后来在具体实现的时候就对其进行了调整,于是就有了我们现在看到的TCP/IP四层协议(除开物理层)。

image-20230504000037357

TCP/IP五层(四层)模型

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇.
TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.
网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层

注意:

物理层我们考虑的比较少. 因此很多时候也可以称为 TCP/IP四层模型

数据链路层解决的是能够传递的问题,网络层解决的是选择路径的问题,传输层解决的是纠错的问题,而应用层就是解决数据解析的问题。

这里数据链路层中的网卡层是驱动程序的一部分。网络层和传输层是操作系统内部自己实现的。所有的操作系统都一样,所以全球的主机都能互联。

这里TCP和IP各自是传输层和网络层最具代表性的两个协议,这个协议栈命名为TCP/IP模型,足以看出这两个协议的重要性,它们的重要性是操作系统赋予的。

计算机层状体系结构图:

img

网络通信中,在应用层传输层时间会有系统调用接口,主要是文件类的系统调用接口。

网络传输基本流程

报头

协议每一层都有,而每一个协议最终的表现就是协议都要有报头

比如:我们收件的时候不会单单只收到物品,还有快递盒和快递单。这个多出来的快递单就叫做报头。如果我们要发数据,发送的数据可能比我们想要的多一点,这多出来的一部分就是报头

image-20230504084444172

快递单号是给快递员看的,这个快递单就是快递公司自己定的协议,这个快递单子在它们的物流体系中都能够被识别。

由此得出结论:协议通常是通过协议报头来表达的。每一份数据最终在被发送或者在不同的协议层中,都要有自己的报头。

局域网通信原理

两台局域网的主机是能够直接通信的

每一台主机都有网卡,每一张网卡都有自己的地址,叫做MAC地址,就像我们的身份证一样,标识网卡的唯一性

而MAC地址虽然全球唯一,但是不应用于全球,只是在局域网中标识自己的唯一性。

指令:ifconfig

image-20230504121742701

注意:云服务器这里的MAC地址是个虚拟地址。

局域网通信原理:

局域网中有很多的机器:

image-20230504122346190

如果MAC1想要跟MAC7发送消息时,其他所有主机也都能收到,但是其他主机在内部做协议判断发现并不是发给自己的,会自动丢弃。最终只有MAC7收到。

以太网(了解)

以太网和令牌环网是不同的通信标准

以太网(Ethernet)是一种计算机局域网技术。其通信方式:发出的消息所有人都能收到,但当MAC1想把消息发给MAC7,MAC3想把消息发给MAC5,但是它们不能同时发消息(数据覆盖)。以太网发送消息的原则是只允许一个主机在任何一个时刻在局域网中发消息。否则就会发生碰撞,如果发生了碰撞就把消息作废然后重发。如何去看待局域网中的网络资源:站在系统的角度看待网络资源就是临界资源。

令牌环网的解决方式就是谁持有令牌环谁发送数据。没有令牌的主机就不能发送消息。类似于系统中的锁

网络传输流程图

  • 同一个网段内的两台主机进行文件传输

image-20230504230407623

  • 跨网段的主机的文件传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器

image-20230505000230583

数据包封装和分用

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装

如果用qq聊天的话,他们认为他们在用户层直接进行聊天,而事实上是数据向下交付(封装)在向上解包(分用)才实现的聊天。

**数据包封装:**向下交付的时候每一层都会添加自己的报头,报文=报头+有效载荷,再把报文向下交付

数据包分用:向上解包的时候,因为同一层有相同的协议,所以能识别报头,它会解开报头,把有效载荷在向上解包。这样就形成了对称的结构

过程表现类似图(痕迹保留):

image-20230504233637287

可以看到同层报头和有效载荷完全一样,左边怎么发的右边就是怎么收到的,所以可以认为在同层协议中直接通信;也可以理解为向下交付。

不同网段的两台计算机通讯过程不同在路由器部分:

image-20230504234616176

一个设备至少要横跨两个网络,才能实现数据报跨网络转发,路由器必须至少横跨两个网络,路由器必须有两个网络接口。在路由器部分传递给令牌环驱动程序的时候,加上的报头是令牌环协议(重新封装报头),这样跟左边不一样了,但是并不影响对称性。

简单理解路由器部分传输数据:像我们脱了外套换了新的外套,但人没有变。由此可得出IP层的作用就是屏蔽底层网络的差异
不同的协议层对数据包有不同的称谓,在传输层叫做数据段,在网络层叫做数据报,在链路层叫做数据帧。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(报头),称为封装

六、IP与MAC地址

IP协议有两个版本, IPv4和IPv6.,提到IP协议, 如果没有特殊说明的, 默认都是指IPv4

image-20230505073132613

  • IP地址

上面的用4个节表示形式称为IPv4。而IPv6就是用16个字节表示

IP地址是在IP协议中, 用来标识网络中不同主机的地址;
对于IPv4来说, IP地址是一个4字节, 32位的整数;
我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255

MAC地址通常在局域网使用,IP地址通常在广域网使用

  • MAC地址

MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)

这两个都能表示地址,为什么要有两个地址:

西游记中,我们经常听到一句话,唐僧每次经过一个国家的时候,会跟首领说:贫僧从东土大唐而来,去往西天拜佛取经。而首领就会问他上一站从哪里来的,再告诉他接下下一站去哪里:比方说:上一站是女儿国,下一站该去黑风岭

这里的东土大唐和西天就是IP地址,从始至终不会发生变化。
而女儿国和黑风岭就是MAC地址,一直在变化。IP地址与MAC地址相当于终极目标与阶段性目标的关系

IP地址提供的是方向;MAC地址提供的是可行路径,这里的MAC两个地址一定是挨着的,所以是同一个局域网


http://www.kler.cn/a/17247.html

相关文章:

  • linux 下查看程序启动的目录
  • Django博客网站上线前准备事项
  • 工业相机选取
  • 【Android、IOS、Flutter、鸿蒙、ReactNative 】约束布局
  • git之 revert和rebase
  • 人工智能的前沿研究方向与未来发展趋势
  • Bean的作用域和生命周期
  • Splunk 转移数据之collect 命令
  • 功能齐全的 DIY ESP32 智能手表设计之PCB介绍
  • 一篇带你快速入门DDD领域驱动设计
  • 【JavaEE初阶】简单了解wait和notify方法~
  • MySQL 精选 35 道面试题大厂稳了(含答案)
  • 真无线耳机哪款性价比高?高性价比无线耳机排行榜
  • Apache POI,springboot中导出excel报表
  • Websocket的基本认识、使用与封装
  • JavaScript:数组---二分法
  • 【笔试强训选择题】Day7.习题(错题)解析
  • 看我如何通过帮助服务台轻松黑掉数百家公司
  • selenium自动化面试题回答
  • KeepAlived高可用环境搭建
  • JavaScript:二叉树(层序遍历)
  • Python | 人脸识别系统 — 人脸识别
  • Linux线程:互斥锁mutex的使用
  • 什么是Spring FactoryBean?有什么作用?
  • ES6:promise简单学习
  • 从MultipartFile上传文件名乱码开始详解编解码知识