C++网络编程之IP地址和端口
概述
IP地址和端口共同定义了网络通信中的源和目标。IP地址负责将数据从源设备正确地传输到目标设备,而端口则确保在目标设备上数据被交付到正确的应用或服务。因此,在网络编程中,IP地址和端口是密不可分的两个概念,共同构成了网络通信的基础。
IP地址
IP地址是互联网协议地址,它为互联网上的每一个网络、每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址允许数据在网络上正确路由,确保数据从源设备正确地传输到目标设备。
目前常用的IP地址主要分为IPv4和IPv6两种。
IPv4:采用了32位地址长度,分为四组,每组8位。用点分十进制表示法表示,类似“192.168.50.100”的形式。IPv4地址空间有限,最多只能分配42亿多个地址,在2019年左右已基本分配完毕。
IPv6:为了解决IPv4地址不够用的问题,推出了IPv6。它采用了128位地址长度,分为8组,每组16位。用冒分十六进制表示法表示,即“xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx”的形式。IPv6地址空间极大,几乎可以为地球上的每一粒沙子分配一个地址。
IP地址中存在一些比较特殊的地址,它们具有特殊的含义,具体如下。
0.0.0.0:表示所有网络地址,通常用于默认路由。
255.255.255.255:表示全网的广播地址,用于向同一网络内的所有设备发送数据。
127.0.0.1:表示本机地址,用于本机测试或环回接口。
为了解决IPv4地址空间不足的问题,提出了私有地址的概念。私有地址是指在互联网上不公开使用,而是被保留在私有网络(比如:局域网LAN、企业内网等)内部使用的IP地址范围。这些地址不会被互联网上的路由设备所识别和转发,因此它们不会与全球唯一的公网IP地址发生冲突。
目前,IPv4地址中的私有地址范围主要包括以下三个。
1、A类私有地址。10.0.0.0到10.255.255.255,这是一个连续的A类地址块,共包含约1677万个地址。
2、B类私有地址。172.16.0.0到172.31.255.255,这是一个连续的B类地址块,但是被划分为16个子网,每个子网包含约65534个地址。
3、C类私有地址。192.168.0.0到192.168.255.255,这是一个连续的C类地址块,但是被划分为256个子网(每个子网以.0到.255结尾),每个子网包含约254个地址。
在私有网络中,设备可以使用这些私有地址进行相互通信。当私有网络中的设备需要与互联网上的设备进行通信时,需要使用网络地址转换(即NAT)技术,将私有地址转换为公网IP地址,以实现数据的跨网络通信。NAT技术可以有效地节约公网IP地址资源,同时保护私有网络内部的设备不被外部网络直接访问,提高了网络的安全性。
端口
端口是单个设备上运行多个网络服务时使用的逻辑单位。每个端口都有一个数字标识,范围从0到65535。端口将网络通信划分为不同的应用或服务,确保数据在目标设备上被交付到正确的应用或服务。
端口大致可以分为以下几类。
1、公认端口:从0到1023,被IANA(互联网编号分配机构)分配给特定的服务。这些端口的通讯明确表明了某种服务的协议,比如:HTTP服务通常使用80端口,HTTPS服务使用443端口。
2、注册端口:从1024到49151,它们松散地绑定于一些服务。这些端口同样用于许多其它目的,但通常不会由IANA直接分配。很多应用程序和服务,都使用这些端口号范围内的某个端口。
3、动态/私有端口:从49152到65535,这些端口号通常留给客户端程序使用,以便在客户端和服务器之间建立动态或临时的连接。
4、特殊端口:除了上述的分类外,还有一些特殊的端口。比如:0端口通常用于表示任意端口或无端口,65535端口通常用作广播地址的一部分,但在TCP/IP协议中不用于端口号。
在网络通信中,端口的作用主要体现在以下三个方面。
1、区分服务。不同的服务使用不同的端口号进行区分,确保数据能够被正确地交付到目标服务。
2、安全控制。通过防火墙等安全设备对特定端口的访问进行控制,提高网络安全性。
3、负载均衡。在服务器集群中,通过端口映射等技术实现负载均衡,可提高服务性能和可靠性。
实例解析
在下图的网络拓扑图中,存在两个局域网的网段,分别为:192.168.50.X和192.168.60.X,两个网段通过路由器、网关等设备进行联通。
现在想通过192.168.50.120设备的6666端口发送消息给192.168.60.220设备的6667端口,假设使用TCP协议进行传输,大致的流程如下。
1、应用层请求。在192.168.50.120上运行的应用程序首先生成要发送的数据,并请求通过TCP协议发送这些数据到目标地址192.168.60.220和端口6667。
2、传输层封装。在192.168.50.120的传输层接收到应用层的数据后,会将其封装成一个TCP段。这个TCP段包含了:源端口号6666、目标端口号6667、序列号(用于数据的顺序控制)、确认号(对于应答包)、数据本身等。
3、网络层封装。TCP段被传递给网络层。在网络层,TCP段被封装成IP数据包。IP数据包包含了:源IP地址192.168.50.120、目标IP地址192.168.60.220、用于路由的TTL生存时间等。
路由器根据IP数据包的目的地址192.168.60.220在路由表中查找下一跳地址,并将数据包转发到相应的网络接口。由于两个网段192.168.50.X和192.168.60.X通过路由器连接,数据包将被转发到连接192.168.60.X网段的路由器接口。
4、数据包传输。数据包通过物理网络(比如:以太网)被发送到目标网络192.168.60.X。在这个过程中,数据包可能会经过多个路由器或交换机,但每个节点都会根据IP数据包中的目标地址来转发它。
5、目标机器接收。当数据包到达192.168.60.220时,IP层会解析数据包,并将TCP段传递给相应的TCP端口6667。在192.168.60.220的TCP层,接收到的TCP段会被重新组装成原始的数据流,并传递给上层的应用程序。
6、应用层处理。应用程序在192.168.60.220上接收到数据,进行相应的处理(比如:显示消息、处理请求等)。
相关文章:
C++网络编程之IP地址和端口
概述 IP地址和端口共同定义了网络通信中的源和目标。IP地址负责将数据从源设备正确地传输到目标设备,而端口则确保在目标设备上数据被交付到正确的应用或服务。因此,在网络编程中,IP地址和端口是密不可分的两个概念,共同构成了网络…...
陶瓷4D打印有挑战,水凝胶助力新突破,复杂结构轻松造
大家好!今天要和大家聊聊一项超酷的技术突破——《Direct 4D printing of ceramics driven by hydrogel dehydration》发表于《Nature Communications》。我们都知道4D打印很神奇,能让物体随环境变化而改变形状。但陶瓷因为太脆太硬,4D打印一…...
网络安全的详细学习顺序
网络安全的详细学习顺序可以按照由浅入深、逐步递进的原则进行。以下是一个建议的网络安全学习顺序: 1. 基础知识学习 计算机网络基础:理解网络架构、TCP/IP协议栈、OSI七层模型、数据链路层到应用层的工作原理。 操作系统基础:了解Window…...
人工智能与机器学习原理精解【28】
文章目录 随机森林随机森林详解随机森林的详细解释1. 随机森林的基本概念、原理和应用场景、公式和计算2. 随机森林在机器学习、深度学习等领域的重要性3. 实际应用案例及其优势和局限性4. 随机森林在解决实际问题中的价值和意义 随机森林局限性的详细归纳随机森林主要的应用领…...
StarRocks 中如何做到查询超时(QueryTimeout)
背景 本文基于 StarRocks 3.1.7 主要是分析以下两种超时设置的方式: SESSION 级别 SET query_timeout 10;SELECT sleep(20);SQL 级别 select /* SET_VAR(query_timeout10) */ sleep(20); 通过本文的分析大致可以了解到在Starrocks的FE端是如何进行Command的交互以及数据流走…...
Windows 开发工具使用技巧 Visual Studio使用安装和使用技巧 Visual Studio 快捷键
一、Visual Studio配置详解 1. 安装 Visual Studio 安装时,选择你所需要的组件和工作负载。Visual Studio 提供多种工作负载,例如: ASP.NET 和 Web 开发:用于 Web 应用的开发。 桌面开发(使用 .NET 或 C)…...
计算机网络-系分(5)
目录 计算机网络 DNS解析 DHCP动态主机配置协议 网络规划与设计 层次化网络设计 网络冗余设计 综合布线系统 1. 双栈技术 2. 隧道技术 3. 协议转换技术 其他网络技术 DAS(Direct Attached Storage,直连存储) NAS(Net…...
React Native使用高德地图
在React Native项目中使用高德地图,主要涉及到几个关键步骤:安装高德地图相关的React Native模块、配置项目、申请高德地图API Key、以及在实际组件中使用高德地图功能。以下是一个详细的步骤指南: 一、安装高德地图React Native模块 首先&…...
排序算法的理解
排序算法借鉴了数学里面的不等式的思想 计算机不能直接继承不等式的传递性特征,这个时候才用递归调用去人为的分成不同的部分。或者说,一部分已经大致排序好的数放在一边,另外一边再排。 这是由于计算机只能两两比较数字才会出现的情况。它…...
Yocto - 使用Yocto开发嵌入式Linux系统_04 使用Toaster来创建一个image
Using Toaster to Bake an Image 既然我们已经知道了如何在 Poky 中使用 BitBake 构建图像,那么接下来我们就来学习如何使用 Toaster 构建图像。我们将重点介绍 Toaster 最直接的使用方法,并介绍它的其他功能,让你了解它的能力。 Now that we…...
【C#生态园】后端服务与网络库:选择适合你游戏开发的利器
网络通信不再难题:六种常用游戏开发网络库详解 前言 随着网络游戏行业的蓬勃发展,对于实时多玩家游戏服务和网络通信库的需求也日益增长。在游戏开发中,选择合适的后端服务和网络库可以极大地影响游戏的性能、稳定性和用户体验。本文将介绍…...
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30
计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-30目录1. Proof Automation with Large Language Models概览:论文研究背景:技术挑战:如何破局…...
【漏洞复现】JeecgBoot 积木报表 queryFieldBySql sql注入漏洞
》》》产品描述《《《 积木报表,是一款免费的企业级Web报表工具,像搭建积木一样在线设计报表!功能涵盖,数据报表、打印设计、图表报表、大屏设计等! 》》》漏洞描述《《《 JeecgBoot 积木报表 queryFieldBySq| 接口存在一个 SQL 注入漏洞&…...
Qt6 中相对于 Qt5 的新增特性及亮点
Qt 是一个领先的跨平台应用开发框架,涵盖了桌面、移动、嵌入式等多个平台。随着 Qt6 的发布,Qt 框架经历了重大升级和变革,带来了大量新特性和架构上的改进,使开发者可以更高效地开发现代化应用程序。本文将重点讨论 Qt6 相对于 Q…...
超轻巧modbus调试助手使用说明
一、使用说明 1.1 数据格式 和其他的modbus采集工具一样,本组件也支持各种数据格式,其实就是高字节低字节的顺序。一般是2字节表示一个数据,后面又有4字节表示一个数据,目前好像还有8字节表示一个数据的设备。不同厂家的设备对应…...
Percona Monitoring and Management
Percona Monitoring and Management (PMM)是一款开源的专用于管理和监控MySQL、MongoDB、PostgreSQL...
WarehouseController
目录 1、 WarehouseController 1.1、 //仓库信息设置 1.2、 /// 查询 1.3、 /// 删除 WarehouseController using QXQPS.Models; using QXQPS.Vo; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mv…...
基于 STM32 单片机的温室物理无害生长系统
摘要 : 本系统主要由六大部分组成,分别为 STM32单片机控制模块、温湿度检测模块、风扇、臭氧消毒、温室补光灯、水利灌溉通道等基本设施。单片机可以通过 MOS 管这类的电力电子器件来实现对某些大功率设施的控制如温室内风扇通风系统、温室内定时补光、根据土壤温湿检测来进行…...
新版pycharm如何导入自定义环境
我们新的版本的pycharm的ui更改了,但是我不会导入新的环境了 我们先点击右上角的add interpreter 然后点击添加本地编译器 先导入这个bat文件 再点击load 我们就可以选择我们需要的环境了...
一文彻底搞懂多模态 - 多模态理解+视觉大模型+多模态检索
文章目录 技术交流多模态理解一、图像描述1. 基于编码器-解码器的方法2. 基于注意力机制的方法3. 基于生成对抗网络的方法 二、视频描述三、视觉问答 视觉大模型一、通用图像理解模型二、通用图像生成模型 多模态检索一、单模态检索二、多模态检索三、跨模态检索 最近这一两周看…...
提升效率的编程世界探索与体验
--- 在如今这个信息爆炸、竞争激烈的时代,工作效率对于程序员来说显得尤为重要。为了在日益繁忙的工作环境中脱颖而出,选择合适的编程工具成为了一个关键的决定。不同的工具各有其优势,有的擅长简化代码编写,有的则擅长自动化任…...
VMware tools菜单为灰色无法安装
这个工具之前为灰色,无法安装,导致无法实现跟主机的共享文件夹等操作。极为不便。 根据其他教程提示:看到软件是这个配置。 修改为自动检测,tools就可以安装了。之前没注意到。 也有说dvd光盘也要设置。但是经过我测试。只设置软…...
不相同的二叉搜索树
给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出:1提…...
毕业论文设计javaweb+VUE高校教师信息管理系统
目录 一、系统概述 二、功能详解 1. 教师管理 2. 部门管理 3. 奖惩管理 4. 业绩管理 5. 培训管理 6. 报表查询 三、总结 四、示例代码 1 前端VUE 2 后端SpringBootjava 3 数据库表 随着教育信息化的发展,传统的手工管理方式已经不能满足现代学校对教师…...
L0-Python-关卡材料提交
Python wordcount 函数的调试笔记 输入文本中的多行字符串处理 确保 text 使用了正确的三引号 “”",以便读取完整的多行字符串,而不是单行。字符串分割:split() 使用 split() 默认按空格分割单词,确保分割后每个元素都是字…...
【unity进阶知识6】Resources的使用,如何封装一个Resources资源管理器
文章目录 一、Unity资源加载的几种方式1、Inspector窗口拖拽2、Resources3、AssetBundle4、Addressables(可寻址资源系统)5、AssetDatabase 二、准备三、同步加载Resources资源1、Resources.Load同步加载单个资源1.1、基本加载1.2、加载指定类型的资源1.…...
ThreadLocal内存泄漏分析
一、ThreadLocal内存泄漏分析 1.1 ThreadLocal实现原理 1.1.1、set(T value)方法 查看ThreadLocal源码的 set(T value)方法,可以发现数据是存在了ThreadLocalMap的静态内部类Entry里面 其中key为使用弱引用的ThreadLocal实例,value为set传入的值。核…...
第 30 章 XML
第 30 章 XML 1.IE 中的 XML 2.DOM2 中的 XML 3.跨浏览器处理 XML 随着互联网的发展,Web 应用程序的丰富,开发人员越来越希望能够使用客户端来操作 XML 技术。而 XML 技术一度成为存储和传输结构化数据的标准。所以,本章就详细探讨一下 Ja…...
VMware下的ubuntu显示文字太小的自适应显示调整
我的情况 我使用的是4K的32寸显示器,分辨率为 3840 x 2160,ubuntu版本为18.04,默认的情况下系统分辨率为 3466 x 1842。 此时,显示的文字很小,虽然可以看清,但也比较吃力,在VMware窗口…...
外贸网站怎么搭建对谷歌seo比较好?
外贸网站怎么搭建对谷歌seo比较好?搭建一个网站自然不复杂,但要想搭建一个符合谷歌seo规范的网站,那就要多注意了,你的网站做的再酷炫,再花里胡哨,但如果页面都是js代码,或者页面没有源代码内容…...
做校园二手交易网站的目的/seo搜索优化专员
在numpy中,使用等号()直接赋值返回的是一个视图,属于浅拷贝;要完整的拷贝一个numpy.ndarray类型的数据的话,只能调用copy()函数 # coding utf-8 import numpy as np t np.zeros(24).reshape(4, 6) t1 t …...
做网站有必要做app吗/seo引擎优化工具
J2EE项目中,EL表达式出现过的一个问题: 使用tomcat7版本的不会出现这种问题,但使用Tomcat6时会出现这种问题。 简而言之:EL表达式内部不能出现对象的方法调用,如下几例: 一、${list.size()>0} 二、${lis…...
建站培训/今日军事新闻头条
2019年高考平行志愿录取规则及填报技巧2019年高考即将开启,接下来就是填志愿的事了。高考平行志愿录取规则是“分数优先,遵循志愿”,到2018年,全国绝大部分省市已经实行平行志愿(少部分仅在一本实施平行志愿),只有几个…...
免费做三级网站/百度学术论文查重免费
循环扇在美国是一个比较常见的家电产品,它的作用是通过循环空气来改善室内空气流通,使室内温度更加舒适。对于循环扇,美国人关注的主要点是性能、价格、耐用性和使用便捷性。 在性能方面,美国人更加关注循环扇的效率和噪音水平。他…...
做网络歌手的网站/百度一下你就知道123
比explain更加详细的分析计划:Query Profiler 2019-05-10 14:47:45 阅读:78 来源: 互联网 标签:profile show explain sql profiles Profiler query Query 一、前言 这篇博客是之前总结的一个知识点,也是偶然看别人…...
江津网站建设/神马站长平台
题意: 用 a b c 三个字符构造一个长度为 N 的串,保证串中不出现长度大于等于 3 的回文串 并且 尽可能使字符 c 出现的次数最少。 思路: 串用 aabb 构造即可满足题意 例:长度为 3 的串为 aab 5 aabba 8 aabbaabb …...