计算机网络基础概念解释

 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的聊天窗口中弹出消息和时间

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JRT集中打印

之前一直在夯实基础,现在是补demo的时段了。了解过检验集中打印的人知道,集中打印的逻辑有多复杂。既要考虑普通检验报告加上换页。又要考虑微生物报告加上换页,既有A5的报告,也有A4的报告,还要考虑A4打印两个组装A5时…

小程序学习-21

目前小程序分包大小有以下限制: 整个小程序所有分包大小不超过 20M单个分包/主包大小不能超过 2M 独立分包:"independent": true

书生·浦语大模型实战营-学习笔记5

LMDeploy 大模型量化部署实践 大模型部署背景 LMDeploy简介 轻量化、推理引擎、服务 核心功能-量化 显存消耗变少了 大语言模型是典型的访存密集型任务,因为它是decoder-by-decoder 先把数据量化为INT4存起来,算的时候会反量化为FP16 AWQ算法&a…

windows资源管理器占用过高CPU的问题

最近,笔者的电脑在进行文件操作时变得异常的卡顿,打开任务管理器发现windows资源管理器占用了50%-80%的CPU。这里指的文件操作包括但不限于解压,复制,粘贴,甚至重命名一个文件夹都会引起50%的CPU占用。起初笔者认为可能…

缓解Spring Core的“Spring4Shell”零日漏洞

一、概述 2022年3月30日,安全社区广泛注意到Spring(一种流行的开源Java框架)爆出的一个漏洞。Akamai自适应安全引擎第一时间检测到基于该漏洞发起的零日攻击,为Akamai客户提供了保护。 该漏洞的披露时间线以及其他通过非正式方式…

docker报错 missing signature key 无法拉去镜像,yum install docker-ce没有可用软件包 解决办法

错误场景描述 今天项目需要用到minio,我打算在虚拟机中使用docker装一个,可是发现当我docker pull minio/minio的时候,报错了missing signature key 这个报错提示的让人很蒙,翻译过来的意思是 “缺少签名密钥” ?&am…

大小鼠行为刺激-ZL-034B大小鼠跳台仪/多通道跳台记录仪

小鼠跳台实验是一种常用的学习记忆实验方法,它基于条件反射原理,通过观察小鼠在电栅和平台之间跳跃的行为,来研究药物对学习和记忆过程的影响。它适用于各种增智健脑、提高记忆、抗衰老药物和保健品筛选、开发研制。它是初筛药物的理想工具&a…

完美调试android-goldfish(linux kernel) aarch64的方法

环境要求 Mac m1Mac m1 中 虚拟机安装aarch64 ubuntu22.02Mac m1安装OrbStack,并在其中安装 ubuntu20.04(x86_64) 构建文件系统 在虚拟机 aarch64 ubuntu22.02中构建 安装必要的库 sudo apt-get install libncurses5-dev build-essenti…

C++ | 六、栈 Stack、队列 Queue

栈的基础知识 栈&#xff08;stack&#xff09;是一种数据结构&#xff0c;在C中属于STL&#xff08;标准库&#xff09;特点&#xff1a;先进后出 栈的使用&#xff1a; 一、引入头文件<stack>二、创建栈变量&#xff08;类似容器、集合的创建方式&#xff09;&#xf…

前端项目对接protobufjs的时候,踩坑总结

Protobuf&#xff08;Protocol Buffers&#xff09;是一种用于序列化结构化数据的语言无关、平台无关、可扩展的机制。在JS/TS项目中&#xff0c;使用WebSocket与Protobuf可以实现高效的通信和数据传输。protobufjs官方仓库:https://github.com/protobufjs/protobuf.js 安装pro…

户用光伏市场前景如何?

户用光伏市场前景广阔&#xff0c;随着人们对环保和能源利用的关注度不断提高&#xff0c;家庭光伏发电系统也越来越受到欢迎。国家对新能源的支持力度不断加大&#xff0c;政策扶持、电价补贴等措施进一步推动了户用光伏的发展。同时&#xff0c;技术的不断创新和产业链的日益…

在 Linux 上搭建 Java 环境

目录 一、安装jdk 1. 挑选 jdk 版本 2. 安装 3. 验证 jdk 二、安装tomcat 1. 下载压缩包 2. 上传压缩包给 Linux &#xff08;需要用到 rz 命令&#xff09; 3. 解压压缩包&#xff08;需要用到 unzip&#xff09; 4. 进入 bin 目录 5. 给启动脚本增加可执行权限 6. 启…

关于 GPT,你知道多少?

GPT GPT&#xff0c;全称为Generative Pre-Trained Transformer&#xff08;生成式预训练Transformer模型&#xff09;&#xff0c;是一种基于互联网的、可用数据来训练的、文本生成的深度学习模型。GPT的目标是生成自然语言文本&#xff0c;并能够通过机器学习算法进行自我改…

51单片机-电子密码锁

实物演示效果&#xff1a; https://www.bilibili.com/video/BV1xh4y1K7uV/?vd_source6ff7cd03af95cd504b60511ef9373a1d 电子密码锁的主要功能 1.按键设置6位密码&#xff0c;输入密码若密码正确&#xff0c;则锁打开。显示open&#xff01; 2.密码可以自己修改&#xff0…

最新热门商用GPT4.0带MJ绘画去授权版本自定义三方接口(开心版)

一台VPS 搭建宝塔 解析域名 上传程序至根目录 访问首页在线安装配置数据库 PHP版本选择:7.3 安装完成后访问网站首页即可&#xff01; 配置APIKEY&#xff0c;登录网站后台自定义配置&#xff0c;不然网站无法使用&#xff01; 网站后台地址/admin 默认账号:admin 密码…

32、WEB攻防——通用漏洞文件上传二次渲染.htaccess变异免杀

文章目录 一、点过滤二、文件删除三、二次渲染四、.htaccess五、过滤php关键函数 一、点过滤 不能写带文件后缀的文件名&#xff1b;IP转数字 二、文件删除 文件依据规则进行删除&#xff0c;删除有两种删除的类型&#xff1a; 什么文件都删除&#xff0c;条件竞争进行绕过…

【CentOS】Linux 在线帮助文档命令:help、man 命令与文档汉化

目录 1、Linux 的命令行模式 2、help 命令 3、man 命令 4、man 命令输出文档汉化 注&#xff1a;本文档使用 Linux 版本为 CentOS 7.9 [swadianlocalhost ~]$ cat /etc/centos-release CentOS Linux release 7.9.2009 (Core) 1、Linux 的命令行模式 一般情况下&#xff0…

鸿蒙应用开发学习:获取手机位置信息

一、前言 移动应用中经常需要获取设备的位置信息&#xff0c;因此在鸿蒙应用开发学习中&#xff0c;如何获取手机的位置信息是必修课。之前我想偷懒从别人那里复制黏贴代码&#xff0c;于是在百度上搜了一下&#xff0c;可能是我输入的关键字不对&#xff0c;结果没有找到想要…

【云原生】初识Docker,安装以及了解操作命令

一、为什么要使用容器&#xff1f; 背景&#xff1a;以前开发、测试、生产为不同的环境&#xff0c;痛点是发现开发测试以后没问题&#xff0c;但是在生产环境无法运行。给测试、开发、运维人员造成了大量的工作。最终结果是发版更新速度也跟不上&#xff0c;效率低 我认为使…

java SSM自助快递服务平台myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM自助快递服务平台是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…