计算机网络基础概念解释

 1. 什么是网络

随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,于是有了网络互连。
网络互连:将多台计算机连接在⼀起,完成数据共享。
数据共享本质是网络数据传输,即计算机之间通过网络来传输数据,也称为网络通信。
根据网络互连的规模不同,可以划分为局域网和广域网。

1.1 局域网 

局域网(Local Area Network,简称LAN)是指在一个小范围内,例如学校、企业或家庭中的计算机和其他网络设备通过高速传输媒介连接起来的计算机网络。局域网内的主机之间能⽅便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的。

局域网的组成方式:

  1. 基于网线直连:
    基于网线直连是一种简单的局域网组建方式,只需要将计算机和其他设备通过网线直接连接在一起。这种方式适合小型局域网,例如家庭或小办公室环境。每个设备都可以直接与其他设备进行通信和数据传输。
  2. 基于集线器组建:
    基于集线器组建的局域网使用一个集线器(Hub)作为中心节点,将所有计算机和其他设备连接在一起。集线器接收到的数据包会被广播给所有连接的设备。这种方式适用于较小规模的局域网,但由于数据包的广播特性,可能会影响网络性能。
  3. 基于交换机组建:
    基于交换机组建的局域网使用交换机(Switch)作为中心节点,将所有计算机和其他设备连接在一起。交换机具有智能的数据包转发功能,可以根据设备的MAC地址来选择性地将数据包转发给目标设备。相比集线器,交换机能够提供更高的网络性能和较低的冲突率。
  4. 基于交换机和路由器组建:
    基于交换机和路由器组建的局域网结构更为复杂,但也更加灵活和可扩展。交换机用于连接局域网内的设备,而路由器(Router)则用于连接不同的局域网或连接到广域网。通过路由器,不同的局域网可以相互通信和共享资源。这种方式适用于大型企业、学校等需要多个局域网之间进行联网的场景。

 名词解释:

  1. 集线器(Hub):
    集线器是一种被动式网络设备,可以连接多个计算机或其他网络设备。当一个设备向集线器发送数据时,集线器会将这个数据包广播到所有连接在它上面的设备,每个设备都需要检查MAC地址来判断数据包是否属于自己。由于集线器采用广播方式传输数据,因此可能会出现数据冲突和重复,影响网络性能。
  2. 交换机(Switch):
    交换机是一种智能型网络设备,可以连接多个计算机或其他网络设备,并且能够根据MAC地址来选择性地将数据包转发给目标设备。交换机采用单播方式传输数据,只有目标设备能够接收到数据包,避免了数据冲突和重复,提高了网络性能。交换机还可以实现虚拟局域网(VLAN)等高级网络功能。
  3. 路由器(Router):
    路由器是一种网络设备,用于连接不同的局域网或连接到广域网。路由器可以根据IP地址来选择最佳的数据传输路径,实现不同网络之间的通信和资源共享。路由器还可以实现端口转发、网络地址转换(NAT)等高级网络功能。

1.2 广域网 

广域网(Wide Area Network,简称WAN)通过路由器,将多个局域网连接起来,在物理上组成很⼤范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

2. IP地址与端口号

网络互连的目的是进行网络通信,也即是网络数据传输,更具体⼀点,是网络主机中的不同进程间,基于网络传输数据。
那么,在组建的网络中,如何判断到底是从哪台主机,将数据传输到那台主机呢?这就需要使用IP地址来标识。

IP地址: IP地址是互联网中用于标识主机(计算机或其他网络设备)的唯一数字标识符。它由32位或128位二进制数组成,用点分十进制表示(IPv4)或用冒号分隔的十六进制表示(IPv6)。IP地址的作用是在网络中准确定位并寻找目标主机。

端口号: 端口号是一种用于标识特定应用程序或服务的数字标识符。它是一个16位的整数,范围从0到65535,被分为三个范围:知名端口(0-1023),注册端口(1024-49151)和动态/私有端口(49152-65535)。通过端口号,计算机可以将接收到的数据包交给正确的应用程序或进程。

3. 协议

有了IP地址和端口号,可以定位到网络中唯⼀的⼀个进程,但还存在⼀个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?网络通信传输的数据类型可能有多种:图片,视频,文本等。同⼀个类型的数据,格式可能也不同,如发送⼀个文本字符串“好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?基于网络数据传输,需要使用协议来规定双方的数据格式。

3.1 概念 

协议,网络协议的简称,网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的⼀组约定、规则。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。协议(protocol)最终体现为在网络上传输的数据包的格式。

3.2 协议分层

协议分层是指将计算机网络通信过程划分为若干个层次,每个层次负责不同的功能,各层之间通过协议进行交互和传输,最终完成数据的传输和接收。协议分层的主要作用包括以下几点:

  1. 简化网络设计和管理:通过将网络通信过程划分为多个层次,可以将网络复杂度降低为多个简单的组件,便于网络的设计、实现和管理。
  2. 促进协议的标准化:每个层次负责不同的功能,不同层次的协议可以独立地设计和优化,有助于促进协议的标准化和统一。
  3. 提高网络的可靠性和性能:通过分层设计,可以使网络设备不同层次之间的交互更加清晰和明确,有助于提高网络的可靠性和性能。
  4. 支持灵活的网络架构:协议分层可以支持不同类型的网络架构,例如星型网络、环形网络、网状网络等,使网络更加灵活和可扩展。

3.3 OSI七层模型

 OSI(Open Systems Interconnection)七层模型是国际标准化组织(ISO)制定的通信协议参考模型,用于描述计算机网络中不同层次之间的功能和交互关系。该模型将计算机网络通信过程划分为七个层次,每个层次负责不同的功能。以下是对每个层次的详细介绍:

  1. 应用层(Application Layer):
    功能:为用户提供网络服务和应用程序接口。
    特点:包括各种应用协议(如HTTP、FTP、SMTP等),实现用户与网络之间的交互。
  2. 表示层(Presentation Layer):
    功能:处理数据的格式和表示,实现数据的加密、压缩和转换。
    特点:提供数据格式转换、数据加密和数据压缩等功能。
  3. 会话层(Session Layer):
    功能:建立、管理和终止会话,实现进程之间的通信和同步。
    特点:提供会话控制、对话管理和同步点等。
  4. 传输层(Transport Layer):
    功能:提供端到端的可靠数据传输和错误恢复机制。
    特点:定义了传输协议(如TCP和UDP),实现数据分段、流量控制和拥塞控制。
  5. 网络层(Network Layer):
    功能:实现不同网络之间的数据传输和路由选择。
    特点:通过IP地址标识设备和网络,使用路由算法选择最佳路径进行数据传输。
  6. 数据链路层(Data Link Layer):
    功能:提供可靠的数据传输,将比特流划分为数据帧,并进行差错检测和纠正。
    特点:定义了数据帧的结构、物理地址(MAC地址)和帧同步等。
  7. 物理层(Physical Layer):
    功能:负责传输比特流,通过物理介质传输数据。
    特点:定义了物理接口的标准和电气特性,例如传输速率、电压等。

OSI七层模型提供了一个通用的框架,可以帮助理解和设计计算机网络中不同层次的功能和交互关系。每个层次都有自己独特的责任和功能,通过协议在不同层次之间进行交互和传输,最终完成数据的传输和应用。 

3.4 TCP/IP 五层模型

OSI七层模型既复杂又不实用,所以OSI七层模型没有落地、实现。实际组建网络时,只是以OSI七层模型设计中的部分分层,即TCP/IP五层模型来实现。
 

TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。
TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的网络来完成自己的需求。

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

⽹络设备所在分层:

  • 对于⼀台主机,它的操作系统内核实现了从传输层到物理层的内容,也即是TCP/IP五层模型的四层;
  • 对于⼀台路由器,它实现了从⽹络层到物理层,也即是TCP/IP五层模型的下三层。
  • 对于⼀台交换机,它实现了从数据链路层到物理层,也即是TCP/IP五层模型的下两层。
  • 对于集线器,它只实现了物理层。

注意我们这里说的是传统意义上的交换机和路由器,也称为二层交换机(工作在TCP/IP五层模型的下两层)、三层路由器(工作在TCP/IP五层模型的下三层)。
随着现在网络设备技术的不断发展,也出现了很多三层或四层交换机、四层路由器。我们以下说的网络设备都是传统意义上的交换机和路由器。

3.5 封装和分用

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理。

接下来简单模拟一下数据的封装分用的过程:

假设场景:A 通过 QQ 给 B 发送了一个hello

1. 应用层:

QQ接收到A输入的hello,就会把这个字符串按照构QQ内部的应用层协议造成一个应用层的数据包,这个数据包的格式就是这个协议约定好了的。(应用层的协议往往是程序员自己定义的)
现在我们假设这个格式为:发送方QQ号;接收方QQ号;发送时间;发送内容。
于是就可以构造出数据包:1234;5678;2024/01/20 15:20;hello
接下来应用程序就会调用操作系统提供的API把这个数据交给传输层。

2. 传输层:
传输层会把接收到的数据包,看作一个整体再构造成一个传输层的数据包。传输层涉及到的主要协议有 TCP和UDP(后续会详细说明),这里假定使用UDP来通信,这里就会构成一个UDP的数据包。

​编辑

UDP报头提供了源端口号,目的端口号,长度,校验等重要信息。
构建好数据包之后,就会调用下一层协议即网络层提供的API把这个数据包交给网络层了。

3. 网络层

网络层的核心协议是IP协议
同样的,这里以IP协议,再把接收到的数据包整体作为一个载荷,拼接上IP协议的报头,构造成 IP数据包。 ​编辑

IP报头中包含了源IP地址和目的IP地址,用于唯一标识数据的发送方和接收方
然后IP协议调用数据链路层的API把数据交给数据链路层。

4. 数据链路层

数据链路层涉及到的核心协议是 以太网

这里会把接收到的数据包看作整体拼接上一个帧头和帧尾,构成一个以太网数据帧。 ​编辑

最后把这个数据帧交给物理层

5. 物理层

把以太网数据帧的二进制信号转换为 光信号/电信号/电磁波 发送出去

不考虑中间过程,假设B的网卡已经接收到了数据,这个数据需要处理后才能呈现出来,这个处理的过程就叫分用。

1. B的物理层接收到了光信号/电信号/电磁波,就会把这些数据转为数字信号,(二进制)得到一个以太网数据帧,进一步把这个数据帧交给数据链路层处理

2. 数据链路层按照以太网数据包的格式解析出其中的载荷,再交给上层协议,即网络层

3. 网络层同样按照IP协议的格式进行解析,取出载荷再交给上层协议

4.传输层同样按照UDP协议解析出载荷交给应用层

5.应用层就按照内部的协议解析出了数据,在B的聊天窗口中弹出消息和时间

分用的过程就是封装的逆向过程

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GPT科研应用与AI绘图及论文高效写作

详情点击链接:GPT科研应用与AI绘图及论文高效写作 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析,AI画图,图像识别,文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Claude2二定制自己…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (三)

论文阅读笔记AI篇 —— Transformer模型理论实战 (三) 第三遍阅读(精读)3.1 Attention和Self-Attention的区别?3.2 Transformer是如何进行堆叠的?3.3 如何理解Positional Encoding?3.x 文章涉及…

常用电子器件学习——MOS管

MOS管介绍 MOS,是MOSFET的缩写。MOSFET 金属-氧化物半导体场效应晶体管,简称金氧半场效晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor, MOSFET)。 一般是金属(metal)—氧化物(oxide)—半导体(semiconductor)场效应晶…

【Unity学习笔记】Unity TestRunner使用

转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/135733479 作者:CSDN|Ringleader| 参考: Input testingGetting started with Unity Test FrameworkHowToRunUnityUnitTest如果对Unity的newInputSystem感…

qnx 上screen + egl + opengles 最简实例

文章目录 前言一、qnx 上的窗口系统——screen二、screen + egl + opengles 最简实例1.使用 addvariant 命令创建工程目录2. 添加源码文件3. common.mk 文件4. 编译与执行总结参考资料前言 本文主要介绍如何在QNX 系统上使用egl和opengles 控制GPU渲染一个三角形并显示到屏幕上…

【Flink-CDC】Flink CDC 介绍和原理概述

【Flink-CDC】Flink CDC 介绍和原理概述 1)基于查询的 CDC 和基于日志的 CDC2)Flink CDC3)Flink CDC原理简述4)基于 Flink SQL CDC 的数据同步方案实践4.1.案例 1 : Flink SQL CDC JDBC Connector4.2.案例 2 : CDC Streaming ETL…

threejs学习

重要概念(场景、相机、渲染器) 如下图所示,我们最终看到浏览器上生成的内容是通过虚拟场景和虚拟相机被渲染器渲染后的结果,下面首先介绍这三个概念,将贯穿所有简单复杂的threejs项目。 场景 Scene 虚拟的3D场景&a…

Linux中文件属性的获取(stat、chmod、Istat、fstat函数的使用)

修改文件权限 函数如下&#xff1a; chmod/fchmod函数用来修改文件的访问权限: #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); 成功时返回0&#xff1b;出错时返回EOF 注意&#xff1a;在vmware和windows共享的文…

【2024-01-22】某极验3流程分析-滑块验证码

声明&#xff1a;该专栏涉及的所有案例均为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;如有侵权&#xff0c;请私信联系本人删帖&#xff01; 文章目录 一、前言二、抓包流程分析1.刷新页面2.点击按钮进行验证…

PyTorch各种损失函数解析:深度学习模型优化的关键(2)

目录 详解pytorch中各种Loss functions mse_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示 margin_ranking_loss 用途 用法 使用技巧 注意事项 参数 数学理论公式 代码演示 multilabel_margin_loss 用途 用法 使用技巧 注意事项 参数 …

代码随想录第十五天| ● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉树

文章目录 层序遍历102. 二叉树的层序遍历思路一&#xff1a;递归思路二&#xff1a;层序遍历-迭代-借助队列 107. 二叉树的层序遍历 II思路&#xff1a;层序遍历后翻转数组result即可 199.二叉树的右视图思路&#xff1a;通过list数组储存每一层末尾值 637.二叉树的层平均值思路…

class_10:this关键字

this关键字是指向调用对象的指针 #include <iostream> #include <iostream> using namespace std;class Car{ public://成员数据string brand; //品牌int year; //年限//构造函数名与类名相同Car(string brand,int year){cout<<"构造函数中&#…

Element中的el-input-number+SpringBoot+mysql

1、编写模板 <el-form ref"form" label-width"100px"><el-form-item label"商品id&#xff1a;"><el-input v-model"id" disabled></el-input></el-form-item><el-form-item label"商品名称&a…

【Web前端开发基础】前端基础布局之百分比布局、flex布局

前端基础布局 目录 前端基础布局布局简介盒模型1. 标准盒模型2. 怪异盒模型3. 解决方案4. 代码示例 常见的布局单位百分比布局flex布局一、Flex布局是什么&#xff1f;二、基本概念三、容器属性flex-direction属性&#xff1a;决定主轴的方向&#xff08;即项目的排列方向&…

【数据结构】链表(单链表与双链表实现+原理+源码)

博主介绍&#xff1a;✌全网粉丝喜爱、前后端领域优质创作者、本质互联网精神、坚持优质作品共享、掘金/腾讯云/阿里云等平台优质作者、擅长前后端项目开发和毕业项目实战✌有需要可以联系作者我哦&#xff01; &#x1f345;附上相关C语言版源码讲解&#x1f345; &#x1f44…

开始学习Vue2(组件的生命周期和数据共享)

一、组件的生命周期 1. 生命周期 & 生命周期函数 生命周期&#xff08;Life Cycle&#xff09;是指一个组件从创建 -> 运行 -> 销毁的整个阶段&#xff0c;强调的是一个时间段。 生命周期函数&#xff1a;是由 vue 框架提供的内置函数&#xff0c;会伴随着 组件…

2024/1/24HTML学习:路径

路径 3.2.1路径的介绍 加载图片&#xff0c;需要找到对应的图片。 通过一定的路径 路径分两种 绝对路径&#xff08;了解&#xff09;相对路径&#xff08;常用&#xff09; 绝对路径&#xff1a;绝对位置&#xff0c;从盘符开始的路径 1.盘符开头D:\....................…

java开发——《并发编程》

目录 一.jmm 二.并发了什么 1.只有一个核&#xff08;单核&#xff09;并发还有没有意义 2.单核&#xff0c;还有什么可见性问题 3.并发和并行 三.volitaile 1.变量的可见性问题 2.原因是什么 3.本次修改的变量直接刷到主内存 4.声明其他内存对于这个地址的缓存无效 …

Addressables(2) ResourceLocation和AssetReference

IResourceLocation var op Addressables.LoadResourceLocationsAsync(key); var result op.WaitForCompletion(); 把加载的Key塞进去&#xff0c;不难看出&#xff0c;IResourceLocation可以用来获得资源的详细信息 很适合用于更新分析&#xff0c;或者一些检查工具 AssetR…

RabbitMQ中交换机的应用及原理,案例的实现

目录 一、介绍 1. 概述 2. 作用及优势 3. 工作原理 二、交换机Exchange 1. Direct 2. Topic 3. Fanout 三、代码案例 消费者代码 1. 直连direct 生产者代码 测试 2. 主题topic 生产者代码 测试 3. 扇形fanout 生产者代码 测试 每篇一获 一、介绍 1. …