理解网络--IP 1.IP 地址的基础知识实际上IP地址并不是根据主机台数来配置的而是以网卡。像服务器、路由器等设备都是有2个以上的网卡也就是它们会有2个以上的IP地址。2.IP 地址的分类IP 地址分类成了5种类型分别是A类、B类、C类、D类、E类。上图中黄色部分为分类号用以区分IP地址类别。什么是 A、B、C 类地址A、B、C 分类地址最大主机个数是如何计算的呢最大主机个数就是要看主机号的位数如C类地址的主机号占8位那么C类地址的最大主机个数为什么要减2呢因为在IP地址中有两个IP是特殊的分别是主机号全为1和 全为0地址。主机号全为1指定某个网络下的所有主机用于广播主机号全为0指定某个网络因此在分配过程中应该去掉这两种情况。广播地址用于什么广播地址用于在同一个链路中相互连接的主机之间发送数据包。广播地址可以分为本地广播和直接广播两种。在本网络内广播的叫做本地广播。例如网络地址为192.168.0.0/24的情况下广播地址是192.168.0.255。因为这个广播地址的IP包会被路由器屏蔽所以不会到达192.168.0.0/24以外的其他链路上。在不同网络之间的广播叫做直接广播。例如网络地址为192.168.0.0/24的主机向192.168.1.255/24的目标地址发送IP包。收到这个包的路由器将数据转发给192.168.1.0/24从而使得所有192.168.1.1~192.168.1.254的主机都能收到这个包由于直接广播有一定的安全问题多数情况下会在路由器上设置为不转发 。什么是 D、E 类地址而 D 类和 E 类地址是没有主机号的所以不可用于主机 IPD 类常被用于多播E 类是预留的分类暂时未使用。多播地址用于什么多播用于将包发送给特定组内的所有主机。由于广播无法穿透路由若想给其他网段发送同样的包就可以使用可以穿透路由的多播。多播使用的D类地址其前四位是1110就表示是多播地址而剩下的28位是多播的组编号。从224.0.0.0 ~ 239.255.255.255都是多播的可用范围其划分为以下三类224.0.0.0 ~ 224.0.0.255为预留的组播地址只能在局域网中路由器是不会进行转发的。224.0.1.0 ~ 238.255.255.255为用户可用的组播地址可以用于Internet上。239.0.0.0 ~ 239.255.255.255为本地管理组播地址可供内部网在内部使用仅在特定的本地范围内有效。IP 分类的缺点缺点一同一网络下没有地址层次比如一个公司里用了B类地址但是可能需要根据生产环境、测试环境、开发环境来划分地址层次而这种IP分类是没有地址层次划分的功能所以这就缺少地址的灵活性。缺点二不能很好的与现实网络匹配。C类地址能包含的最大主机数量实在太少了只有254个估计一个网吧都不够用。而B类地址能包含的最大主机数量又太多了6万多台机器放在一个网络下面一般的企业基本达不到这个规模闲着的地址就是浪费。这两个缺点都可以在CIDR无分类地址解决。3.无分类地址 CIDR怎么划分网络号和主机号的呢表示形式a.b.c.d/x其中/x表示前x位属于网络号x的范围是0 ~ 32这就使得IP地址更加具有灵活性。比如10.100.122.2/24这种地址表示形式就是CIDR/24表示前24位是网络号剩余的8位是主机号。还有另一种划分网络号与主机号形式那就是子网掩码掩码的意思就是掩盖掉主机号剩余的就是网络号。将子网掩码和IP地址按位计算AND就可得到网络号。为什么要分离网络号和主机号怎么进行子网划分在上面我们知道可以通过子网掩码划分出网络号和主机号那实际上子网掩码还有一个作用那就是划分子网。举例由于子网网络地址被划分成2位那么子网地址就有4个分别是00、01、10、11具体划分如下图公有 IP 地址与私有 IP 地址在A、B、C分类地址实际上有分公有IP地址和私有IP地址。平时我们办公室、家里、学校用的IP地址一般都是私有IP地址。因为这些地址允许组织内部的IT人员自己管理、自己分配而且可以重复。因此你学校的某个私有IP地址和我学校的可以是一样的。公有IP地址是有个组织统一分配的假设你要开一个博客网站那么你就需要去申请购买一个公有IP这样全世界的人才能访问。并且公有IP地址基本上要在整个互联网范围内保持唯一。公有 IP 地址由谁管理呢私有IP地址通常是内部的IT人员管理公有IP地址是由ICANN组织管理中文叫「互联网名称与数字地址分配机构」。IANA是ICANN的其中一个机构它负责分配互联网IP地址是按州的方式层层分配。ARIN北美地区LACNIC拉丁美洲和一些加勒比群岛RIPE NCC欧洲、中东和中亚AfriNIC非洲地区APNIC亚太地区其中在中国是由CNNIC的机构进行管理它是中国国内唯一指定的全局IP地址管理的组织。4.IP 地址与路由控制IP地址的网络地址这一部分是用于进行路由控制。在发送IP包时首先要确定IP包首部中的目标地址再从路由控制表中找到与该地址具有相同网络地址的记录根据该记录将IP包转发给相应的下一个路由器。如果路由控制表中存在多条相同网络地址的记录就选择相同位数最多的网络地址也就是最长匹配。路由表的每一个表项包含目标网络IP下一跳IP接口名。目标网络IP用于路由匹配下一跳用于确定转发目标接口名用于确定转发接口。环回地址是不会流向网络环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。计算机使用一个特殊的IP地址127.0.0.1作为环回地址。与该地址具有相同意义的是一个叫做localhost的主机名。使用这个IP或主机名时数据包不会流向网络。5.IP 分片与重组TCP下一般控制TCP单个段不会越过MTU这样每个TCP报文无需IP层分片TCP段重传也较为高效。6.IPv6 基本认识IPv6 的亮点IPv6的地址是128位的这可分配的地址数量是大的惊人IPv6可自动配置即使没有DHCP服务器也可以实现自动分配IP地址IPv6包头包首部长度采用固定的值40字节去掉了包头校验和简化了首部结构减轻了路由器负荷大大提高了传输的性能。IPv6 地址的标识方法IPv6地址长度是128位是以每16位作为一组每组用冒号「:」隔开。如果出现连续的0时还可以将这些0省略并用两个冒号「::」隔开。但是一个IP地址中只允许出现一次两个连续的冒号。IPv6 地址的结构IPv6 的地址主要有以下类型地址单播地址用于一对一的通信组播地址用于一对多的通信任播地址用于通信最近的节点最近的节点是由路由协议决定没有广播地址IPv6 单播地址类型在同一链路单播通信不经过路由器可以使用链路本地单播地址IPv4 没有此类型在内网里单播通信可以使用唯一本地地址相当于 IPv4 的私有 IP在互联网通信可以使用全局单播地址相当于 IPv4 的公有 IPIPv4 首部与 IPv6 首部取消了首部校验和字段。 因为在数据链路层和传输层都会校验因此 IPv6 直接取消了 IP 的校验。取消了分片/重新组装相关字段。 分片与重组是耗时的过程IPv6 不允许在中间路由器进行分片与重组这种操作只能在源与目标主机。取消选项字段。 选项字段不再是标准 IP 首部的一部分了但它并没有消失而是可能出现在 IPv6 首部中的「下一个首部」指出的位置上。7.IP 协议相关技术7.1.DNSDNS可以将域名网址自动转换为具体的IP地址。7.2.ARP可以通过 ARP 协议求得下一跳的 MAC 地址。RARP 协议你知道是什么吗ARP协议是已知IP地址求MAC地址那RARP协议正好相反它是已知MAC地址求IP地址。通常这需要架设一台RARP服务器在这个服务器上注册设备的MAC地址及其IP地址。7.3.DHCP通过DHCP动态获取IP地址。客户端首先发起DHCP发现报文DHCP DISCOVER 的IP数据报由于客户端没有IP地址也不知道DHCP服务器的地址所以使用的是UDP广播通信。DHCP服务器收到DHCP发现报文时用DHCP提供报文DHCP OFFER 向客户端做出响应。该报文仍然使用IP广播地址255.255.255.255该报文信息携带服务器提供可租约的IP地址、子网掩码、默认网关、DNS服务器以及IP地址租用期。客户端收到一个或多个服务器的DHCP提供报文后从中选择一个服务器并向选中的服务器发送DHCP请求报文DHCP REQUEST进行响应回显配置的参数。最后服务端用DHCP ACK报文对DHCP请求报文进行响应应答所要求的参数。如果租约的DHCP IP地址快期后客户端会向服务器发送DHCP请求报文服务器如果同意继续租用则用DHCP ACK报文进行应答客户端就会延长租期。服务器如果不同意继续租用则用DHCP NACK报文客户端就要停止使用租约的IP地址。DHCP服务器和DHCP客户端跨局域网时需通过中继代理实现请求-响应。7.4.NAT单的来说NAT就是同个公司、家庭、教室内的主机对外部通信时把私有IP地址转换成公有IP地址。图中有两个客户端192.168.1.10和192.168.1.11同时与服务器183.232.231.172进行通信并且这两个客户端的本地端口都是1025。此时两个私有IP地址都转换IP地址为公有地址120.229.175.121但是以不同的端口号作为区分。7.5.ICMPICMP全称是Internet Control Message Protocol也就是互联网控制报文协议。ICMP 功能都有啥ICMP主要的功能包括确认IP包是否成功送达目标地址、报告发送过程中IP包被废弃的原因和改善网络设置等。ICMP 类型ICMP 大致可以分为两大类一类是用于诊断的查询消息也就是「查询报文类型」另一类是通知出错原因的错误消息也就是「差错报文类型」ping这个程序是使用了ICMP里面的ECHO REQUEST类型为8 和ECHO REPLY类型为0。7.6.IGMPIGMP是因特网组管理协议工作在主机组播成员和最后一跳路由之间如上图中的蓝色部分。通过IGMP最后一跳路由器可以知道针对某个特定组播地址其所在子网是否存在此组播组成员从而决定是否需要将收到的组播数据包向子网成员转发。