IP
1. A类IP地址
一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。
2. B类IP地址
一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机 。
3. C类IP地址
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机。
4. D类地址用于多点广播(Multicast)。
D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
5. E类IP地址
以“11110”开始,为将来使用保留。
全零(“0.0.0.0”)地址对应于当前主机。全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址。
在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下:
A类地址:10.0.0.0~10.255.255.255
B类地址:172.16.0.0~172.31.255.255
C类地址:192.168.0.0~192.168.255.255
A类地址的第一组数字为1~126。注意,数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。
B类地址的第一组数字为128~191。
C类地址的第一组数字为192~223。
私有IP地址范围:
A: 10.0.0.0~10.255.255.255 即10.0.0.0/8
B:172.16.0.0~172.31.255.255即172.16.0.0/12
C:192.168.0.0~192.168.255.255 即192.168.0.0/16
TCP
HTTP
NAT
NAT(Network Address Translation)网络地址转换,主要针对IP v4地址不足提出的一种应对办法。其基本思想是为某个公司或单位分配一个或少量IP地址用于传输Internet流量,而在公司内部每台机器有自己的内部IP,内部机器之间通过内部IP传输流量;当一个内部分组需要传输到Internet上时通过NAT做网络地址转换,将内部IP转换成分配的对应InternetIP,现在的路由器一般都有这个功能。三段保留的私有IP或内部IP地址是:
10.0.0.0-10.255.255.255/8
172.16.0.0-172.31.255.255/12
192.168.0.0-192.168.255.255/16
上面只描述了一个分组出去的情形即替换内部IP即可,当一个应答分组回来的时候,那么NAT设备怎么知道用哪个目标IP来替换外部IP呢?理论上可以在IP头部添加一个新的域来保存最原始的IP地址,但这需要改变Internet上所有机器运行的的IP协议,显然不是一个有效的办法。发现所有IP分组携带的不是TCP就是UDP数据包,它们都包含了一个源端口和一个目的端口,NAT正是通过端口来解决上面提到的映射问题。
NAT设计上的一些缺陷:
1.NAT违反了IP的结构模型,本来的结构模型声明一个IP地址唯一标示一台机器,Internet路由也建立在此基础上,而NAT使得N台机器使用同一个IP;
2.NAT将Internet网络从一个无连接的网络变成一个面向连接的网络:NAT维护每个经过分组的映射信息:网络维护连接的状态,这种是面向连接网络的特性。一旦NAT设备崩溃其维护的映射关系丢失,进而导致所有TCP连接被破坏。而如果不使用NAT当路由器崩溃时是不会影响到TCP连接的。
3.NAT违反了软件分层的原则,网络层的功能依赖传输层数据的状态;如果TCP升级就可能导致NAT设备不能正常工作;
4.对于Internet上的非TCP或UDP进程,NAT无法正常工作;导致扩展新协议带来困难;
ARP协议:
由于数据链路层并不理解IP地址,绝大多数机器通过NIC解答LAN上,只能看到LAN地址。每个NIC在出厂的时候都全球唯一标示的一个MAC地址(MAC地址前24位是厂商ID,后24厂商自己分配)。因此需要建立IP到MAC地址的映射关系。
以以太网为例:机器A要发送一个分组到目标IP(机器B),机器A通过IP协议只能知道发送的目标IP是否跟自己在一个网络、是否需要路由,但无法确定目标机器具体的MAC地址。在小型网络中可以手工维护这个映射很容易办到,但是当网络达到一定规模,手工维护的效率会非常低下。通常机器A可以发送一个广播分组到以太网去询问谁拥有目标IP,而拥有目标IP的机器将自己的MAC作为应答回复给A。而这个就是ARP协议运行过程。为了避免频繁的广播,一般会将IP-MAC映射关系缓存起来,而且为了避免来回确认在广播的时候直接将自己的IP-MAC映射放到广播分组中从而提高效率。
此外,一个机器在启动时通常会将其IP-MAC映射关系进行广播:发送一个ARP请求查找自己的IP地址,正常情况下通过这个广播会把自己的映射关系保存到其他机器缓存中,并且不会收到任何回应;如果收到应答说明子网中存在跟你一样的IP,相信大家也遇到过系统IP冲突的提示。映射关系存在缓存,那么相应的就存在缓存刷新的问题,通过设定一个特定的超时时间即可。