`
lobin
  • 浏览: 417661 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

网络协议 第2篇: IP

 
阅读更多

IP

IPv4网络地址是一个32位的地址。

 

可以通过inet_addr函数将一个点分格式的IP地址(如192.168.0.1)转化为32位的地址(一个32位的无符号整数)。

 

另外还有个函数inet_network也可以,其返回的32位的地址是以主机序存储的,所以不要被函数名中的network迷惑以为是返回的是网络序。inet_addr返回的32位的地址是以网络序存储。

 

IP地址(点分格式)转化为32位的地址如下:

/* Convert string containing dotted ip address to binary form */
/* returns 0 if invalid address */

/* BB add address family, change rc to status flag and return *//* also see inet_pton */
/* To identify v4 vs. v6 - 1) check for colon (v6 only) 2) then call inet_pton to parse for bad address  */
int
inet_addr(char *cp)
{
	struct in_addr address;
	int value;
	int digit;
	int i;
	char temp;
	char bytes[4];
	char *end = bytes;
	static const int addr_class_max[4] =
	    { 0xffffffff, 0xffffff, 0xffff, 0xff };

	for (i = 0; i < 4; i++) {
		bytes[i] = 0;
	}

	temp = *cp;

	while (TRUE) {
		if (!isdigit(temp))
			return 0;

		value = 0;
		digit = 0;
		for (;;) {
			if (isascii(temp) && isdigit(temp)) {
				value = (value * 10) + temp - '0';
				temp = *++cp;
				digit = 1;
			} else
				break;
		}

		if (temp == '.') {
			if ((end > bytes + 2) || (value > 255))
				return 0;
			*end++ = value;
			temp = *++cp;
		} else
			break;
	}

	/* check for last characters */
	if (temp != '\0' && (!isascii(temp) || !isspace(temp)))
		if (temp != '\\') {
			if (temp != '/')
				return 0;
			else
				(*cp = '\\');	/* switch the slash the expected way */
		}
	if (value > addr_class_max[end - bytes])
		return 0;

	address.s_addr = *((int *) bytes) | htonl(value);
	return address.s_addr;

}

 

代码:

in_addr_t sin_addr = inet_addr("127.0.0.1");
in_addr_t sin_addr_nt = inet_network("127.0.0.1");

printf("%u, %u(%u)\n", sin_addr, sin_addr_nt, ntohl(sin_addr_nt));

网络地址定义为如下结构:

/* Internet address. */

struct in_addr

{

  in_addr_t s_addr;

};

可以通过函数将一个点分格式的IP地址(如192.168.0.1)转化为in_addr的结构。

 

inet_aton函数

将一个点分格式的IP地址(如192.168.0.1)转化为in_addr的结构。返回的网络地址是以网络序存储,也就是s_addr是以网络序存储的32位的地址。

 

代码:

  struct in_addr addr;

  int ret1 = inet_aton("127.0.0.1", &addr);
  if (! ret1)
  {
    printf("invalid addr 127.0.0.1\n");
  }
  else 
  {
    printf("%u\n", addr.s_addr);
  }

 

 

0
0
分享到:
评论

相关推荐

    CIP协议规范第一卷

    本篇将详细解析CIP协议规范的第一卷内容。 首先,CIP协议的核心目标是提高设备间的互操作性和系统集成的灵活性。它不仅支持实时控制通信,还包含了对数据管理和信息共享的支持,这使得CIP能够满足从底层传感器到...

    TCP/IP协议与网络编程技术

    第2章:介绍TCP/IP协议层次结构中网络接口层包含的内容,主要有物理层和数据链路的相关知识。 第3章:介绍TCP/IP协议层次结构中网络层及其相关知识。主要内容有IP数据报格式、IP层的功能、IP地址、ICMP协议、地址...

    TCPIP协议详解卷2:实现

    目前从事软件需求工程、网络协议验证形式化方法以及函数式语言等方面的研究。 译者序: 我们愿意向广大的读者推荐W. Richard Stevens关于TCP/IP的经典著作(共3卷)的中译本。本书是其中的第2卷:《TCP/IP详解 卷2:...

    【信息收集篇】第03篇:假设知道服务器IP,如何找到它绑定的域名?1

    在网络安全和信息收集的过程中,有时候我们只掌握到服务器的IP地址,却需要找出它所绑定的域名。以下是一些有效的技术方法,可以帮助我们完成这个任务: 1. **IP历史解析记录**: 通过查询IP地址的历史解析记录,...

    uCOS软件包.rar_TCP IP_TCP/IP协议_uC OS_ucos ip_ucos-ii

    总的来说,将TCP/IP协议栈整合到uCOS-II系统中是一项复杂但关键的工作,涉及到操作系统、网络协议、硬件驱动等多个层面的技术。正确理解和应用这些知识,能帮助开发者构建出功能强大的网络化嵌入式系统。

    这是一篇总结网络协议的说明文档

    本文主要总结了网络协议的相关知识,特别是TCP/IP协议栈的处理流程和一些常见的应用层协议。TCP/IP协议族是互联网的核心,它定义了不同层次的协议,确保数据在网络中的可靠传输。 TCP/IP处理流程涉及四个主要层次:...

    IP交换技术协议与体系结构

    第二部分 IP交换协议 第9章 IFMP与GSMP 125 9.1 体系结构 125 9.2 组件 127 9.3 Ipsilon数据流管理协议 129 9.3.1 IFMP重定向协议 129 9.3.2 数据流标记封装 130 9.4 通用交换机管理协议 131 9.4.1 消息类型 132 ...

    构建H3C高性能园区网络_第5篇_IP组播-13251906867.pdf

    IP组播技术是一种网络通信技术,它能够实现数据在IP网络中的点到多点的高效传送。与传统的单播和广播技术相比,组播在传输效率和带宽利用率上有显著优势,能够有效地节约网络带宽和降低网络负载。 单播技术指的是在...

    tcpip详解\tcp-ip详解卷1:协议

    第二部分,互联网层,深入剖析了IP协议,包括IP分组的路由选择、IP地址的分配与子网划分、ICMP控制报文协议、ARP和RARP协议。此外,还探讨了IP的扩展,如IP选项、IP多播以及IPv6的基本概念。 第三部分,传输层,...

    《考取HCIA证书,看我就够了》第一篇:MAC地址、二层寻址、ARP

    综上所述,掌握MAC地址、二层寻址和ARP协议是网络工程师的基础技能,它们是构建和维护网络通信的关键元素。在华为的HCIA认证学习过程中,深入理解这些概念将有助于你成功通过考试并有效地解决实际网络问题。

    第二章网络协议与安全.pptx

    网络协议与安全是计算机网络中不可或缺的组成部分,它们确保了数据的有效传输和网络环境的稳定性。本篇将详细探讨OSI模型、TCP/IP协议体系结构、ARP协议、IP协议及其安全问题,以及TCP协议和相关的网络状态查看。 ...

    TCPIP考试题目及答案.pdf

    这篇文章将从 TCP/IP 协议的基本概念、网络编程技术、路由协议、IP 地址管理机构、Internet 工作委员会、自治系统、距离向量路由算法、滑动窗口协议、VLSM、迭代服务器等方面进行详细的介绍。 一、TCP/IP 协议 TCP...

    05、第五单元-网络层-IP数据报2

    本篇将深入探讨网络层的关键概念,包括IP数据报、IP地址、路由协议以及RIP、OSPF和BGP等协议的运作机制。 首先,我们来了解IP数据报。IP数据报是网络层传输的基本单元,其格式包括版本、头部长度、服务类型、总长度...

    IP隧道技术

    PPTP、L2TP和L2F(第2层转发)都属于第2层隧道协议,都是将数据封装在点对点协议(PPP)桢中通过互联网络发送。第3层隧道协议对应OSI模型中的网络层,使用包作为数据交换单位。IP over IP以及IPSec隧道模式都属于第3...

    第02篇:如何防止CDN防护被绕过1

    在网络安全领域,CDN(内容分发网络)通常作为第一道防线,用于提供高可用性和抵御DDoS等网络攻击。然而,攻击者有时会尝试绕过CDN防护,直接找到并攻击源站。本文主要讨论如何防止这种情况发生,特别是在一个典型的...

    Vs2008开发TCP/IP通信协议类,并获取公网IP地址

    本篇将详细讲解如何在VS2008中利用VB.NET开发TCP/IP通信协议类,并获取公网IP地址。 首先,理解TCP/IP协议。TCP/IP协议族是由多个协议组成的,包括网络接口层、网络层、传输层和应用层。在传输层,TCP(传输控制...

    第01篇:搭建匿名SMTP服务器1

    电子邮件欺骗,特别是通过SMTP协议,是一个严重的网络安全问题。SMTP(Simple Mail Transfer Protocol)不强制要求身份验证,使得攻击者能够轻易地伪造电子邮件头信息,从而伪装成任何发件人地址。这种行为被称为...

    网络工程师考试考点分析与真题详解.网络设计与管理篇

    123 6.2.1 系统生命周期 123 6.2.2 系统经济效益 125 6.2.3 系统的可扩充性 127 6.2.4 建议改进系统的要点 127 第7章 网络系统实现技术 129 7.1 商用网络协议 129 7.1.1 SNA/APPN 129 7.1.2...

Global site tag (gtag.js) - Google Analytics