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

网络编程基础知识总结——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(预推免绩点排名)&#xff0…...

L2-025 分而治之 - java

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

Python+高光谱数据预处理-机器学习-深度学习-图像分类-参数回归

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

免费 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」这一部分,通过对比不同的垃圾回收算…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

C++使用 new 来创建动态数组

问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四&#xff…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

二维FDTD算法仿真

二维FDTD算法仿真,并带完全匹配层,输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现,其目的是加强对string的底层了解,以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量,…...

使用 uv 工具快速部署并管理 vLLM 推理环境

uv:现代 Python 项目管理的高效助手 uv:Rust 驱动的 Python 包管理新时代 在部署大语言模型(LLM)推理服务时,vLLM 是一个备受关注的方案,具备高吞吐、低延迟和对 OpenAI API 的良好兼容性。为了提高部署效…...

解决MybatisPlus使用Druid1.2.11连接池查询PG数据库报Merge sql error的一种办法

目录 前言 一、问题重现 1、环境说明 2、重现步骤 3、错误信息 二、关于LATERAL 1、Lateral作用场景 2、在四至场景中使用 三、问题解决之道 1、源码追踪 2、关闭sql合并 3、改写处理SQL 四、总结 前言 在博客:【写在创作纪念日】基于SpringBoot和PostG…...