长丰网站建设,企业网站开发怎么样,龙岩市建设部网站,软件开发app下载安卓如果这篇有没接触过的知识点#xff0c;请转到网络编程先导知识_小梁今天敲代码了吗的博客-CSDN博客
目录 IPv4和IPv6的概念#xff1a;
子网掩码
默认网关
ping命令
端口
OSI网络分层模型
TCP/IP四层模型
字节序转换函数
IP地址转换
上一篇介绍了网络编程的先导知…如果这篇有没接触过的知识点请转到网络编程先导知识_小梁今天敲代码了吗的博客-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。