网络编程初识

如果这篇有没接触过的知识点,请转到网络编程先导知识_小梁今天敲代码了吗的博客-CSDN博客

目录

 IPv4和IPv6的概念:

子网掩码

默认网关

ping命令

端口

OSI网络分层模型

TCP/IP四层模型

字节序转换函数

IP地址转换

上一篇介绍了网络编程的先导知识,那我们如何查看当前主机对应的IP地址呢

Windows系统下打开命令提示符,输入ipconfig(linux系统输入ifconfig)

 IPv4和IPv6的概念:

        IPV4和IPV6都是互联网协议中的版本。IPV4是早期的一个版本,采用32位地址表示方式,最多支持42亿个不同的IP地址;而IPV6是新一代的IP协议,采用128位地址表示方式,可支持更多的IP地址,达到了10的28次方个,足以满足未来互联网的需求。

IPV4和IPV6的不同在于:

        1.地址长度:IPV4地址长度为32位,IPV6地址长度为128位。

        2.IP地址数量:IPV4最多支持约42亿个IP地址,而IPV6支持的IP地址数量则大于IPV4几乎无限制,并且可以满足未来互联网的需求。

        3.地址表示方式:IPV4使用点分十进制表示,例如:192.168.1.1;而IPV6采用冒号分隔的16进制数字表示,例如:2001:0db8:85a3:08d3:1319:8a2e:0370:7344。

        4.安全性:IPV6比IPV4更安全,因为它有更多的安全性功能和更强的加密,可以更好地保护用户的隐私和数据安全。

总之,IPV6是未来网络发展的方向,将逐步取代IPV4。

子网掩码

        子网掩码是一个32位的二进制数字序列,它用于标识一个IP地址中哪些位用于网络地址,哪些位用于主机地址。它的作用是在一个网络中将一个IP地址分为网络地址和主机地址两部分,以便于实现网络通信和管理。子网掩码与IP地址配合使用,确定了网络号和主机号的界限。在计算机网络中,子网掩码通常表示为四个十进制数,每个数的取值范围为0到255,如255.255.255.0。

默认网关

        默认网关是连接不同网络的设备之间交换数据包的地方。它通常是一个路由器,负责将数据包从本地网络发送到远程网络或互联网。默认网关是必须配置的,因为它允许计算机访问外部网络。

ping命令

         ping命令的作用是测试与目标计算机之间的通信。在命令提示符或终端窗口中运行ping命令并指定目标IP地址或域名时,该命令会发送一个测试数据包到目标计算机。目标计算机收到该数据包后,会发送回一个响应数据包以指示其是否已收到该数据包。根据收到的响应时间和数据包丢失率,可以判断目标计算机与您的计算机之间的连接质量。ping命令通常用于网络故障排除和测试,以确定计算机之间的网络连接是否畅通。

端口

        通过IP地址可以定位到我们的主机设备,那么如果想定位到设备中的某一个进程,应该通过什么呢?答案是通过端口。

        比如:在电脑上同时运行了微信和qq,小明通过客户端给我的微信发消息,为什么我电脑上微信就会收到消息,而不是qq呢?

        因为运行在我电脑上的微信和qq都绑定了不同的端口,通过IP地址定位到我的主机后,再通过端口定位到我的微信进程,通过指定的IP和端口,小明给我们微信发送数据的时候我们微信就能接收到数据了。

        端口是计算机网络通信中的一种逻辑概念,用于标识应用程序与操作系统或其他应用程序之间交换数据的接口。在计算机网络中,每个运行的应用程序都需要使用一个或多个端口与其他应用程序通信。端口号是一个16位的整数,其范围为0~65535,其中0~1023为公认端口,一般用于标准服务,如HTTP、FTP、SSH等;1024~49151为注册端口,用于自定义应用程序或服务;49152~65535为动态端口,这些端口用于临时数据传输,通常由操作系统自动分配。端口号加上IP地址,组成了网络中的套接字,唯一标识了一个应用程序或服务。

OSI网络分层模型

        OSI网络分层模型(Open Systems Interconnection Reference Model),是一种用于计算机网络体系结构设计的通用框架。它由国际标准化组织(ISO)开发,目的是使各种计算机和网络设备能够进行通信而无需了解其他设备的详细信息。

        OSI模型将计算机网络体系结构分成了七个不同的层次,每个层次都执行特定的任务,并且只与它下面和上面的层次进行通信。以下是这七个层次:

- 物理层:负责传输比特流,定义了传输媒介,传输速率等规范。
- 数据链路层:在物理层上建立数据链路,完成数据的传输和接收,进行差错控制和流量控制。
- 网络层:实现源到目的地的逻辑传输,包括寻址、路由选择和拥塞控制等功能。
- 传输层:为两个通信应用程序提供端到端的通信,并控制数据传输的可靠性。
- 会话层:管理不同计算机之间的会话,建立、维护和终止通信。
- 表示层:实现数据格式的转换、数据加密和解密以及数据压缩等功能。
- 应用层:提供各种网络服务,包括文件传输、电子邮件、远程登录、网页浏览等。

这些层次是按照功能划分的,并且每个层次都能够与相邻的层次进行交互,从而实现了数据在网络中的可靠传输。

TCP/IP四层模型

        TCP/IP四层模型是指TCP/IP协议中的四个不同的层次,每个层次都提供了特定的功能,不同的层次之间有着严格的协议规范。以下是这四个层次:

1.应用层: 应用层是TCP/IP协议的最高层,它为应用程序提供通信服务,例如电子邮件、文件上传和下载、Web浏览等。应用层通过特定的协议与下面的传输层通信,例如HTTP、SMTP、FTP等。

2.传输层: 传输层为应用程序提供端到端的通信服务,它使用TCP或UDP协议以及相应的端口号来实现数据的传输。TCP协议提供可靠的数据传输服务,而UDP协议则提供不可靠但是速度更快的数据传输服务。

3.网络层: 网络层负责数据包的路由和转发,它使用IP协议进行通信。此外,网络层还负责对数据包进行分片和重新组装,以便在不同的网络节点进行传输。

4.物理层(或链路层): 物理层是TCP/IP协议中的最底层,负责将数据转换为电子信号并通过物理介质进行传输,例如网线或无线信号。

        TCP/IP四层模型与OSI网络分层模型的层数不同,但它们的基本原理类似。TCP/IP四层模型是TCP/IP协议的基础,各层都有着不同的协议和技术,共同构成了互联网和许多其他网络的基础。

字节序转换函数

        字节序转换函数是一种将整数在不同字节序之间进行转换的函数。字节序指定了一个多字节值在内存中以何种顺序存放。有两种常见的字节序:大端字节序和小端字节序。

        在大端字节序中,最高位字节(即第一个字节)存放在最低的存储地址,而最低位字节(即最后一个字节)存放在最高的存储地址。在小端字节序中,最低位字节存放在最低的存储地址,而最高位字节存放在最高的存储地址。

以下是两个常用的字节序转换函数:

1. htons()和ntohs()函数:

        htons()函数将主机字节序转换为网络字节序,ntohs()函数将网络字节序转换为主机字节序。这两个函数用于16位整数的转换。

例如,将一个16位整数num从主机字节序转换为网络字节序:

unsigned short num = 0x1234; // 假设主机字节序为小端序
unsigned short network_num = htons(num); // 转换为网络字节序

2. htonl()和ntohl()函数:

        htonl()函数将主机字节序转换为网络字节序,ntohl()函数将网络字节序转换为主机字节序。这两个函数用于32位整数的转换。

例如,将一个32位整数num从主机字节序转换为网络字节序:

unsigned int num = 0x12345678; // 假设主机字节序为小端序
unsigned int network_num = htonl(num); // 转换为网络字节序

        需要注意的是,这些函数仅仅是将字节序进行转换,并不改变数据类型或大小。因此,在使用这些函数的时候,要确保数据类型和大小是正确的。

IP地址转换

IP地址转换通常指的是将字符串表示的IP地址转换为整型或二进制格式的IP地址,或者将整型或二进制格式的IP地址转换为字符串表示的IP地址。

下面给出一些常用的IP地址转换函数。

1. `inet_addr()`

该函数可以将一个字符串表示的IP地址转换为二进制格式的IP地址。函数原型如下:

in_addr_t inet_addr(const char* cp);

其中参数`cp`为指向表示IP地址的字符串的指针,函数返回值为转换后的二进制格式IP地址。如果转换失败,则返回`INADDR_NONE`。

2. `inet_ntoa()`

该函数可以将一个二进制格式的IP地址转换为字符串表示的IP地址。函数原型如下:

char* inet_ntoa(struct in_addr addr);

其中参数`addr`为表示IP地址的`struct in_addr`结构体,函数返回值为指向字符串表示的IP地址的指针。注意,该函数返回的指针指向的是静态内存,不应该被多次调用或修改,否则会导致错误。

3. `inet_pton()`

该函数可以将一个字符串表示的IP地址转换为二进制格式的IP地址。与`inet_addr()`不同的是,该函数支持IPv4和IPv6地址的转换。函数原型如下:

int inet_pton(int af, const char* src, void* dst);

其中参数`af`指定地址族,取值可以为`AF_INET`或`AF_INET6`;参数`src`为指向表示IP地址的字符串的指针;参数`dst`为指向存储转换后的二进制格式IP地址的缓冲区的指针。函数返回值为转换是否成功,如果成功则返回1,否则返回0或-1。

4. `inet_ntop()`

该函数可以将一个二进制格式的IP地址转换为字符串表示的IP地址。与`inet_ntoa()`不同的是,该函数支持IPv4和IPv6地址的转换。函数原型如下:

const char* inet_ntop(int af, const void* src, char* dst, socklen_t cnt);

其中参数`af`指定地址族,取值可以为`AF_INET`或`AF_INET6`;参数`src`为指向存储二进制格式IP地址的缓冲区的指针;参数`dst`为指向存储转换后的字符串表示的IP地址的缓冲区的指针;参数`cnt`指定缓冲区的大小。函数返回值为指向字符串表示的IP地址的指针,如果转换失败,则返回`NULL`。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/24069.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023五一赶制个人系统:基于SpringBoot+MyBatisPlus+Vue+ElementUI前后端分离

小钊记前言 🍑一、背景🍑二、调研准备阶段🍊2.1、项目-自己搭建🍓 搭建步骤 🍊2.2、项目需求-自己X造🍊2.2、数据模型设计 🍑三、开发阶段🍑四、renxiaozhao 1.0.0-alpha发布&#x…

SpringBoot配置文件的注入和读取

目录 1. 配置文件的作用 2. 两种配置文件的格式: 2.1 properties 基本语法: 2.1.1 写入 2.1.2 读取 执行原理 2.1.3 缺点分析 2.2 yml 基本语法: 2.2.1 写入(非对象) 2.2.3 配置对象 2.2.4 配置集合 多个配…

Python爬虫

爬虫流程 爬虫流程:获取网页内容 --> 解析网页内容 --> 储存或分析数据 爬虫规则: 1、不要爬取公民隐私数据 2、不要爬取受著作保护的内容 3、不要爬取国家事务、国防建设、尖端科学计数领域的计算机系统等 4、请求数量和频率不能太高&…

MOTOTRBO CPS2.0安装与写频流程

一、安装MOTOTRBO CPS2.0写频软件 安装MOTOTRBO CPS2.0写频软件,选择安装软件的电脑系统必须WIN7以上 1.解压CPS2_2.21.61.0.zip至当前文件内 2. 双击MOTOTRBO_CPS_2.0.exe安装文件 3. 选择安装语言中文(简体),点击确定 4.点击下一…

「实在RPA·人社数字员工」促进人力社保数字办公战略转型

一、人力社保部门数字化转型的重要性 伴随着国家放宽人力资源市场准入条例,多次出台相关扶持政策,市场竞争加剧,后疫情时代格局的大变局,如何提高服务质量和效率,如何降本增效,成为人力资源和社会保障行业…

Educational Codeforces Round 139 (Rated for Div. 2)

Educational Codeforces Round 139 (Rated for Div. 2) Problem - 1766E - Codeforces 显然我们可以把0序列的贡献单独算: i*(n-i1) 考虑只存在1,2,3的情况. 首先通过,观察到一个重要性质: 最多只有三种序列. 含有3或纯1或纯2型.纯1或纯2型纯2或纯1型 我们每次添加…

hugging face开源的transformers模型可快速搭建图片分类任务

2017年,谷歌团队在论文「Attention Is All You Need」提出了创新模型,其应用于NLP领域架构Transformer模型。从模型发布至今,transformer模型风靡微软、谷歌、Meta等大型科技公司。且目前有模型大一统的趋势,现在transformer 模型不仅风靡整个NLP领域,且随着VIT SWIN等变体…

什么是高性能计算实习生?做高性能计算有前景吗?

随着大模型和算力时代的大火,高性能计算实习的岗位越来越多了,各个大厂都在码人,百度、小米、字节、华为等等,也有很多网友晒出了面试一众知名芯片企业的面经和笔试题。 但是依然有很多朋友不清楚什么是高性能计算实习生&#xf…

YOLOv5白皮书-第Y4周:common.py文件解读

目录 0.导入需要的包和基本配置1.基本组件1.1 autopad1.2 Conv1.3 Focus1.4 Bottleneck1.5 BottleneckCSP1.6 C31.7 SPP1.8 Concat1.9 Contract、Expand 2.重要类2.1 非极大值抑制(NMS)2.2 AutoShape2.3 Detections2.4 Classify 🍨 本文为&am…

掌握了它,软件测试拿下25K轻轻松松!

了解软件测试这行的人都清楚,功能测试的天花板可能也就15k左右,而自动化的起点就在15k左右,当然两个岗位需要掌握的技能肯定是不一样的。 如果刚入门学习完软件测试,那么基本薪资会在7-8k左右,这个薪资不太高主要是因…

STM8、STM8S003F3P6 实现PWM控制电机HAS10227

背景 有个项目需要控制一台风机的转速,使用STM8S003F3P6 输出PWM控制,这里就详细记录一下调试记录 原理图 原理图比较简单,电机接口CN3 电机接口原理图 与MCU管脚连接位置如下图 首先我们要明白电机的原理 电机 简单来说就是 实现电能与…

锁的内存语义

锁的释放和获取的内存语义 操作锁的释放和获取的内存语义类比volatile对锁释放和锁获取的内存语义做个总结当线程 释放锁 时JMM会把该线程对应的本地内存中的共享变量刷新到主内存中锁释放与 volatile写 有相同的内存语义线程A释放一个锁,实质上是线程A向接下来将…

功率信号源的使用方法有哪些

功率信号源是一种常见的电子设备,主要用于产生各种功率信号,例如直流信号、正弦信号等。功率信号源广泛应用于工业、科研、医疗等领域,例如电机驱动、电子仪器仪表、医疗设备等。本文将详细介绍功率信号源的使用方法和注意事项。 图&#xff…

WMS仓储管理系统解决方案能帮助电子企业解决哪些问题

WMS仓储管理系统解决方案是一种针对仓库管理的软件系统,它能够有效地解决电子企业在仓储管理方面的问题。在电子行业,由于产品的生命周期较短,且需求变化快速,WMS仓库管理系统的应用对于电子企业的管理有着重要的意义。本文将探讨…

【MySQL】MySql的底层数据结构

文章目录 前言索引结构及查找算法不适合做MySql的数据结构及其原因 一、BTree和BTree的引出1.1 BTree数据结构2.2 BTree数据结构 二、计算m阶,即BTree该取多少合适总结 前言 索引结构及查找算法 一个sql语句在mysql里究竟是如何运行的呢?又是怎么去查找…

华为云服务器租用费用及CPU性能(1核2G/2核4G/4核8G)

华为云HECS云服务器即云耀云服务器,类似于阿里云和腾讯云的轻量应用服务器,HECS云服务器1核2G配置39.02元一年、2核4G配置99元一年、4核8G配置69.94元3个月,华为云百科分享华为云HECS云服务器租用费用及CPU性能详解: 目录 华为云…

《数据库应用系统实践》------ 包裹信息管理系统

系列文章 《数据库应用系统实践》------ 包裹信息管理系统 文章目录 系列文章一、需求分析1、系统背景2、 系统功能结构(需包含功能结构框图和模块说明)3.系统功能简介 二、概念模型设计1.基本要素(符号介绍说明&…

immutable深拷贝:数据多层属性-不可变数据结构

一、为何要用immutable深拷贝? 1.浅拷贝(浅复制) //引用赋值-浅复制、浅拷贝 var obj{name:"溜溜球"}var obj2obj;obj2.name"刘刘球";console.log(obj);//name:"刘刘球"console.log(obj2);//name:"刘刘…

解说天下之操作系统

解说天下之操作系统 本文由桌案drawon (https://www.drawon.cn),云晶(https://www.yunjingxz.com)创始人根据多年从业经验, 从操作系统的起源,应用分类, 设计分类,以及资源使用角度对操作系统进…

2023年6月18日DAMA-CDGA/CDGP认证北京/上海/深圳报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…