计算机网络基础概念解释

news2024/11/23 20:59:32

 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.coloradmin.cn/o/1400814.html

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

相关文章

Rockchip linux USB 驱动开发

Linux USB 驱动架构 Linux USB 协议栈是一个分层的架构,如下图 5-1 所示,左边是 USB Device 驱动,右边是 USB Host 驱动,最底层是 Rockchip 系列芯片不同 USB 控制器和 PHY 的驱动。 Linux USB 驱动架构 USB PHY 驱动开发 USB 2…

新买电脑配置不低却卡顿?

目录 前言: 电脑卡顿的原因 Windows 10必做的系统优化 禁用 IP Helper 关闭系统通知 机械硬盘开启优化驱动器功能 开启存储感知 前言: 新买的电脑配置不低,但却卡顿甚至程序不反应,这是怎么回事儿? 其实并不…

139基于matlab多旅行商MTSP问题

基于matlab多旅行商MTSP问题,利用遗传算法求解多旅行商问题的算法设计,输出MTSP路径。相互独立路径,同一起点路径。程序已调通,可直接运行。 139 matlab多旅行熵M-TSP (xiaohongshu.com)https://www.xiaohongshu.com/explore/65ab…

【蓝桥杯日记】复盘第一篇——顺序结构

🚀前言 本期是一篇关于顺序结构的题目的复盘,通过复盘基础知识,进而把基础知识学习牢固!通过例题而进行复习基础知识。 🚩目录 前言 1.字符三角形 分析: 知识点: 代码如下 2. 字母转换 题目分析: 知…

最通俗易懂的JVM内存管理与对象创建原理

前言 对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要像 C/C程序为每一个new操作去写配对 的delete/free代码,不容易出现内存泄漏和内存溢出问题。也正是因为Java程序员把控制内存的权力交给了Java虚拟机,一旦出现…

链表|数据结构|C语言深入学习

什么是链表 离散,就是“分离的、散开的” 链表是什么样子的: 有限个节点离散分配 彼此间通过指针相连 除了首尾节点,每个节点都只有一个前驱节点和一个后继节点 首节点没有前驱结点,尾节点没有后继节点 基本概念术语&#xf…

【Docker】未来已来 | Docker技术在云计算、边缘计算领域的应用前景

欢迎来到英杰社区: https://bbs.csdn.net/topics/617804998 欢迎来到阿Q社区: https://bbs.csdn.net/topics/617897397 📕作者简介:热爱跑步的恒川,致力于C/C、Java、Python等多编程语言,热爱跑步&#xff…

【网络安全】-入门版

secure 一、基本工具1、metasploit framework ps.本着兴趣爱好,加强电脑的安全防护能力,并严格遵守法律和道德规范。一、基本工具 1、metasploit framework msf(metasploit framework)是一个开源的渗透测试框架,用于…

AI 的未来是开源的

想象一下,在未来,人工智能不会被锁在公司的金库里,而是由全球创新者社区一砖一瓦地在开放中构建的。协作,而不是竞争,推动进步,道德考虑与原始绩效同等重要。这不是科幻小说,而是人工智能发展核…

竞赛保研 机器视觉人体跌倒检测系统 - opencv python

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 机器视觉人体跌倒检测系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数&…

如何在Servlet中获取请求参数的值

看看这个大佬做的动图吧! 在Servlet中,你可以使用HttpServletRequest对象来获取请求参数的值。HttpServletRequest对象提供了一些方法,允许你访问从客户端发送的请求信息。以下是一些获取请求参数的常用方法: getParameter(String…

伊恩·斯图尔特《改变世界的17个方程》傅里叶变换笔记

主要是课堂的补充(yysy,我觉得课堂的教育模式真有够无聊的,PPT、写作业、考试,感受不到知识的魅力。 它告诉我们什么? 空间和时间中的任何模式都可以被看作不同频率的正弦模式的叠加。 为什么重要? 频率分量…

this.$set的用法

作用: 在data里面绑定的数据具有响应式的效果,也就是我们说的V-Model 数据更新视图,视图也能更新数据,如果不是data里面的数据如何添加响应式呢? this.$Set这个方法能够实现 用法: this.$Set(要添加的对象,要添加的属性’,要添…

20240121----重返学习-`nginx/conf/nginx.conf`的动静分离-单ip地址双服务器资源-最简配置说明

20240113----重返学习-nginx/conf/nginx.conf的多虚拟主机配置最简配置说明 文件说明 单ip地址双服务器资源配置 单个完整的静态项目 192.168.44.101上的配置文件: worker_processes 1; #工作进程个数;一般对应CPU内核对应一个worker_processes;太多反而让效率变差;even…

App 设计工具中的回调

目录 创建回调函数 回调函数编程 回调输入参数 在回调函数之间共享数据 在多个组件之间共享回调 以编程方式创建和分配回调 在代码中搜索回调 更改回调或断开与回调的连接 删除回调 示例:具有滑块回调的 App 回调是在用户与 App 中的 UI 组件交互时执行的…

数据结构之树和二叉树定义

数据结构之树和二叉树定义 1、树的定义2、树的基本概念3、二叉树的定义 数据结构是程序设计的重要基础,它所讨论的内容和技术对从事软件项目的开发有重要作用。学习数据结构要达到的目标是学会从问题出发,分析和研究计算机加工的数据的特性,以…

基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖微信小程序端(十三)

地址簿相关功能 1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.1.3 表设计 1.2 代码实现1.2.1 Mapper层1.2.2 Service层1.2.3 Controller层 1.1 需求分析和设计 1.1.1 产品原型 地址簿,指的是消费者用户的地址信息,用户登录成功后可以维护自己的地…

a-table 边框颜色修改

案例&#xff1a; <template><div class"mod_table"><a-table :columns"columns":data-source"data" bordered:pagination"false"></a-table></div> </template> <script> export default…

sshpass的安装与使用

一.简介 1.定义&#xff1a; ssh 登陆不能在命令行中指定密码&#xff0c;sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码&#xff0c;然后直接登录远程服务器&#xff0c;它支持密码从命令行、文件、环境变量中读取。 2.使用 sshpass 原因 使用 sshpass…

代码随想录 Leetcode20. 有效的括号

题目&#xff1a; 代码(首刷自解 2024年1月21日&#xff09;&#xff1a; class Solution {bool check(char ch1,char ch2) {if(ch1 ) && ch2 ! () return true;else if(ch1 ] && ch2 ! [) return true;else if(ch1 } && ch2 ! {) return true;els…