网络编程基础知识总结——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」这一部分,通过对比不同的垃圾回收算…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...

LabVIEW双光子成像系统技术
双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制,展现出显著的技术优势: 深层组织穿透能力:适用于活体组织深度成像 高分辨率观测性能:满足微观结构的精细研究需求 低光毒性特点:减少对样本的损伤…...