计算机网络通信基础概念

news2024/11/22 14:58:07

目录

1、网络通信的本质

2、网络的发展 

3、网络协议(TCP\IP协议) 

3.1 协议实现通信的原理

3.2 协议的具体概念

3.3 协议的模型 

4、数据链路层

5、网络协议栈和操作系统的关系

6、网络协议通信过程

6.1 通信过程的封装与解包

7、以太网通信

7.1 数据碰撞 

结语


前言:

        计算机网络通信是当代最重要的技术之一,它使得纵使相隔千里的两台计算机也能进行彼此通信,通信的本质是数据传递,网络通信即数据以网络为媒介传递给各个计算机。网络通信可以让全球计算机进行交流,全球计算机的硬件种类之多且操作系统各有所类,能够让这些彼此之间存在差异的计算机相互通信,最根本的原因就是让他们都遵守一个规则-网络协议

1、网络通信的本质

        网络通信虽说是计算机与计算机之间的“交流”,但是计算机要想理解通信的内容,就必须通过程序来实现,因为只有程序才可以对传递的数据做进一步分析(因为通信的数据实际上就是一堆二进制),简单来说,即发送方和接收方都要对通信数据(二进制)做同样的规划,即发送方和接收方都要用程序实现对通信数据的把控,因此在源头上可以将网络通信理解为进程间通信,只不过双方进程不在同一个机器上,而在不同的主机上

2、网络的发展 

        ①最初的计算机与计算机之间是相互独立的,就好比原始社会中各个大陆是不知道彼此的存在的,示意图如下:


        ②当出现网络后,原本独立的计算机就可以通过网络实现相互通信,就好比在原始社会中人们发明了船只等交通工具,让相邻的岛屿知道了彼此的存在,但是所能通信的范围很小,示意图如下:


         ③对上述通信条件进行范围扩大,即局域网(LAN)通信,局域网使得内部计算机可以相互通信,并且可以通过路由器与外部的计算机进行通信,就好比在一群岛屿中设置了一个飞机场,让相邻岛屿的人可以通过飞机去到外面的世界,示意图如下:

        交换机是一种设备,他的作用是让局域网内部通信效率更高。


        ④在上述局域网通信的基础上,再次将范围扩大至广域网通信(WAN),他可以将远隔千里的计算机都连在一起进行相互通信,就好比世界各地都有飞机场,可以通过飞机飞往世界各地,示意图如下:

3、网络协议(TCP\IP协议) 

        计算机网络通信的传输媒介是依靠光信号,电信号,电磁波信号。 通过 "频率" "强弱" 来表示表示二进制的0或1。上文提到,计算机与计算机之间是存在差异的,要让个体上存在差异的计算机进行彼此通信,则需要让他们共同遵循同一个协议,该协议就是网络通信协议,又称网络协议,从抽象层面上来看,协议就是一种规定好的数据格式。

3.1 协议实现通信的原理

        1、网络通信是可以被该局域网中所有计算机看到的,比如主机A给主机B通过网络发送消息,那么其他主机也可以看到这个消息,这样一来彼此之间就不存在安全性和隐私性了,而协议可以保证只让接收方看到该消息,保证了安全性和隐私性。并且协议还提供加密。

        2、协议可以保证发送方发送的数据可以被接收方精准的拿到。

        3、当传输的数据在途中发生丢失或传输失败时,协议可以对此次数据进行重发,确保数据的完整性。

        4、协议规定了数据在通信过程中如何被解释,比如数据在传递时如何进行编码、格式化,发送方该采用什么规则发送数据,接收方该采用什么规则接收数据,保证了数据的有效性。

3.2 协议的具体概念

        协议是数据传输的额外附带品,比如发送和接收快递的时候,快递单子就是发送方和接收方共同遵守的协议,快递员依据快递单上的信息,就可以得知该物品的下一站是何处,当接收方拿到快递时,也会核实快递单上的信息,确认是否是自己的快递,待信息都核实完毕且正确后,才会拆开快递拿到里面的物品件(对应网络协议的数据内容),因此协议的目的只是为了让双方更好的拿到这个数据。

3.3 协议的模型 

        网络协议模型分为两种模型:1、OSI七层模型,2、TCP/IP五层模型。


        OSI模型示意图如下:

        OSI模型把网络通信在逻辑上分为了7层.,每一层都有对应的功能。不管是何种设备或者计算机,在进行网络通信时必须要经过上面7层逻辑才能保证正常通信。该模型的优点是将各个功能明确地区分开来,概念清楚,当某一层出问题时,我们只需要对该层进行排查即可,无需涉及其他层,方便维护。

        但是此模型过于复杂,而TCP/IP五层模型较简易且更加贴近通信逻辑,因此网络通信协议中常常用TCP/IP五层模型来举例子。


        TCP/IP五层模型示意图如下:

        TCP/IP将网络通信分成了五层结构,每层结构的功能如下:

        1、物理层: 用于以太网通信的网线、光纤等物理设备的工作在该层。

        2、数据链路层: 负责物理层设备之间的通信,比如WiFi,交换机的工作就在该层。
        3、网络层: 通过ip地址定位源主机和目标主机,完成主机之间的通信(数据报传递),路由器工作在网路层。
        4、传输层: 分为TCP协议和UDP协议,负责将网络层的协议进行进一步分解,然后将分解出来的数据传递给下一层,能够精准的发送给具体进程。
        5、应用层: 通过代码的实现对将要通信的数据做处理,程序员的工作就是在应用层编写代码实现网络通信。

        站在操作系统层面(除了应用层其他层面都是站在操作系统上的),整个网络协议栈最重要的是网络层和传输层,所以把整个网络协议叫做TCP\IP协议。 

4、数据链路层

        数据链路层只能让相邻的两个设备进行直接通信,而面对不相邻的设备,数据链路层采用“跳一跳”的方式进行通信,方法就是将路由器当作“跳板”,不断的跳转最后找到目标主机,示意图如下:

        具体“跳跃”细节:在局域网内,每一台设备都有自己的唯一的标识符,该标识符就是mac地址,因为局域网通信就是根据mac地址的唯一性来定位主机的。主机A给主机B发消息,由于主机B不在主机A的局域网中,所以主机A会拿到路由器A的mac地址,然后跳到路由器A,如此逻辑,直至拿到主机B的mac地址,最后跳到主机B完成通信。

5、网络协议栈和操作系统的关系

         网络协议栈实际上是操作系统里的一部分,他属于操作系统。示意图如下:

        传输层和网络层实际上是操作系统内核的模块,他们属于操作系统的一部分。网络协议结构和操作系统的种类没有直接关系,即操作系统可以各不相同,但是网络协议栈必须全部人都要按照这个结构来遵守,这也是为什么不同的操作系统之间可以进行网络通信。 

6、网络协议通信过程

        从网络协议栈观看通信过程,示意图如下:

         当主机A和主机B进行网络通信时,数据从主机A的应用层开始往下走,然后通过以太网协议(该协议用于实现链路层的数据传输)找到主机B,并从主机B的链路层一步一步往上走,最终达到主机B的应用层完成一次通信。

6.1 通信过程的封装与解包

         从上图中可以得知数据的传输路径是从上到下,然后再从下到上,实际上数据传输到每一层时,该层都会对数据做相关处理,具体示意图如下:

        一般把传输层的报文叫做数据段,网络层的报文叫做数据报,链路层的报文叫做数据帧。每一层会给上层传递下来的报文添加报头,报文=报头+有效载荷,把这种操作叫做封装。添加报头的目的是为了接收方拿到整个报文时,也可以从下往上的分析报头然后拿到有效载荷继续向上传递,最终接收方拿到信息-“你好”。


        紧接着报文通过以太网协议传输给接收方,接收方对报文的解包过程如下:

         接收方接收到报文后会依次向上交付,最后把信息内容呈现给用户,将封装与解包放在一起来看,发现是一个对称的过程,因此从逻辑上来观察,同层的协议在与对方的同层协议进行直接通信。最后总结得出:网络通信的过程就是不断的封装与解包

7、以太网通信

        在局域网中,每台主机都有自己唯一的标识符:mac地址,接收方之所以可以拿到发送方的数据,就是因为发送方知道接收方的mac地址,但是数据之所以可以精准发送至目标主机,不是根据目标主机的mac地址从而制定一条唯一的“路径”发送给目标主机,而是将数据发送给当前局域网内的每一个主机,只是其他主机会对比mac地址看看是不是发送给自己的,如果不是则会在链路层就丢弃这些数据,不会让数据继续向上传递。

        以太网通信原理就好比上课点名:

        以太网通信实际上是可以被所有人看到的,因此数据其实不是很安全,所以才有网络安全性质的工作。 

7.1 数据碰撞 

        当以太网内多个主机相互发送数据,就会导致数据碰撞,因为路线只有一条,比如一个班里如果老师说话的同时学生也在说话,就导致每个人都听不清对方在讲什么,解决碰撞的方法是错峰运行。当然一个发送者的数据如果被碰撞了,发送者自己是知道的,所以这时候发送者就会运用碰撞避免的算法实现错峰运行。 


        使用交换机减少碰撞的概率:

结语

         以上就是关于计算机网络通信基础概念的讲解,了解网络通信的基础框架是学习网络编程的基础,后续使用网络套接字实现网络通信时离不开网络通信的原理。

        最后如果本文有遗漏或者有误的地方欢迎大家在评论区补充,谢谢大家!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

助力樱桃智能自动化采摘,基于嵌入式端超轻量级模型LeYOLO全系列【n/s/m/l】参数模型开发构建果园种植采摘场景下樱桃成熟度智能检测识别系统

随着科技的飞速发展,人工智能(AI)技术已经渗透到我们生活的方方面面,从智能家居到自动驾驶,再到医疗健康,其影响力无处不在。然而,当我们把目光转向中国的农业领域时,一个令人惊讶的…

【AI】SpringCloudAlibaba AI 学习

Spring Cloud Alibaba AI 简介 Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云通义系列大模型全面适配,让用户在 5 分钟内开发基于通义大模型的 Java AI 应用。 官网: https://sca.aliyun.com/ https://sca.aliyun.co…

理解 HTTP 请求中 Query 和 Body 的异同

本文将深入探讨HTTP请求中的两个关键要素:查询参数(Query)和请求体(Body)。我们将阐明它们之间的差异,并讨论在何种情况下使用每一种。 HTTP 请求概述 HTTP 请求是客户端(如浏览器&#xff09…

知道秘密的人

一、力扣题目: 二、理论分析 由于 天数是一天一天变化的,用 数组的下标代表天数i, 数组中的 数据代表知道秘密在第i天的人数 假设在某个人在知道秘密的第3天开始传播,在第6天忘记,由于 第1天1个人发现了秘密 spread为能传播秘密的…

MATLAB-bode图编程

num[1 1];den [2 1];tf(num,den)bode(tf(num,den));hold on

【QT】TCP

目录 核心API 示例:服务器和客户端信息互发 服务器代码实现 第一步:创建QTcpServer对象的实例 第二步:绑定信号槽,处理新的连接 第三步:绑定并监听端口号 客户端代码实现 第一步:创建socket对象的实…

【计算机网络】WireShark和简单http抓包实验

一:实验目的 1:熟悉WireShark的安装流程和界面操作流程。 2:学会简单http的抓取和过滤,并分析导出结果。 二:实验仪器设备及软件 硬件: Windows 2019操作系统的计算机等。 软件:WireShark、…

智能PDF转markdown

嘿,各位技术大咖们,今天我要给大家带来一个超酷的项目——“智能PDF转Markdown”,这可是数字化办公的神器,基于Marker技术,让PDF文档秒变Markdown,轻松应对RAG知识库构建等任务的挑战! 打造了一…

Python | Leetcode Python题解之第299题猜数字游戏

题目: 题解: class Solution:def getHint(self, secret: str, guess: str) -> str:bulls 0cntS, cntG [0] * 10, [0] * 10for s, g in zip(secret, guess):if s g:bulls 1else:cntS[int(s)] 1cntG[int(g)] 1cows sum(min(s, g) for s, g in z…

学习笔记 韩顺平 零基础30天学会Java(2024.7.22)

P407 接口使用细节2 P407 接口课堂练习 对于最后一个的输出:B因为实现了A的接口,所以和继承一样,B可以访问A的变量 P409 接口VS继承 接口对单继承机制(是指只能继承一个类)进行了补充 也可以理解为,子类通过…

IndexError: list index out of range

IndexError: list index out of range 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主理人 擅长.net、C、python开发, 如果遇到技术问题,即…

锅总介绍CNCF主要目标、全景图及发展历史

一、CNCF简介 云原生计算基金会(Cloud Native Computing Foundation,简称 CNCF)是一个成立于 2015 年的非营利性组织,隶属于 Linux 基金会。CNCF 的主要目标是通过开源软件推动云原生计算技术的发展和普及,帮助企业更…

【C语言篇】C语言数据类型和变量

文章目录 C语言数据类型和变量1. 数据类型介绍1.1 字符型1.2 整形1.3 浮点型1.4 布尔类型1.5 各种类型数据长度1.5.1 sizeof操作符1.5.2 数据类型长度1.5.3 sizeof表达式不计算 2. signed和unsigned3. 数据类型的取值范围4. 变量4.1变量的创建4.2 变量的分类 5.强制类型转换 C语…

Redis:快速键值存储的入门指南

一、什么是Redis? Redis,全称为Remote Dictionary Server,是一种开源的、高性能的键值(Key-Value)存储系统。与传统的关系型数据库不同,Redis将数据主要存储在内存中,因此能够提供极低延迟的数…

网络传输层——UDP与TCP

前言: 1.国际网络体系结构: OSI模型: open system interconnect 理论模型 1977 国际标准化组织 各种不同体系结构的计算机能在世界范围内互联成网。 应用层:要传输的数据信息,如文件传输,电子邮件等…

【C语言】宏定义常量加 ; 的错误

我在使用宏定义常量定义二维数组的时候,编译器报错:应输入“]”,如下: 原因是宏定义不是C语言规定的语句,它的结尾不加 ; 。在上图的 int mine[EASY_ROWS][EASY_COLS]; 中,把 EASY_ROWS 替换为了 9;2; &…

Typora 以 Github 作为图床使用 PicGo 上传图片

本文简练快速介绍如标题所述的操作流程 文章目录 1.前言1.1 图床简述1.2 Github图床的优缺点1.2.1 优点1.2.2 缺点 2.下载PicGo3.Github访问加速4.用github创建图床服务器4.1 注册4.2 创建仓库 4.3 生成TOKEN令牌5.设置PicGo6.设置Typora7.完成 1.前言 1.1 图床简述 图床&…

车载音频记录

一、车载音频总线 2.8车载音频总线A2B Automotive Audio Bus_a2b总线-CSDN博客 传统的车载音频接口采用的是点对点模式,车身数字音频总线采用环型或者菊花链型总线。 A2B:Automotive Audio Bus 支持串联拓扑,即单个主机最多连接10个…

RedHat8安装Oracle19C

RedHat8安装Oracle19C 1、 更新yum源 更新yum源为阿里云镜像源: # 进入源目录 cd /etc/yum.repos.d/ # 删除 redhat 默认源 rm redhat.repo # 下载阿里云的centos7源 curl -O http://mirrors.aliyun.com/repo/Centos-8.repo # 替换 Centos-8.repo 中的 $releasev…