1、什么是ip地址

IP地址是一种Internet上的主机编址方式,也称为网际协议地址。  IP地址是任意一台主机在网络中的唯一标识

2、 IP地址的分类

1、ipv4,占32位  
         2、ipv6,占128位

3、 IPV4地址的组成

ipv4一般使用点分十进制字符串来标识,比如192.168.3.103
         使用32bit,由{网络ID,主机ID}两部分组成
         子网ID:IP地址中由子网掩码中1覆盖的连续位
         主机ID:IP地址中由子网掩码中0覆盖的连续位

4、 ip地址特点

子网ID不同的网络不能直接通信,如果要通信则需要路由器转发
主机ID全为0的IP地址表示网段地址
主机ID全为1的IP地址表示该网段的广播地址
例如:
192.168.3.10和192.168.3.111可以直接通信
如果192.168.3.x网段而言,192.168.3.0表示网段,192.168.3.255表示广播地址

问题1:为什么我们要学它,它有什么作用?

比如,我跟你打电话,我是不是需要拨打你的号码,你的电话才会响应。号码就相当于我们的ip地址,我知道你的号码(ip),就可以跟你通信。同理,我们学习网络编程,我们要互相通信,是不是也需要一个ip,把ip作为媒介,从而找到你。

问题2:192.168.3.50  此ip属于什么类型?计算机能识别的出来??

答:此ip属于我们人为识别的字符串,计算机是不能直接识别出来,因此,我们就需要把这个人为识别的字符串,转化成计算机能识别的整型数据。

5、地址转化函数(inet_pton())

字符串ip地址转整型数据
头文件

#include <arpa/inet.h>
函数

int inet_pton(int family,const char *strptr, void *addrptr);
功能:
            将点分十进制数串转换成32位无符号整数
参数:
            family 协议族
                                  AF_INET IPV4网络协议
                                  AF_INET6 IPV6网络协议
             strptr 点分十进制数串
             addrptr 32位无符号整数的地址
返回值:
            成功返回1
            失败返回其它

#include<stdio.h>
#include <arpa/inet.h>int main()
{char src[] ="192.168.3.50";unsigned int dst=0;unsigned char *q=NULL;inet_pton(AF_INET,src,&dst);printf("dst = %d\n",dst);q=(char *)&dst;printf("%d,%d,%d,%d\n",*q,*(q+1),*(q+2),*(q+3));return 0;}

运行结果

dst = 839100608
192,168,3,50

6、整型数据转字符串格式ip地址

头文件

#include <arpa/inet.h>
函数

const char *inet_ntop(int family, const void *addrptr, char *strptr, size_t len);
功能:
           将32位无符号整数转换成点分十进制数串
参数:
           family 协议族
           addrptr 32位无符号整数
           strptr 点分十进制数串
           len strptr缓存区长度

len的宏定义
          #define INET_ADDRSTRLEN 16           //即 ipv4
          #define INET6_ADDRSTRLEN 46         //即 ipv6

返回值:
            成功:则返回字符串的首地址
            失败:返回NULL

#include<stdio.h>
#include <arpa/inet.h>int main()
{unsigned char src[]={192,168,3,50};char q[20];inet_ntop(AF_INET,&src,q,16);   printf("q=%s\n",q);return 0;}

运行结果

q=192.168.3.50

7、inet_addr()和inet_ntoa()

                                这两个函数只能用于在ipv4地址的转换(常用)

7.1、inet_addr()

头文件:

#include <sys/socket.h>
              #include <netinet/in.h>
              #include <arpa/inet.h>
函数:
             in_addr_t    inet_addr(const char *cp);
 功能:

将点分十进制ip地址转化为整形数据
 参数:
              cp:点分十进制的IP地址
 返回值:
              成功:整形数据

#include<stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>int main()
{unsigned long int addr;addr=inet_addr("192,168.3.50");printf("addr = %ld\n",addr);return 0;}

运行结果

addr = 4294967295

7.2、inet_ntoa()

函数:

char *   inet_ntoa(struct in_addr in);
 功能:

将整形数据转化为点分十进制的ip地址
 参数:
             in:保存ip地址的结构体
 返回值:

成功:点分十进制的IP地址

IP地址转化(学习笔记)相关推荐

  1. 关于 “IP地址“ 的学习笔记

    一.交换机 局域网:一般称为内网 简单局域网的构成:交换机,网线,PC(其他IT终端) 交换机:用来组建内网的局域网的设备 二.IP地址 IP地址就是一个唯一标识,是一段网络编码(二进制编码) 由四个 ...

  2. TCP/IP详解学习笔记-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  3. 【转】:TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute

    TCP/IP详解学习笔记(4)-ICMP协议,ping和Traceroute 分类:            TCP/IP详解学习笔记计算机网络2006-04-20 18:147970人阅读评论(1)收 ...

  4. 基础才是王道——TCP/IP详解学习笔记 这位仁兄写得太好了

    TCP/IP详解学习笔记 这位仁兄写得太好了 TCP/IP详解学习笔记   这位仁兄写得太好了. http://blog.csdn.net/goodboy1881/category/204448.as ...

  5. TCP/IP详解学习笔记(1)-基本概念

    为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样 ...

  6. TCP/IP详解学习笔记

    [TCP/IP详解学习笔记(1)基本概念] 为什么会有TCP/IP协议? 计算机型号多种多样,并且运行于不同操作系统.虽然电线把计算机连接到了一起,但是这些计算机无法"交流",所以 ...

  7. TCP/IP详解学习笔记 这位仁兄写得太好了.

    http://blog.csdn.net/goodboy1881/category/204448.aspx TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样 ...

  8. TCP/IP网络编程 学习笔记_3 --给套接字分配IP地址和端口号

    IP地址和端口号 1,IP地址:为使计算机连接到网络并收发数据,必须为其分配IP地址.IP地址分为两类:IPv4(4字节地址族)和IPv6(16字节地址族).它们主要区别就是在表示IP地址所用的字节数 ...

  9. TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议

    把这三个协议放到一起学习是因为这三个协议处于同一层,ARP协议用来找到目标主机的Ethernet网卡Mac地址,IP则承载要发送的消息.数据链路层可以从ARP得到数据的传送信息,而从IP得到要传输的数 ...

最新文章

  1. Lync与Exchange 2013 UM集成:Exchange 配置
  2. 基于Matlab的多层BP神经网络在非线性函数拟合中的应用
  3. 快速撑握C#知识点系列文章
  4. p:commandButton vs h:commandButton
  5. fatal: Could not read from remote repository.的解决办法 . (git项目上传报错)
  6. linux中权限的名词解释,Linux的基本权限和特殊权限
  7. Mobius反演定理-BZOJ2154
  8. 拓端tecdat|R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)
  9. 我的大学十年——林锐
  10. Map的实现类中,哪些是有序的,哪些是无序的
  11. 实施(运维)工程师 笔试选择题
  12. bert tensorflow2 serving部署
  13. QT中使用GDAL多线程读取遥感图像到QImage
  14. Prompt learning系列之入门篇
  15. 原型软件 (Prototype Development)开发指南
  16. 商场wifi覆盖方案
  17. 苏宁联盟接入php,苏宁api申请教程
  18. 矩阵论 内积空间几何表示图解
  19. 计算机监测可以装win10,怎么检测自己的电脑能否匹配Win10系统
  20. C++核心编程 17多态

热门文章

  1. 分享本年度最佳的15个 Photoshop 实例教程
  2. gd32f303 设计中断优先级_ALIENTEK 阿波罗 STM32F767 开发板资料连载第九章 外部中断实验...
  3. mini6410_lcd驱动移植,字体模糊重影问题
  4. R语言 分组计算,不止group_by
  5. ISIC Archive数据集下载
  6. Win PE 是什么?
  7. el.scrollHeight属性的理解
  8. 一键刷机三星I9220
  9. 2008年奥巴马胜选演讲
  10. 诺顿防火墙 linux,诺顿怎么设置防火墙