首页 > 其他分享 >网络基础

网络基础

时间:2023-10-18 21:46:46浏览次数:30  
标签:字节 基础 网络 地址 内存 IP地址 字符串 整形

目录

字节序和大小端

字节序,顾名思义字节的顺序,就是大于一个字节类型的数据在内存中的存放顺序,也就是说对于单字符来说是没有字节序问题的,字符串是单字符的集合,因此字符串也没有字节序问题。

字符串也没有字节序问题

  • Little-Endian -> 主机字节序 (小端)

数据的低位字节存储到内存的低地址位, 数据的高位字节存储到内存的高地址位
我们使用的PC机,数据的存储默认使用的是小端

  • Big-Endian -> 网络字节序 (大端)

数据的低位字节存储到内存的高地址位, 数据的高位字节存储到内存的低地址位
套接字通信过程中操作的数据都是大端存储的,包括:接收/发送的数据、IP地址、端口。

// 有一个16进制的数, 有32位 (int): 0xab5c01ff
// 字节序, 最小的单位: char 字节, int 有4个字节, 需要将其拆分为4份
// 一个字节 unsigned char, 最大值是 255(十进制) ==> ff(16进制) 
                 内存低地址位                内存的高地址位
--------------------------------------------------------------------------->
小端:         0xff        0x01        0x5c        0xab
大端:         0xab        0x5c        0x01        0xff

大小端转换函数

整形数字的转换

#include <arpa/inet.h>
// u:unsigned
// 16: 16位, 32:32位
// h: host, 主机字节序
// n: net, 网络字节序
// s: short
// l: int

// 这套api主要用于 网络通信过程中 IP 和 端口 的 转换
// 将一个短整形从主机字节序 -> 网络字节序
uint16_t htons(uint16_t hostshort);	
// 将一个整形从主机字节序 -> 网络字节序
uint32_t htonl(uint32_t hostlong);	

// 将一个短整形从网络字节序 -> 主机字节序
uint16_t ntohs(uint16_t netshort)
// 将一个整形从网络字节序 -> 主机字节序
uint32_t ntohl(uint32_t netlong);

IP地址转换

字符串到整形 小段->大端

// 主机字节序的IP地址转换为网络字节序
// 主机字节序的IP地址是字符串, 网络字节序IP地址是整形
int inet_pton(int af, const char *src, void *dst); 

参数:

  • af: 地址族(IP地址的家族包括ipv4和ipv6)协议
    • AF_INET: ipv4格式的ip地址
    • AF_INET6: ipv6格式的ip地址
  • src: 传入参数, 对应要转换的点分十进制的ip地址: 192.168.1.100
  • dst: 传出参数, 函数调用完成, 转换得到的大端整形IP被写入到这块内存中

返回值:成功返回1,失败返回0或者-1

大端->小端 字符串->字符串

#include <arpa/inet.h>
// 将大端的整形数, 转换为小端的点分十进制的IP地址        
const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);

标签:字节,基础,网络,地址,内存,IP地址,字符串,整形
From: https://www.cnblogs.com/liviayu/p/17769622.html

相关文章

  • 渗透测试基础
    前言:在tryhackme上学习渗透测试基础,故记录一下1网络安全框架概念:网络安全框架是一套结构化的方法、工具和技术,用于保护计算机网络和系统免受各种网络威胁和攻击。它的主要目标是提供一种综合性的解决方案,以确保网络的机密性、完整性和可用性。网络安全框架通常涵盖以下方面:......
  • STM32 ADC基础知识讲解
    (文章目录)前言在正式的学习如何编写ADC代码时我们先来学习一下ADC的基础知识部分,只有掌握好了这些基础知识才能顺利的进行后面的代码编写。一、ADC的基本介绍ADC指的是模数转换器(Analog-to-DigitalConverter),它是一种用于将模拟信号转换为数字信号的电子设备或电路。模拟信......
  • VLAN虚拟网络
    VLAN名称:vlan虚拟局域网(virtualLAN)用途由于交换机所有的端口都在同一广播域,只要发送广播会产生大量的垃圾信息,同时会有病毒的安全隐患(病毒)。为了解决上述问题1、物理解决需要在交换机之间添加路由器(成本太高)2、逻辑解决使用vlan虚拟局域网技术优势控制广播增强网络安......
  • 基础知识
    绿色框内所有东西都要依靠操作系统来实现。命令接口    并发   ......
  • 认识HTML基础标签
    一文本标题<h1></h1><h2></h2>...<h6></h6>文本标题默认加粗,竖着排列,垂直有缝隙,文本大小从h1到h6由大到小<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport......
  • 【笔记】数据库、网络故障与恢复
    【笔记】数据库故障与恢复数据库故障主要分:事务故障、系统故障和介质故障事务故障是指事务在运行至正常终点前被终止,此时数据库可能出现不正确的状态。是由于事务程序内部错误而引起的,有些可以预期,如金额不足等,有些不可以预期,如非法输入、运算溢出等。类似于手动执行回滚恢......
  • Python基础习题1
    请大家不要上网搜索或在pycharm里试运行,尽量要闭卷做练习,做错的我们统一讲解。 1. 关于 Python的编程环境,下列的哪个表述是正确的?(   )A、Python的编程环境是图形化的;B、 Python只有一种编程环境ipython;C、Python自带的编程环境是IDLE;D、用windows自带的......
  • 6.卷积神经网络
    卷积层的作用一在说卷积层之前,我想先说一下为什么会有卷积层;前面几个博客提到的神经网络都是用矩阵乘法来建立输入和输出之间的关系,如果有n个输入和m个输出,那么就需要n*m个参数;如果n和m很大并且有多个全连接层的话需要的参数数量是庞大的;卷积层就是通过三个特性来解......
  • 新手上路:如何进行网络映射,实现公网访问安防视频LiteCVR平台?
    最近接到一个用户需求,需要在现场进行简单的映射,从而实现公网访问LiteCVR的Web页面,方便运维。今天我们来介绍下实现方法。LiteCVR平台可在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。平台可提供......
  • 防火墙网络放行
    通常做设置时需要对指定的程序或端口进行防火墙放行@echooffrem设置需要启动的端口setOTHERPORT=1433,3389rem启用防火墙常规端口可以删除netshadvfirewallfirewalladdrulename="_Ping"dir=inprotocol=icmpv4action=allownetshadvfirewallfirewalladdr......