当前位置: 首页 > news >正文

计算机网络:网络通信相关概念入门

目录

  • 一、网络发展背景
  • 二、理解网络通信
  • 三、理解IP地址
    • 1.简述IP地址
    • 2.IP地址的版本
    • 3.提高地址利用率的技术
  • 四、理解端口
    • 1.简述端口
    • 2.使用端口的原因
  • 五、理解网络通信协议

一、网络发展背景

网络发展背景:

  最初的计算机是单机,那么单机是这样传输数据的:A单机和B单机,在A单机处理完数据后,将装有数据的存储介质交付给B单机,然后B单机读取数据并处理。毫无疑问,这样太麻烦了。
  因此逐步诞生了网络的概念,使用网络来进行数据的传输,大大提升了数据传输的效率。

网络的类型:

  • 局域网:网络覆盖范围在1km之内的网络。
  • 城域网:网络覆盖范围在20km之内的网络。
  • 广域网:网络覆盖范围在20km以上的网络。

  但其实局域网与广域网也只是一个相对的概念,比如整个中国的互联网对于整个世界的互联网来说,也是一个局域网。

二、理解网络通信

  网络通信就是升级版的进程间通信。用QQ聊天来举例,A用户用QQ给B用户发送消息,他们进行的就是网络通信。A用户的主机上有一个QQ进程,B用户的主机上也有一个QQ进程,他们互相发送消息的本质就是A用户的QQ进程和B用户的QQ进程进行通信。因此网络通信就是不同主机间的进程间通信。

三、理解IP地址

1.简述IP地址

  在生活中其实很多时候都可以听到IP地址这个概念,IP地址其实就用来在网络中唯一标识一个主机的,就像是我们的身份证一样。

  在寄快递的时候,我们肯定要知道收货人的地址,不然快递怎么寄。在网络通信中传输数据时,肯定要知道接收方的地址才可以进行数据的发送,不然数据往哪里发呢。

  寄快递时包裹上面不但要有收件人的地址,还要有寄件人的地址。在网络通信中,我们把发送方称为源端接收方称为目的端。每一条数据就相当于一个包裹,数据中自然要包含目的端IP源端IP

  也就是说,IP地址是负责记录这条数据的发送主机和接收主机的,至于谁来记录这条数据是发送主机的哪个进程发送的,是接收主机哪个进程接收的,且看下文。

2.IP地址的版本

 IP地址也是有版本之分的,共两个版本:

  • IPv4:这是早期的IP地址版本,也是使用最多的。
  • IPv6:这是为了扩大地址数量而提出的新版本,目前还没有全面普及。(不兼容IPv4)

 IPv4地址的数据类型:

  • uint32_t:32位无符号整型,也就是说IPv4地址只有32位

 IPv6地址的数据类型:

  • uint8_t ip[16]:这是一个数组类型,数组共16个元素,每个元素的数据类型是8位无符号整型,也就是说IPv6地址的长度是128位

3.提高地址利用率的技术

  之所以推出IPv6地址就是因为IPv4地址不够用了,但是IPv6并不向前兼容IPv4,所以又针对IPv4提出了两项技术来提高地址的利用率。

  1. DHCP:动态地址分配。谁上网就给谁分配IP地址,这样就不会有人一直占用IP地址但不使用,但现在我们的设备基本一直都处于联网状态,所以貌似用处没那么大。
  2. NAT:网络地址转换技术。组建私网的技术,私网中主机对外通信使用的是同一个公网IP地址,这样就节省了大量IP地址。

四、理解端口

1.简述端口

  上面用QQ聊天举例说明了网络通信的本质,这里再对上面内容进行更新。还是以送货为例子,上面已经知道了要把信息从哪里发到哪里,假设是发到爱情公寓,现在包裹到爱情公寓楼下了,快递员小哥看着没有收件人的包裹,陷入了沉思~~~~(当然,没有发货人也是不行的)。想必看到这里也就知道了,咱这条信息还差点东西啊,没收件人怎么行。

  既然快递没有收件人不行,那么网络中的数据没有收件人自然也不行,收件人自然就是目的主机上接收该消息的进程,那么用什么信息在网络数据包中标识要发送给哪个进程呢?那就是端口。

  端口,也就是PORT。端口是一个uint16_t 类型的数据,也就是一个无符号16位整形数据。其实端口在生活中也是挺常见的,因为有时用某个软件的时候,可能会遇到提示:某某端口被占用。那么端口究竟是干啥的?

  端口其实就是用来在一台主机中标识一个进程。一个进程可以同时被多个端口标识,但一个端口只能标识一个进程。

  我们用QQ给其他用户发送数据的时候,发送的数据不仅包含源端IP和目的端IP,也包括了我们自己的QQ进程的端口,以及目的端的QQ进程的端口,也就是说网络通信中的每条数据都包括了源端口和目的端口(发件人和收件人)。

  可以这么理解,IP地址就像是收货人的地址,而端口则表明了一个具体的收货人。通过IP地址知道了要把数据发送给哪个主机,也就是知道了要把快递送到哪个地址。通过端口知道了要把数据发送给主机中具体哪个进程,也就是把快递交给收货人。

2.使用端口的原因

  问题来了,进程不是有pid吗,pid就可以标识一个进程啊,为啥还要用端口来标识?

  还是用QQ聊天来举例,我们发送消息的时候并不是两个用户直接进行数据传输的。A用户和B用户在发送消息时,其实在它们之间还有一个服务器,A用户的消息首先发送给服务器,然后服务器把数据发送给B用户,这才是完整的通信过程。如下图所示

通信流程

那么这个通信流程跟端口有什么关系?

 (1)试想,如果我们使用进程pid来在网络通信中标识进程。A用户和B用户通信的过程中,A用户发送给服务器的数据是不是就包括了A用户QQ进程的pid以及B用户QQ进程的pid(当然还包括了源端IP和目的端IP)。

 (2)然后服务器根据指定的B用户的QQ进程的pid去发送数据。此时如果B用户突然退出QQ,然后重新打开QQ软件并登录,那么是不是就会重新创建pcb,自然就有了新的pid,可是这个新的pid和A用户发送的消息中包含的pid是一样的吗?这个谁也说不准,所以为了避免这种情况,才会使用端口这个东西。

那么A用户发送的消息如何找到服务器呢?

 (1)服务器的端口和IP地址一般都是固定的,并且它固定在我们安装的程序中,所以用户不需要操心这个,程序的安装包里就内置有服务器的IP及端口号。咱们用的应用程序发送数据时,自动就使用了内置的IP和端口作为目的IP和目的端口。

 (2)但是如果服务器迁移了,服务器的IP地址就会变化,我们正在使用的客户端就用不成了,就需要下载新的客户端,新的客户端中会内置新的服务器各项信息。

为什么一个进程可以有多个端口?

  主要还是为了效率。看视频的时候,一个端口接收视频,一个端口接收音频,这样看视频就可以保证音画同步。

五、理解网络通信协议

网络通信协议就是约定,约定在网络通信中数据传输时使用的格式。

为什么要有协议?

(1)这个如果用日常生活中的事情来举例可以理解得非常清楚。一个中国人,一个英国人,如果他们都不懂对方的语言,一个说中文,一个说英文,这咋沟通。

(2)两个人之间说的话其实就是数据,说话的过程其实就是数据传输的过程,中国人说中文使用的是中文的数据格式,英国人说英文使用的是英文的数据格式,他们之间采用的数据格式不同,中国人就接收到英语后,如果按照中文思维进行解析,这解析的是个寂寞~~~~,英国人也是一样道理,因此数据的发送端和目的端一定要采用统一的格式才可以。

(3)因此我们可以规定一种语言,让所有的人都必须用同一种语言进行交流,这样就没有沟通障碍了(也就是大家采用同样的数据格式)。让源端和目的端使用同样的格式进行数据的发送和接收,这样就可以正常通信。这其实就是协议。

相关文章:

计算机网络:网络通信相关概念入门

目录 一、网络发展背景二、理解网络通信三、理解IP地址1.简述IP地址2.IP地址的版本3.提高地址利用率的技术 四、理解端口1.简述端口2.使用端口的原因 五、理解网络通信协议 一、网络发展背景 网络发展背景: 最初的计算机是单机,那么单机是这样传输数据的…...

Spring-2-透彻理解Spring 注解方式创建Bean--IOC

今日目标 学习使用XML配置第三方Bean 掌握纯注解开发定义Bean对象 掌握纯注解开发IOC模式 1. 第三方资源配置管理 说明:以管理DataSource连接池对象为例讲解第三方资源配置管理 1.1 XML管理Druid连接池(第三方Bean)对象【重点】 数据库准备 -- 创建数据库 create …...

LeetCode150道面试经典题--单词规律(简单)

1.题目 给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。 2.示例 pattern"abba" s "c…...

uniapp把城市换成26个字母和城市排序

后端返回的数据 我们要得效果 <template><view><view v-for"(value,key) in cities" :key"key"><view style"color: red;"> {{ key }} </view><view style"border: 1rpx solid black;"><tex…...

Flv格式视频怎么转MP4?视频格式转换方法分享

FLV格式的视频是一种早期的视频格式&#xff0c;不支持更高的分辨率和比特率&#xff0c;这意味着视频的清晰度和质量受限制&#xff0c;无法很好地保留细节和质量&#xff0c;这种格式的视频已经逐渐被更高质量的视频格式所替代&#xff0c;例如MP4格式&#xff0c;不仅具有很…...

Java类与对象详解(3)

目录 封装 封装的概念 访问限定符 封装扩展之包 包的概念 导入包中的类 自定义包 基本规则 包的访问权限控制举例 常见的包 static 成员 static 修饰成员变量 static修饰成员方法 static 成员变量的初始化 代码块 代码块的概念及其分类 普通代码块 构造代码块…...

PMP备考指南来啦!

第一步&#xff1a;通读教材&#xff0c;了解学习内容 在正式开始课程的学习前&#xff0c;可以先快速简单地阅览一遍教材&#xff08;PMBOK&#xff09;&#xff0c;在较短的时间内知道自己将要学习的是什么内容&#xff1b;同时可以标记出难理解的知识点。这样做有以下两个好…...

计算机视觉中的特征检测和描述

一、说明 这篇文章是关于计算机视觉中特征检测和描述概念的简要理解。在其中&#xff0c;我们探讨了它们的定义、常用技术、简单的 python 实现和一些限制。 二、什么是特征检测和描述&#xff1f; 特征检测和描述是计算机视觉中的基本概念&#xff0c;在图像识别、对象跟踪和图…...

【docker】 运行bytetrack 构建映像失败 使用docker删除之前构建的映像

1 Docker删除docker build失败的images docker images | grep "<none>" | awk {print $3} | xargs docker rmi 2 Docker删除启动失败的image docker ps -a | awk {if (length($2) 12){print $1}} | xargs docker rm...

视图矩阵推导

线性代数知识背景 空间中对边向量相等的四边形是平行四边形 视图矩阵推导...

Linux | 隐藏终端并在指定路径下执行命令

文章目录 概述一、定义介绍二、操作教程(一)、编写脚本1.创建脚本2.编写代码(二)、执行脚本1.脚本执行2.自启动执行3.检查和杀死隐藏程序概述 本节详细介绍了如何在Ubuntu18系统下隐藏终端执行命令,同时可以指定命令执行路径。 一、定义介绍 隐藏终端启动其实很简单,只需要在…...

JavaSE_2.1——数组之Arrays工具类

Java提供了一个专门用于操作数组的工具类&#xff0c;即Arrays类&#xff0c;位于Java. util包下【需要导入】。该类提供了一系列方法来操作数组&#xff0c;例如排序、赋值、比较、填充数组 等&#xff0c;用户直接调用这些方法即可【例如&#xff1a;Arrays.sort(数组名)】&a…...

yolov5、YOLOv7、YOLOv8改进:注意力机制CA

目录 1.背景介绍 论文题目&#xff1a;《Coordinate Attention for Efficient Mobile NetWork Design》论文地址&#xff1a; https://arxiv.org/pdf/2103.02907.pdf 2.原理介绍 3.YOLOv5改进&#xff1a; 3.1common中加入下面代码 3.2在yolo.py中注册 3.3添加配置文件 …...

​LeetCode解法汇总617. 合并二叉树

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给你两棵二…...

记vite打包vue项目内存溢出问题解决

出现问题 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory解决方法一&#xff1a; 1.根据网上的资料是通过全局下载npm包increase-memory-limit&#xff1a; npm install -g increase-memory-limit2.在项目目录执…...

【SCI征稿】2区SCI,大数据与遥感技术、图像处理技术、物联网(IoT)技术、传感器网络的结合研究

期刊简介&#xff1a; 【出版社】Elsevier 【影响因子】IF&#xff08;2022&#xff09;&#xff1a;3.0-4.0 【期刊分区】JCR2区&#xff0c;中科院4区 【检索情况】SCIE 在检&#xff0c;正刊 【参考周期】期刊部系统内提交&#xff0c;预计3个月左右录用&#xff0c;走…...

java_基础语法及用法

文章目录 一、java基础1.1 JAVAEE的13个规范 二、java基础语法2.1 final2.2 static2.3 异常 三、java基础用法3.1 时间格式化3.2 java计时 一、java基础 1.1 JAVAEE的13个规范 JAVA EE的十三种规范 二、java基础语法 2.1 final 1.被final修饰的类不可以被继承 2.被final修…...

C# WPF 开源主题 HandyControl 的使用(一)

HandyControl是一套WPF控件库&#xff0c;它几乎重写了所有原生样式&#xff0c;同时包含80余款自定义控件&#xff08;正逐步增加&#xff09;&#xff0c;下面我们开始使用。 1、准备 1.1 创建项目 C# WPF应用(.NET Framework)创建项目 1.2 添加包 1.3 在App.xaml中引用…...

探索ES高可用:滴滴自研跨数据中心复制技术详解

Elasticsearch 是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎&#xff0c;其每个字段均可被索引&#xff0c;且能够横向扩展至数以百计的服务器存储以及处理TB级的数据&#xff0c;其可以在极短的时间内存储、搜索和分析大量的数据。 滴滴ES发展至今&#xf…...

指针---进阶篇(二)

指针---进阶篇&#xff08;二&#xff09; 前言一、函数指针1.抛砖引玉2.如何判断函数指针&#xff1f;&#xff08;方法总结&#xff09; 二、函数指针数组1.什么是函数指针数组&#xff1f;2.讲解函数指针数组3.模拟计算器&#xff1a;讲解函数指针数组 三、指向函数指针数组…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...