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

【Linux网络】认识网络

网络基础

  • 一,认识协议
    • 1. 为什么要有协议
    • 2. 什么是协议
  • 二,网络和系统的关系
    • 1. 网络通信的问题
    • 2. 网络层状结构
    • 3. 网络和系统的关系
  • 三,网络通信流程
    • 1. 再次认识协议
    • 2. 通信原理
  • 四,IP地址和MAC地址
    • 1. IP地址
    • 2. MAC地址
    • 3. 区别
  • 五,总结

一,认识协议

对于网络部分,我们可能都听过tcp/ip协议,那么这个协议到底是什么?现在让我们来看看

1. 为什么要有协议

单台机器,其实也是一个网络结构,而多台机器之间的通信,也就是网络通信,其实就是距离变长了。

那么距离一长,我们就会出现下面三个问题:

  • 丢包了怎么办?
  • 如何定位目标机器?
  • 如何让我们的报文在经历很多设备后可以准确把数据推送给远端机器?

为了解决这三个问题,所以就要有相关的解决办法,那么就有了协议

2. 什么是协议

协议其实就是一种约定
举个例子:

假设我们在离家很远的地方上学,这里的电话费很贵,那么我们隔一段时间就要和家里联系一下,但是我们又不能长时间通话,所以我们就和家里人约定好,电话响一下,表示我们一切都好,响两下表示我们没有钱了,需要家里打点生活费。

那么在这个例子中,为了能够正常和家里人通信,所以制定了一个约定,我们和家里人都遵守这个约定,那么这个约定就是协议。

在网络通信中也是如此,计算机生产厂商有很多,计算机操作系统也有很多。计算机网络硬件设备, 还是有很多。如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准大家都来遵守, 这就是 网络协议

二,网络和系统的关系

网络一定要保证不同的机器都要无障碍地接入互联网,就要定制一套协议,涵盖了从硬件到软件。那么我们是如何遵守协议的呢?
协议是依附于我们的系统的,我们要编码实现协议,让不同地操作系统都可以去访问互联网。

首先来看一下网络通信中的问题

1. 网络通信的问题

网络通信中我们要解决4个问题:

  1. 如何保证把数据交给下一跳主机
  2. 转发过程中,如何路径选择,目标主机定位问题
  3. 如果报文出现错误,或者丢失怎么办?

前三个解决后,可以保证将数据可靠地从A发到B

  1. 如何使用送达的数据?

每一个问题都需要一个协议来解决,所以我们就要用层装结构来解决这些问题。在计算机领域,很多问题都要用到层状结构分层也体现出了封装的好处,也体现出了面对对象的好处

2. 网络层状结构

为了解决不同的问题,并且对协议有一个很好的划分,所以有了层状结构

有了层状结构,就可以做到每一层的解耦,也便于更新,替换,优化。网络的层状结构,每一层解决不同的问题

注:这里我们先不考虑物理层
在这里插入图片描述

在网络层状结构出现之初,是七层网络结构:
在这里插入图片描述

在这里插入图片描述

但是在工程实践实现协议栈中,七层模型中应用层和表示层和会话层不能完成分层实现,所以就归为了一层,由用户去统一实现。

所以实际上我们使用最多的是TCP/IP五层网络模型
在这里插入图片描述

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

3. 网络和系统的关系

有了层状的网络结构,那么我们就可以来分层实现网络协议了,网络协议栈和OS的关系很密切

看下图:
在这里插入图片描述
网络协议栈和操作系统是一体的,不同的OS可以通过统一的网络协议栈进行通信

同时,对计算机收到的报文还要进行管理,那么也就要先描述,再组织

三,网络通信流程

1. 再次认识协议

以快递为例子,我们收到一个快递,有一个快递单,发快递的人可以根据快递单知道发给你,你收到快递后可以根据快递单知道这个快递是你的。那么快递单就是一种双方的协议。而快递就是快递 + 货物,那么对应在网络中,快递单就是报头。

在计算机中,我们用一种结构化字段来表示协议,这个结构化字段定义的对象,就是报头。通常这个结构化协议字段是在内核中的。

所以我们发送数据时会先添加报头,在收到数据时,会先解开报头,再拿数据内容。
在这里插入图片描述

2. 通信原理

在一个局域网中,两台主机可以直接通信,那么在一个局域网中,一台主机发送了一个消息,这个消息是有报头的,其他所有主机都会收到,只有解开报头后发现是给自己发的那个主机才会真正收到,其他主机会丢弃这个消息

在这里插入图片描述

同时,一个局域网中,可以有多个主机同时发送消息,那么就有数据碰撞的问题。所以就要避免碰撞,所以一个局域网也叫``碰撞域```。所以在任何时刻只能有一个主机发送消息。

这里局域网就像一个临界资源,碰撞检测和避免,重发就是在完成互斥访问


下面我们来看看通信的过程:

在这里插入图片描述

当我们发送消息的时候,逻辑上,我们看到的是每一层都在互相通信,但是实际上,从应用层往下,每一层都会封装各层的报头,接收时,每一层都要对封装的报头进行解包 + 分用

这里每一层的报文都分为 报头 + 有效载荷

而每一层的封装,还要解决对应的解包的问题,所以每一层的协议我们都要清楚两个问题:

  • 如何将报头和有效载荷分离
  • 如何将自己的有效载荷,交付给上层那个协议

四,IP地址和MAC地址

有了协议,可以完成通信,那么也就要对网络通信中的主机地址进行管理,所以现在来看看ip地址和mac地址。

1. IP地址

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

ip地址是用来在网络中唯一标识一台主机的

2. MAC地址

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

3. 区别

那么ip地址和mac地址有什么区别呢?

  • 网络传输中,不变的地址叫IP地址,一直变的是MAC地址
  • ip地址:用来路径选择
  • mac地址:用来从这一跳 跳转到下一跳

网络传输的大致流程就是:
从IP层往上,报文几乎无差异,ip地址不变
在数据链路层,只有mac地址变化


下面我们可以来看跨网络通信的例子来具体理解一下:

令牌环网,也是一个局域网通信标准,只不过是拥有令牌的主机才可以向局域网中发送数据,发完后可以将令牌转给另一台主机

在这里插入图片描述

五,总结

在了解了网络基础后,我们后面就开始直接编写网络的代码了,先学会使用,再了解原理,有助于我们更好的理解网络。

相关文章:

  • Vue:显示数据
  • MySQL基础之开窗函数
  • 二叉树前序与后序遍历迭代法详解:栈操作与顺序反转的巧妙结合
  • 执行apt update后报错 Unable to lock directory /var/lib/apt/lists/ 问题解决
  • Myshell与清华联合开源TTS模型OpenVoiceV2,多语言支持,风格控制进一步增强~
  • leetcode2934. 最大化数组末位元素的最少操作次数-medium
  • 【工具类】ssh,remote-ssh插件和sftp插件
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的智能安检机技术方案‌
  • electron结合vue,直接访问静态文件如何跳转访问路径
  • Apache Pulsar 消息、流、存储的融合
  • Spyglass:跨时钟域同步(同步单元)
  • 编程日志5.6
  • 一文掌握六个空转数据库
  • MySQL——九、锁
  • 十个免费试用的云数据库
  • 在 Windows 中配置使用 WSL 来运行 Linux 环境,主要有以下步骤:
  • 【测试开发知识储备】之Jacoco(Java Code Coverage)
  • LeetCode100.7 接雨水
  • 代码随想录算法训练营第60期第三十六天打卡
  • 【​​HTTPS基础概念与原理​】对称加密与非对称加密在HTTPS中的协作
  • 泽连斯基抵达安卡拉,称乌将派出最高级别代表团参与谈判
  • 全国人大常委会今年将初次审议检察公益诉讼法
  • 7月纽约举办“上海日”,上海大剧院舞剧《白蛇》连演三场
  • 在古老的意大利科莫歌剧院,廖昌永唱响16首中国艺术歌曲
  • 国务院关税税则委员会关于调整对原产于美国的进口商品加征关税措施的公告
  • 吉林:消纳绿电,“氢”装上阵