首页 > 系统相关 >【Linux网络】带你用生活例子来理解什么是协议

【Linux网络】带你用生活例子来理解什么是协议

时间:2024-08-20 22:26:37浏览次数:7  
标签:协议 主机 网络 问题 快递 例子 Linux 数据 我们

协议

一、为什么要有协议?

协议的产生是为了解决问题,那么解决什么问题?

  • 如何处理发来的数据
  • 长距离传输的数据丢失问题
  • 如何定位主机的问题
  • 怎么保证数据准确到达下一个主机的问题
    那么为什么会产生这些问题?
    归根结底,还是因为距离变长的原因。
    因为距离的边长,导致我们的需要进行跨主机通信,跨主机的通信又导致着我们通信之后,
**如何将数据发送的问题。数据发送过去之后,
  如何处理数据,处理完的数据在传输的过程中,
  如果发生数据包的丢失,比特位翻转,乱序的这些长距离传输的问题怎么解决,将数据传到另一台主机之后,
  如何将这些数据处理获取到我们想要的信息。

诸如上面的这些问题的产生,为了能够解决这些问题,我们的协议因此诞生。每一层问题通过设定对应的协议来解决相应的问题,前一个问题的目的是下一个问题的开始,我们的协议也意味着要分层设定来解决对应层的问题。

二、什么是协议?

协议就是一种约定,就比如我们生活中我们要发快递,将一个物品交给另一个人,我们在发快递的时候,不仅仅只是将物品给快递员,这样子快递员不知道要将快递发给谁,怎么联系收件人,快递拿到哪里才能交给收件人。而是我们在发快递的时候,会将物品放在快递盒子里打包,然后在快递盒子上添上快递信息,这样就能让我们知道快递是谁发来的,发到哪里,怎么联系对方。
而协议,就是一种类似与快递信息的产物,它是一种约定,一种我们双方都能看的懂,并从中获取到传输的信息的约定,在语言层面上,我们可以抽象的将其理解为协议就是一种结构体,这个结构体的组成双方都知道,而结构体,不就是由二进制码组成的吗,所以,协议是一种我们双方都可以看的懂,并且是在我们要发送的内容的基础上额外多出来的那部分二进制码。 类似于摩斯密码的东西,它需要双方都清楚的知道如何解码,也就是约定。所以我们的主机在看到协议的那部分二进制码的时候,我们不仅仅只是看到了那部分二进制码,更能理解它背后真正的含义。

三、思考:只要通信的两台主机,约定好协议就可以了吗?

首先,计算机的厂商很多,操作系统也很多,网络硬件也很多,那么假如,只是通信的两台主机约定协议,那么是不是不同的操作系统之间就不能通信了?
是不是新的主机想通信就得和另外一台主机制定新的协议?就好比:中国人要和外国人说话,就要用一种新的语言来说话吗?那显然是不可能的。
所以,这时候就需要制定一个统一的标准,让我们所有的主机都遵守这个约定,制定出来一个标准,让大家都来遵守,这就是网络协议。这样任意两台主机都能有一个共同的标准,就都能看的懂对方发来数据背后所蕴含的信息。

四、协议分层

1.协议为什么要分层?
协议分层的原因有两个方面:
首先,要制定协议,规模太大了,所以我们要分层去实现,以高内聚,低耦合的目的去实现,这样子我们在维护上更加方便,层和层之间的耦合度低,意味着我们可以分工去维护不同层。
其次,我们的问题也是层状的,
* 如何处理发来的数据
* 长距离传输的数据丢失问题
* 如何定位主机的问题
* 怎么保证数据准确到达下一个主机的问题
基于对问题的解决,我们制定协议也是分层的,每层协议解决对应层的问题。
2.协议如何分层?
协议分层,我们通常是采取OSI七层模型
在这里插入图片描述

  • 物理层:物理层主要是一些网卡的硬件设备
  • 数据链路层:主要是解决数据帧的识别和传送问题,主要是面对一些比特为错误或者数据帧丢失的问题
  • 网络层:网络层解决的是我们的数据发到哪里的问题
  • 传输层:传输层面对的是我们数据传送的可靠性问题,是否有数据丢失的情况。
  • 会话层:何时建立连接?何时断开连接?
  • 表示层:就比如传过来的数据是图片还是影音还是文字?
  • 应用层:针对特定应用制定特定的协议,如http协议

————————————————————————————————
但对于我们日常搭建服务器而言,我们主要关心其中的五层,我们将这五层叫做TCP/IP协议,分别是 物理层 数据链路层 网络层 传输层 应用层
但物理层由于是网卡这些硬件设备,所以通常我们也叫做TCP/IP四层协议

五、数据是如何发送的?

首先,假如我们的应用层要发一个 你好 这样的消息给对方
在这里插入图片描述
然后 你好 这个消息就会传到下一层传输层,传输层对其进行封装消息,保证数据的可靠性。接着传到下一层
网络层对其再进行封装,来告知我们的 你好 这个消息是谁发来的,来源是谁,要发给谁,目的地是哪里?然后接着传到下一层。
数据链路层就将消息的数据帧处理,然后给物理层,通过网卡进行发送消息给对方网卡。
在这里插入图片描述
报文就是这里的报头 + 有效载荷
对于数据链路层而言:它的报文就是这里的报头 + 有效载荷
在这里插入图片描述

对于网络层而言:它的报头就是它封装的时候多出来的那部分,原本的东西就是有效载荷。

而当对方的网卡收到收到消息的时候,就会进行解包,将有效载荷传给它的上一层。
在这里插入图片描述
所以最后我们的应用层就会收到对方的消息。这种通信方式,对层和层之间进行解耦。
对于同一层而言,它认为它是在和对方同层在进行交流,因为同一层所用的协议相同,那么自然就可以看的懂对方发来的报头的具体含义,而不需要关心其他层的报头消息。这就实现了高内聚,低耦合的思想。

就比如:我们在打电话的时候,我们认为我们是在和对方直接进行交流,但实际上我们是在和电话进行交流,电话将我们的消息封装成一种无线电信号传给对方的电话,对方的电话接收到信号,然后再将信号进行解析成信息,然后再传给对方,对方就能听到我们说话。

在逻辑层面上,我们认为我们是在和对方直接进行交流,电话是在和电话进行交流,这就是层和层之间交流。

标签:协议,主机,网络,问题,快递,例子,Linux,数据,我们
From: https://blog.csdn.net/2403_86785171/article/details/141369998

相关文章

  • 【Linux】撕开fork的本质,深入了解fork函数原理
     目录一、如何使用fork函数?二、fork函数如何产生两个返回值?三、if,else语句怎么会同时执行?为什么i会有两个不同的值?子进程创建出来之后去哪里了?四,为什么给父进程返回子进程的PID,子进程返回0?一、如何使用fork函数?在Linux操作系统里,我们可以通过调用fork函数来创建子进程......
  • TCP/IP-网络层
    网络层的主要作用        网络层通过路由选择来确定数据包从发送端到接收端的最佳路径,并通过网络地址(如IP地址)来标识和寻址主机和网络。其提供的服务是无连接的,表示数据包的传输不依赖于事先建立的连接。路由选择        路由选择是确定数据包从源主机到目......
  • Linux命令之二
    Linux命令之二VI和VIM编辑器1、VIM的一般模式①、删除复制操作②、光标移动操作2、VIM的编辑模式3、VIM的命令模式4、三种模式之间的切换关系权限管理文件类型和权限的表示文件属性介绍chmod改变文件权限chown改变所有者yum安装软件命令Linux命令速查平台VI和......
  • 深入解析CDN(内容分发网络):架构、优势与实现
    摘要内容分发网络(CDN)是一种通过在多个地理位置部署服务器节点来提高网站加载速度和数据传输效率的网络技术。随着互联网内容的日益丰富和用户对访问速度的高要求,CDN已经成为现代网站和应用不可或缺的一部分。本文将详细介绍CDN的基本概念、工作原理、优势以及如何在Web开发......
  • 利用缓存优化网络性能:技术、策略与实践
    摘要缓存是提高网络性能的重要技术之一,它通过减少数据加载时间、降低服务器负载和网络带宽消耗,从而加速内容的交付速度。本文将详细探讨缓存的工作原理、不同类型的缓存机制、以及如何在Web开发和网络架构中有效利用缓存。1.缓存的基本概念缓存是一种将数据暂存的技术,以......
  • Linux多进程
    进程的概述进程是计算机科学中的一个基本概念,它指的是在操作系统中正在执行的程序的实例在Linux操作系统中,进程是程序执行的实体,是资源分配的基本单位在在Ubuntu中,通过使用ps命令可以查看当前的进程列表psaux进程与程序的区别定义:程序:程序是一组指令的集合,它们被编写......
  • 网络丢包深度解析:影响、原因及优化策略
    摘要网络丢包是数据在传输过程中未能成功到达目的地的现象,它对网络通信的性能有着显著的影响。本文将深入探讨网络丢包的定义、原因、对性能的影响,以及如何通过技术手段进行检测和优化。1.网络丢包的定义网络丢包发生在数据包在源和目的地之间的传输过程中,由于各种原因......
  • 网络模型图,网络通信三要素
    网络模型7层概述:1.物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。2.数据链路......
  • 深入理解TCP选择性确认(SACK):优化网络传输的机制
    摘要TCP(传输控制协议)是互联网上使用最广泛的协议之一,用于在不可靠的网络环境中提供可靠的数据传输服务。然而,在某些情况下,如网络拥塞或丢包,TCP的默认重传机制可能会导致不必要的性能下降。为了解决这个问题,TCP引入了选择性确认(SACK)机制。本文将详细介绍SACK的概念、工作原......
  • vSphere5.9.4.网络IO控制
    第四部分网络i/o控制网络i/o控制介绍networkresourcepoolthatallowsyoutocontrolnetworkutilization.usingnetworkresourcepools-towhichareassignedsharesandlimits-youcancontroloutgoingnetworktraffic.thisfeatureisreferredtoasvspherenetw......