计算机网络:网络通信相关概念入门
目录
- 一、网络发展背景
- 二、理解网络通信
- 三、理解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提出了两项技术来提高地址的利用率。
- DHCP:动态地址分配。谁上网就给谁分配IP地址,这样就不会有人一直占用IP地址但不使用,但现在我们的设备基本一直都处于联网状态,所以貌似用处没那么大。
- 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格式的视频是一种早期的视频格式,不支持更高的分辨率和比特率,这意味着视频的清晰度和质量受限制,无法很好地保留细节和质量,这种格式的视频已经逐渐被更高质量的视频格式所替代,例如MP4格式,不仅具有很…...

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

PMP备考指南来啦!
第一步:通读教材,了解学习内容 在正式开始课程的学习前,可以先快速简单地阅览一遍教材(PMBOK),在较短的时间内知道自己将要学习的是什么内容;同时可以标记出难理解的知识点。这样做有以下两个好…...

计算机视觉中的特征检测和描述
一、说明 这篇文章是关于计算机视觉中特征检测和描述概念的简要理解。在其中,我们探讨了它们的定义、常用技术、简单的 python 实现和一些限制。 二、什么是特征检测和描述? 特征检测和描述是计算机视觉中的基本概念,在图像识别、对象跟踪和图…...
【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提供了一个专门用于操作数组的工具类,即Arrays类,位于Java. util包下【需要导入】。该类提供了一系列方法来操作数组,例如排序、赋值、比较、填充数组 等,用户直接调用这些方法即可【例如:Arrays.sort(数组名)】&a…...

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

LeetCode解法汇总617. 合并二叉树
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你两棵二…...
记vite打包vue项目内存溢出问题解决
出现问题 FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory解决方法一: 1.根据网上的资料是通过全局下载npm包increase-memory-limit: npm install -g increase-memory-limit2.在项目目录执…...
【SCI征稿】2区SCI,大数据与遥感技术、图像处理技术、物联网(IoT)技术、传感器网络的结合研究
期刊简介: 【出版社】Elsevier 【影响因子】IF(2022):3.0-4.0 【期刊分区】JCR2区,中科院4区 【检索情况】SCIE 在检,正刊 【参考周期】期刊部系统内提交,预计3个月左右录用,走…...
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控件库,它几乎重写了所有原生样式,同时包含80余款自定义控件(正逐步增加),下面我们开始使用。 1、准备 1.1 创建项目 C# WPF应用(.NET Framework)创建项目 1.2 添加包 1.3 在App.xaml中引用…...

探索ES高可用:滴滴自研跨数据中心复制技术详解
Elasticsearch 是一个基于Lucene构建的开源、分布式、RESTful接口的全文搜索引擎,其每个字段均可被索引,且能够横向扩展至数以百计的服务器存储以及处理TB级的数据,其可以在极短的时间内存储、搜索和分析大量的数据。 滴滴ES发展至今…...

指针---进阶篇(二)
指针---进阶篇(二) 前言一、函数指针1.抛砖引玉2.如何判断函数指针?(方法总结) 二、函数指针数组1.什么是函数指针数组?2.讲解函数指针数组3.模拟计算器:讲解函数指针数组 三、指向函数指针数组…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...