网络编程基础知识总结——IP,端口,协议
目录
1. 什么是网络编程?
2. 网络编程的三要素
3. IP
3.1 IP地址的概念
3.2 IP地址的分类
3.3 IPv4解析
3.4 Ipv6解析
4. IPv4 的使用细节
5. 特殊IP地址
4. 端口号
5. 协议
5.1 UDP协议
5.2 TCP协议
1. 什么是网络编程?
总的来说就是一句话,在网络通信协议下,不同计算机上运行的程序,进行数据传输。
之前我们编写代码,都是编写单体项目,在自己的电脑上运行,数据在本机前后端互相传输,不需要通过网络传输给别人。而在实际业务开发时,我们都是网络编程,微服务架构下会有多台服务器,服务器与服务器之间要进行数据通信,都是通过网络传输。
再者,我们网上与亲朋好友聊天,打游戏,向别人发送邮件,都是自己的计算机与别人的计算机之间的数据传输,都需要用到我们的网络编程。
2. 网络编程的三要素
大家思考一下,一台电脑像另一台电脑传输数据,需要知道那些参数呢?
OK,我直接来说吧。
(1)IP地址:一个设备向另一个设备发送信息,(因为数据传输不只有电脑,平板,手表,手机也可以进行数据传输,说以这里不说是电脑而说设备)。首先,肯定是要知道另一台设备的IP地址,每台设备的 IP 地址都是独一无二的,世界上有那么多的设备,我们就是通过设备的 IP 地址来确定你要向哪台设备发送数据的;
(2)端口号:既然知道了要发送的电脑是哪一台,我们还需要知道端口号,因为发送数据通常都是一个软件中的数据,每个软件APP在一台电脑上都绑定这一个端口,一个软件只能绑定一个端口,通过电脑的端口我们就可以确定要把数据传输给电脑上的哪个软件;
(3)协议(传输规则):再进行数据传输的时候,为了确保安全,通常会基于某种规则对数据进行加密,另一台电脑接收到数据之后,要对数据进行解密,这种传输规则称之为协议。常见的协议有UDP,TCP,HTTP,HTTPS,FTP等等;
3. IP
3.1 IP地址的概念
IP 全程 Internet Protocor,也可以说是互联网协议地址,会给每一个可以上网的设备分配一个唯一的地址;
3.2 IP地址的分类
现在常用的 IP 主要分为 IPv4 和 IPv6,Internet Protocor version 4(互联网通信协议第四版) 和 Internet Protocor version 6(互联网通信协议第四版);
3.3 IPv4解析
IPv4 采用了 32 位地址长度,计算机中每个字节有八个比特位,分为四组,正好四个字节,如下图就是一个随机的值,就可以表示一个 IP 地址。
但是,我们通常不会采用上面的那种方式来表示,因为可读性太差,所以我们采用点分十进制表示法,什么意思呢?
很简单,就是将上面的四组看作是四个二进制的数,然后转化成是十进制,另外有一点需要注意,在转化过程中,不存在负数这一说法,都是正数,转化之后的四个数之间采用 "." 来分开,就形成了我们常见的 "xxx.xxx.xxx.xxx"。如下图
这里我们可以算一下,每个八位二进制数转化为十进制,一共有 2^8 = 256 个十进制数,四组则一共有 256*256*256*256 = 42,9496,7296 就是42亿,也就是说 IPv4 一共最多有42亿多个 IP 地址,在2019年的时候,这42亿个 IP 地址就已经分配完了,不够使用了。
3.4 Ipv6解析
为了解决 IPv4 分配地址不够用的这一情况,后续又推出了 IPv6,它则是采用了 128 位地址长度,分为了8组,如下图
128 位2进制数,那么它可以分配的 IP 地址数量为 2^128,这个数量非常庞大,可以给地球上的每粒沙子都分配一个 IP 地址,完全够用,但是 IPv6 还没有大面积推广开,但在未来一定会被广泛使用。
IPv6 采用的是冒分十六进制表示法,每16个二进制数为一组,一共分为8组,将二进制转化为16进制,转化完毕后每组之间采用 ":" 分开,就形成了下面这个样子
16进制数如果计算出来的结果如果某一组都是0,可以省略三个只写一个0,如果只有两头有数值中间都是零,则可以省略中间的六组,用两个连续的 "::" 来代替,计算机在读取的时候会自动补零。
4. IPv4 的使用细节
上面我们了解到了,IPv4 的地址已经分配完毕了,而 IPv6 还没有大面积普及,那么如果新的设备需要 IP 地址,是如何解决的呢?
这就要说到 IPv4 的地址分类形式了,实际上 IPv4 还可以分为公网IP和局域网IP,192.168.开头的IP都是局域网IP,范围是 192.168.0.0--192.168.255.255,是专门为组织机构内部使用,节省IP地址数量。
我们大家举个例子就很好理解了。假如你现在有手机,平板,手表,电脑四个上网设备,原本来说你这四个设备需要分别占用那42亿个IP地址中的四个,但是现在你的这四个设备共同占用 42 亿个公网IP地址中的一个,然后你的这四个设备再分别占用局域网IP 192.168.0.0--192.168.255.255 中的四个,这样说应该好理解一些。就是不管你有几个设备,你只占用世界上的一个公网IP,然后你的个人设备再去分配局域网的 IP,节省了42亿个公网IP的利用率。
实际生活中可能一栋大楼,一家小型公司,一个商场,或者一家茶馆餐馆只占用一个 公网IP,然后顾客在这个范围内的IP实际上是这个公网IP下的局域网IP。这样做极大地提高了公网IP的使用率,所以至今IPv6只是小面积普及,还没有大面积应用开来。
5. 特殊IP地址
在上面说到的众多IP地址中,我们需要记一个特殊的,就是 127.0.0.1,这个地址永远都是代表你的本机地址,只会寻找你的本机。
4. 端口号
(1)端口号是应用程序在设备中的唯一标识,它是由两个字节表示的整数,范围是 0~65535 之间的任意一个数;
(2)并不是这个范围之内的端口都可以使用,其中 0~1023 之间的端口都是被一些固定的网络应用或者网络服务占用的,我们是用不了,只能使用 1024之后的端口。
(3)一个端口号只能被一个程序绑定使用;
5. 协议
计算机网络中,连接和通信的规则被称为网络通信协议。而现在最为广泛使用的就是TCP协议以及UDP协议,
5.1 UDP协议
UPD 全称 User Datagram Protocol(用户数据报协议),UDP是面向无连接的通信协议,他的速度快,但有大小限制,每次只能发送64K大小的数据,数据不安全,有可能产生数据丢失。
5.2 TCP协议
TCP 协议全称 Transmission Control Protocol(传输控制协议),TCP协议是面向无连接的通信协议,速度慢但没有大小限制,数据安全。
相关文章:

网络编程基础知识总结——IP,端口,协议
目录 1. 什么是网络编程? 2. 网络编程的三要素 3. IP 3.1 IP地址的概念 3.2 IP地址的分类 3.3 IPv4解析 3.4 Ipv6解析 4. IPv4 的使用细节 5. 特殊IP地址 4. 端口号 5. 协议 5.1 UDP协议 5.2 TCP协议 1. 什么是网络编程? 总的来说就是一句…...

【LeetCode力扣】297. 二叉树的序列化与反序列化
目录 1、题目介绍 2、解题思路 2.1、详细过程图解 2.2、代码描述 2.3、完整代码 1、题目介绍 原题链接:297. 二叉树的序列化与反序列化 - 力扣(LeetCode) 示例 1: 输入:root [1,2,3,null,null,4,5] 输出&#…...

Linux寄存器+Linux2.6内核进程调度队列+命令行参数+环境变量
目录 一、寄存器 二、Linux2.6内核进程调度队列 (一)优先级 (二)活动队列 (三)过期队列 (四)active指针和expired指针 三、命令行参数 (一)举例一 &…...

组合数(2)获取C(n,k)组合数列表的QT实现
1)工程文件 QT coreCONFIG c17 cmdline# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.…...

SparkCore编程RDD
RDD概述 中文名为弹性分布式数据集,是数据处理基本单位。代表一个弹性的,不可变,可分区,里面的数据可并行计算的集合。 RDD和Hadoop MR 的区别: RDD是先明确数据处理流程,数据在行动算子执行前实际上并未…...

VBA技术资料MF69:添加和删除工作表中的分页符
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到…...

数字技术助力智慧公厕,让公厕变身为全新创新应用
在如今数字化的时代,数字技术的集成应用已经渗透到了生活的方方面面。其中一个令人瞩目的领域就是智慧公厕。以前只是简单的厕所,如今借助数字技术的力量,智慧公厕变得功能强大、智能高效。接下来,我们将以智慧公厕源头领航厂家广…...

electron 升级 v22 遇到问题
Electron 漏洞 https://mp.weixin.qq.com/s/5LpSJb_5uV8EIDOl3fz9Tw 由于 23以上不在支持win 7 8 8.1 所以我选择安装 v22.3.24 electron 22.3.24 node-sass 6.0.1 sass-loader 10.4.1 对应的版本 npm i node-sass6.0.1 --sass_binary_sitehttps://npm.taobao.org/mirrors…...

跟我学c++中级篇——Pimpl
一、前向声明 前向声明或者前置声明(forward declaration),这个在c中用得还是比较多的。一般的框架或者库中,经常可以看到在一个类的前面声明了一个类,类似下面这样: class useclass; class mycall{...useclass *us; };前向声明…...
[补题记录] Atcoder Beginner Contest 295(E)
URL:https://atcoder.jp/contests/abc295 目录 E Problem/题意 Thought/思路 Code/代码 E Problem/题意 给定长度为 N 的数组 A。进行如下操作: 若 Ai 0,将 Ai 等概率地变为 1 ~ M 中的任意一个数;对 A 排序; …...

解决git在window11操作很慢,占用很大cpu的问题
【git在window11操作很慢,占用很大cpu,最后也执行失败】 在谷歌输入:git very slow in window 11。通过下面链接终于找到了解决方案: https://www.reddit.com/r/vscode/comments/sulebx/slow_git_in_wsl_after_updating_to_window…...

C++智能指针(二)——weak_ptr初探
文章目录 1. shared_ptr 存在的问题2. 使用weak_ptr2.1 初始化 weak_ptr2.2 访问数据 3. 附录4. 参考文献 1. shared_ptr 存在的问题 与 shared_ptr 的引入要解决普通指针存在的一些问题一样,weak_ptr 的引入,也是因为 shared_ptr 本身在某些情况下&…...

540 - Team Queue (UVA)
题目链接如下: Online Judge 对比刘汝佳的代码,我没有用queue来排整个队伍,因为那样的话遍历整个队伍太麻烦,vector比较方便。但vector删除元素比较耗时,所以就不删了,仅仅用pivot来指代目前队伍的开始。…...

投资组合之如何估值
文章目录 如何估值一、PE估值法1、PE估值法的定义2、参考标准(1)常规标准:25倍合理市盈率。(2)同行业对比。(3)跟历史市盈率相比。 3、PE估值法的适用范围4、PE估值法的优势5、PE估值法的劣势&a…...

2024届通信工程保研经验分享(预推免入营即offer)
2024届通信工程保研经验分享(预推免入营即offer) BackGround夏令营情况:预推免情况: BackGround 本科院校:末九 专业:通信工程 rank:3/123(预推免绩点排名)࿰…...

L2-025 分而治之 - java
L2-025 分而治之 时间限制 600 ms 内存限制 64 MB 题目描述: 分而治之,各个击破是兵家常用的策略之一。在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破。为此参谋部提供了若…...

Python+高光谱数据预处理-机器学习-深度学习-图像分类-参数回归
涵盖高光谱遥感数据处理的基础、python开发基础、机器学习和应用实践。重点解释高光谱数据处理所涉及的基本概念和理论,旨在帮助学员深入理解科学原理。结合Python编程工具,专注于解决高光谱数据读取、数据预处理、高光谱数据机器学习等技术难题…...

免费 AI 编程助手 Amazon CodeWhisperer 体验
文章作者:文章作者:米菲爸爸 2022 年 6 月 23 亚马逊云科技就已经推出了 Amazon CodeWhisperer(预览版)。经过不到一年的测试和 AIGC的飓风在 2023 年 4 月 18 日实时 AI 编程助手 Amazon CodeWhisperer正式可用 Amazon CodeWhis…...

【Linux】从零开始学习Linux基本指令(一)
🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:Linux入门 🔥该文章主要了解Linux操作系统下的基本指令。 目录: ⌛️指令的理解⏳目录和文件的理解⏳一些常见指令✉…...

Java GC 算法
一、概述 理解Java虚拟机垃圾回收机制的底层原理,是成为一个高级Java开发者的基本功。本文从底层的垃圾回收算法开始,着重去阐释不同垃圾回收器在算法设计和实现时的一些技术细节,去探索「why」这一部分,通过对比不同的垃圾回收算…...

vue3 v-html中使用v-viewer
安装:npm install v-viewernext 在main.js中配置 import “viewerjs/dist/viewer.css”; import Viewer from “v-viewer”; app.use(Viewer, { Options: { inline: true, //默认值:false。启用内联模式。 button: true, //在查看器的右上角显示按钮。 …...

Leetcode算法解析——查找总价格为目标值的两个商品
1. 题目链接:LCR 179. 查找总价格为目标值的两个商品 2. 题目描述: 商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。 示例 1: 输入:price …...

unity游戏开发引擎unity3D开发
Unity(也被称为Unity3D)是一款强大的跨平台游戏引擎,用于开发2D和3D游戏,以及其他交互式应用程序。以下是Unity游戏开发的一般步骤: 安装和设置Unity: 首先,您需要下载并安装Unity。确保选择适…...

iptables
目录 iptables 匹配规则:由上到下依次匹配,一旦匹配不再匹配 参数 知识点 REJECT与DROP REJECT与DROP的区别 当使用的时REJECT时,客户端访问迅速返回的值是拒绝连接 当使用的是DROP时,返回的时连接超时 REJECT与drop适用…...

竞赛 深度学习LSTM新冠数据预测
文章目录 0 前言1 课题简介2 预测算法2.1 Logistic回归模型2.2 基于动力学SEIR模型改进的SEITR模型2.3 LSTM神经网络模型 3 预测效果3.1 Logistic回归模型3.2 SEITR模型3.3 LSTM神经网络模型 4 结论5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 …...

Spark入门
目录 Spark入门: 概述历史概述SparkCore:RDDSparkSQL:SparkStreamingSpark内核调优 Spark概述 回顾: Hadoop HDFS存储 MR分析计算 YARN调度 Hadoop的MR计算中的shuffle需要落盘,速度不够快。 Spark是一种基于内存的分析计算引擎。 历史…...

react–antd 实现TreeSelect树形选择组件,实现点开一层调一次接口
效果图: 注意: 当选择“否”,开始调接口,不要把点击调接口写在TreeSelect组件上,这样会导致问题出现,没有层级了 部分代码:...

android 固定进度环形刷新效果
android 固定进度无限旋转的环形效果 效果图 效果视频: Record_2023-10-13-17-17-19[1] Activity 中使用 val rotation: ObjectAnimator ObjectAnimator.ofFloat(progressBar, "rotation", 0f, 360f) rotation.duration 000 // 旋转持续时间为2秒 rot…...

python jieba 词性标注 中文词性分类 nlp jieba.posseg
参考:https://blog.csdn.net/yellow_python/article/details/83991967 from jieba.posseg import dt dt.word_tag_tab[好看] >>> vflag_en2cn { ‘a’: ‘形容词’, ‘ad’: ‘副形词’, ‘ag’: ‘形语素’, ‘an’: ‘名形词’, ‘b’: ‘区别词’, ‘…...

LeetCode 每日一题 2023/10/9-2023/10/15
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 10/9 2578. 最小和分割10/10 2731. 移动机器人10/11 2512. 奖励最顶尖的 K 名学生10/12 2562. 找出数组的串联值10/13 1488. 避免洪水泛滥10/14 136. 只出现一次的数字10/1…...