网络协议——IP
IPv4地址
不论什么网络设备能够经过一个网络接口卡(NIC)接入网,假定该设备要能够访问的其它设备,然后该卡必须有一个唯一的地址。候接入多个网络,相应地该设备就有多个地址。假设这个设备是主机的话。一般被称为multihomed主机。
路由器一般有多个网卡并接入多个网络,所以路由器也有多个地址,可是一般不把路由器称为multihomed主机。
IPv4使用一个32位二进制地址,所以理论上可供使用的IPv4地址一共由4 294 967 296个,即2322^{32}。为了便于管理和寻址(路由),一个IPv4地址的32位被划分为两部分:网络ID和主机ID。
从左边開始的、连续的若干个二进制位作为网络ID,用于标识设备所在的网络;剩余的二进制位作为主机ID,用于标识在网络中的设备。
眼下有三种划分方法:分类法、子网化和CIDR。
分类法
基本划分
分类法是最早的、也是最简单的一种划分方法。它把IPv4地址固定地分为五类:A、B、C、D和E。
A类把前8位划分为网络ID。但第1位必须是0;
B类把前16位划分为网络ID,但前2位必须是10;
C类把前24位划分为网络ID。但前3位必须是110。
D类用于组播,但前4为必须是1110;
E类作为预留地址,可是前4位必须是1111。
分类法的五类地址取值范围:
类 | 取指范围 |
---|---|
A | 0.0.0.0~127.255.255.255 |
B | 128.0.0.0~191.255.255.255 |
C | 192.0.0.0~223.255.255.255 |
D | 224.0.0.0~239.255.255.255 |
E | 240.0.0.0~255.255.255.255 |
从表中能够看出,从A到E的取指范围是连续的。即从A类的第一个地址0.0.0.0開始到E类的最后一个地址255.255.255.255。中间没有不论什么的间断。
分类法的特点就是能够非常easy而且非常高速地确定随意一个IPv4地址的分类。由于最多仅仅须要检查其开头4位就能确定下来了。
特殊地址
网络地址
当一个IP地址中的主机ID的二进制位全为0时,该地址用来表示其网络ID所表示的网络。如192.168.1.0就表示网络ID为192.168.1的这个网络。广播地址
当一个IP地址中的主机ID的二进制位全为1时,该地址用来表示其网络ID所表示的网络的广播地址。如192.168.1.255。这是一个C类地址,其用于表示网络ID为192.168.1.0这个网络的广播地址。当前网络的主机地址
当一个IPv4地址中的网络ID的二进制位全为0时,该地址用来表示在当前网络、其主机ID所表示的主机。如0.0.0.123这个地址。表示的就是当前网络的主机ID为123的主机。通配地址0.0.0.0
用来表示本机的随意一个IP地址。在winsock2.h头文件中面,INADDR_ANY就定义为0x00000000,即0.0.0.0。
环回地址
在A类地址中,从127.0.0.0~127.255.255.255的全部地址被称为环回地址。顾名思义,环回就是自己发给自己,即全部发送到该地址范围的数据都是发送被本机。
一般来说,我们都使用127.0.0.1作为环回地址。而且其名字一般叫做localhost。在winsock2.h头文件中面。INADDR_LOOPBACK被定义为0x7f000001,即127.0.0.1。私有地址
不被公网所认可的特殊的IP地址。- 10.0.0.0~10.255.255.255(A类)
- 172.16.0.0~172.31.255.255(B类)
- 192.168.0.0~192.168.255.255(C类)
除此之外,另一个地址范围169.251.0.0~169.254.255.255,是在主机自己主动私有地址分配(APIPA)时使用的。在没有DHCPserver的网络环境下,各个主机能够使用APIPA来自己主动分给地址,使得它们之间仍然能够通信。
保留地址
- 0.0.0.0~0.255.255.255
- 128.0.0.0~128.0.255.255
- 191.255.0.0~191.255.255.255
- 192.0.0.0~192.0.0.255
- 223.255.255.0~223.255.255.255
0.0.0.0虽然是通配地址,但事实上它也是一个保留地址。虽然我们能够在程序里面使用它,可是不能把它作为IP地址来分配给一台主机。
分类法的优缺点
长处:地址本身包括了类别信息,并不须要额外的信息来确定一个地址的网络ID和主机ID。
缺点:没有考虑到一个机构里面可能存在多个子网络的问题。
子网化
在原有三类网络A、B和C的基础上。对其进行再划分,细分出能够石瑛各种网络规模的子网(Subnet)。
详细的说。就是在A、B和C类地址的基础上,对其主机ID部分再划分。即使用主机ID的前若干位作为子网ID。剩余的位作为在该子网里的主机ID。
子网掩码
子网掩码把其相应于IPv4地址中网络ID和子网ID的部分全部位设为1,其余设为0。
目的是当把IPv4地址和子网掩码进行与操作时,其结果就是该IPv4地址的完整网络地址。
能够依据网络的须要来设置子网ID的位数。
子网ID的位数越多,则支持的子网个数就越多,同一时候每一个子网可容纳的主机个数就越少。详细的说,假定原来在分类法的方案下,主机ID位数为N(24、16、8,分别相应于A、B、C类),假设我们选择前M(M>=0 && M<N
)位作为子网ID。则支持的子网个数为2M2^M,每一个子网所支持的主机个数为2N−M2^{N-M}。
可变长度子网掩码
可变长度子网掩码指的是我们在选择子网ID位数的时候。并不须要使全部划分出来的子网都具有同样位数的子网ID,而是能够依据须要,对不同的子网指定不同位数的子网ID。
无分类域间路由
CIDR就是应用VLSM的方法,把一个IPv4地址划分为网络ID和主机ID两部分,当中网络ID的位数能够依据网络的规模来灵活配置。
在CIDR中使用CIDR标记法来表示网络ID的位数。即在一个IPv4地址后先加一斜线(/)。然后在斜线后面加上一个数字,该数字就是网络ID的位数,如192.168.1.123/24,这个地址的前24为是网络ID,后面8位是主机ID。
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i ').text(i));
};
$numbering.fadeIn(1700);
});
});
网络协议——IP的更多相关文章
- 【RL-TCPnet网络教程】第22章 RL-TCPnet之网络协议IP
第22章 RL-TCPnet之网络协议IP 本章节为大家讲解IP(Internet Protocol,网络协议),通过前面章节对TCP和UDP的学习,需要大家对IP也有个基础的认识. (本章 ...
- 对TCP/IP网络协议的深入浅出归纳
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...
- iOS网络协议 HTTP/TCP/IP浅析
一.TCP/IP协议 话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样.一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通.两台电 ...
- 转:对TCP/IP网络协议的深入浅出归纳
转自:http://blog.jobbole.com/74795/ 前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没 ...
- 对TCP/IP网络协议的深入浅出归纳(转)
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...
- TCP/IP网络协议基础知识集锦[转]
引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以 ...
- 网络协议笔记-网络层-路由器的作用、IP地址
1-[路由器在网际互连中的作用] 1.1-[直接交付和间接交付] 直接交付:当主机A要向另一个主机B发送数据报时,要先检查目的主机B是否与源主机连接在同一个网络上.如果是,就将数据报直接交付给目的主机 ...
- 网络协议 2 - IP 是怎么来,又是怎么没的?
了解完网络协议,我们会发现,网络通信的五层模型里,有两个很重要的概念:IP 地址和 MAC 地址. 那么 IP 地址是怎么来的,又是怎么没的?MAC 地址与 IP 地址又有什么区别? 这回答上面问题前 ...
- 网络协议TCP/IP、IPX/SPX、NETBEUI简介
网络中不同的工作站,服务器之间能传输数据,源于协议的存在.随着网络的发展,不同的开发商开发了不同的通信方式.为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言.因而必须开发严格的标准 ...
随机推荐
- Android设计中的.9.png与Android Studio中的设置
在Android的设计过程中,为了适配不同的手机分辨率,图片大多需要拉伸或者压缩,这样就出现了可以任意调整大小的一种图片格式“.9.png”.这种图片是用于Android开发的一种特殊的图片格式,它的 ...
- Android 特殊符号的转码大全
项目中要在string.xml 中显示特殊符号,如@号冒号等,直接写肯定不行啦..只能考虑使用ASCII码进行显示: @号 @ :号 : 空格 以下为常见的ASCII十进制交换编码: --> ...
- windows下eclipse跑junit报错:CreateProcess error=206
from:http://isuifengfei.iteye.com/blog/1684262 windows下,eclipse中运行junit出现错误提示: Exception occurred ex ...
- R语言与数据分析之六:时间序列简介
今年在某服装企业蹲点了4个多月,之间非常长一段时间在探索其现货和期货预測.时间序列也是做销售预測的首选,今天和小伙伴分享下时间序列的基本性质和怎样用R来挖据时间序列的相关属性. 首先读入一个时间序列: ...
- 每次调用fork()函数之后,父线程和创建出的子线程都是从fork()后开始执行
Linux下多少个"-"将被打印: 1 2 3 4 5 6 7 8 int main(void){ int i; for(i=0;i<4;i++){ fork() ...
- vim高级编辑(一)
本文出自 http://blog.csdn.net/shuangde800 ------------------------------------------------------------ ...
- PAT 1055
题目链接:https://www.patest.cn/contests/pat-b-practise/1055 分析:思路很巧妙,感觉很有意义的字符串题目 #include<bits/stdc+ ...
- ZOJ3805:Machine
In a typical assembly line, machines are connected one by one. The first machine's output product wi ...
- 黑马程序员:Java基础总结----泛型(高级)
黑马程序员:Java基础总结 泛型(高级) ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...
- leetcode解析回文子串拆分
转载请注明来自souldak,微博:@evagle Given a string s, partition s such that every substring of the partition i ...