一点一滴成长

导航

TCP/IP协议(4):网络层

网络层上有IP、ICMP、IGMP等协议。

1、IP地址

   在OSI模型中,三层网络层负责IP地址,IP数据报帧头中的源地址和目的地址就是指IP地址。IPV4类型IP地址为32位4个字节,IPV6类型IP地址为128位16个字节,公网IP是全球唯一的。32位的IPV4 IP地址通常用4个十进制的整数来表示,每个整数对应一个字节,如"106.10.21.206",这种表示方法称为“点分十进制表示法”。

   IPV4类IP地址分为五类,如下图为他们各自的地址格式和地址范围:

 

   

   A类IP地址第一个字节为网络地址,剩余三个字节为主机地址,默认子网掩码为255.0.0.0,可用的A类网络有126个(全0和全1的网络地址用作特殊用途,故为128-2),每个网络能容纳1亿多个主机,所以A类IP地址有126 * 1亿个。A类地址适用于具有大量主机(直接个人用户)而局域网络个数较少的大型网络。需要注意的是A类IP地址中以127开头的地址表示本地环回地址,比如127.0.0.1。
   B类IP地址前两个字节为网络地址,后两个字节为主机地址,默认子网掩码为255.255.0.0,可用的B类网络有16382个,每个网络能容纳6万多个主机 ,所以B类IP地址有16382 * 6万个。
   C类IP地址前三个字节为网络地址,后一个字节为主机地址,默认子网掩码为255.255.255.0,C类网络可达209万余个,每个网络能容纳254个主机,所以C类IP地址有209万 * 254个。
   D类IP地址被用在多点广播(Multicast)中。特殊IP地质255.255.255.255表示在本网段上广播。
   E类IP地址范为将来使用保留。

  其中A类、B类、C类地址又预留了一个IP地址段作为私有地址来供局域网使用,常见的局域网由于容量小,一般就选择C类的192.168.0.0---192.168.255.255作为内网地址段使用,一些大型企业就需要使用B类甚至A类地址段作为内部网络的地址段:
   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

2、子网掩码

  对于我们经常使用的C类局域网地址,因为后8位为主机号,所以网络数为192.168.0.X—192.168.255.X,即256个。如果我们想设置子网的话,可以通过子网掩码来实现。划分子网的方法是将IP地址的主机号部分进一步划分为网络号和主机号,为1的位标志子网号,为0的位标志主机号,对于C类地址,默认子网掩码为11111111 11111111 11111111 00000000,即255.255.255.0。比如网段192.168.10.0—192.168.10.255属于一个网络, 这个网络上的256台主机在一个广播域中,如果我们想要在这256台主机上再分割出6个子网以进一步缩小广播域范围(即这6个子网互相屏蔽广播),可以设置子网号为3位(2的三次方为8,又因为子网号位置不能全为1或全为0,所以再减去111xxxxx和000xxxxx这2个子网号,子网数为6个),剩余5位为主机号,即子网掩码为11111111 11111111 11111111 11100000。

3、IP协议

  IP称为网间网协议,IP协议是无连接、不可靠的,任何对数据可靠性的要求由上层协议来提供(如TCP),这样的设计成就了IP协议的效率。TCP、UDP、ICMP、IGMP等数据都以IP数据报格式传输。下图为IP报文头+数据格式,其中的IP地址即为公网或内网地址:

  

  IP首部一般为20字节,除非含有选项字段,根据IP头中的“8位协议”字段,数据选项可以分为TCP报文、UDP报文、ICMP报文等。

  IP协议是Internet Protocol互联网协议,它能够使互联网上两台计算机进行通信,包装了计算机之间可以发送和接收数据,但IP协议不能解决数据包在传输过程中可能出现的协议。TCP协议是Transmission Control Protocol传输控制协议,它需要两台计算机通信之前先进行“连接”。TCP会收集IP通信的数据包,并将其按适当的次序放好传送,接收方按正确顺序接收。TCP还使用重传机制,发送方发送一个消息后需要对方的一个确认信息,如果在一定时间内没有收到的话就再次重发刚才的消息。这样TCP协议就保证了数据包在通信传输中的可靠性。

4、ICMP

  ICMP互联网控制信息协议的主要功能是传输差错或信息IMCP报文,比如网络通不通、主机是否可达、路由是否可用等信息。IP包如果没有被传送到目的地,或者发生错误,IP协议不会做其它的处理,而通过ICMP,下游的路由器和主机可以将错误信息ICMP报文汇报给上游,所以ICMP是IP协议的一个补充,它还可以提供一些咨询类型的信息,比如某台计算机询问路径上的每个路由器都是谁,然后各个路由器同样用ICMP包回答。

  ICMP报文是封装在IP数据报中的数据段中的,它头部的前4个字节是固定的,剩下的其它字节根据不同的类型互不相同,如下图为ICMP报文格式以及不同的类型和代码表示的不同ICMP报文。

         

  PING命令使用的就是ICMP请求回显/回显应答报文:向目标主机发送请求回音的ICMP包(类型为8,代码为0),而目标主机在接收到该ICMP包之后,会发送回音应答的ICMP包(类型为0,代码为0)。

  ICMP协议是IP协议的排错帮手,它可以帮助人们及时发现IP通信中出现的故障。但ICMP却经常被黑客借用进行网络攻击,比如利用伪造的IP包引发大量的ICMP回复,并将这些ICMP包导向受害主机,从而形成DoS攻击。

5、IGMP

  IGMP互联网组管理协议,为了使路由器知道多播组成员的信息,需要利用IGMP,它负责IP 组播成员管理,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。跨越多个网络的组播转发必须依赖于路由器,路由器为建立组播转发路由必需了解每个组员在Internet中的分布,这要求主机必须能将其所在的组播组通知给本地路由器,这也是建立组播转发路由的基础,在此基础上,本地路由器再与其它组播路由器通信,传播组播组的成员信息,并建立组播路由。 

  和ICMP一样,IGMP也使用IP数据报传递其报文,IGMP报文封装在IP报文中。IGMP的工作过程如下:
  ①、当主机加入新的多播组时,向多播组的多播地址发送IGMP 报文,声明自己要成为该组的成员.本地的多播路由器收到 IGMP 报文后,将组成员关系转发给因特网上的其他多播路由器
  ②、本地多播路由器要周期性地探询本地局域网上的主机(通过发送IGMP报文来实现),以便知道这些主机是否还继续是组的成员

6、TTL

  TTL(Time To Live)虽然从字面上可翻译成“可以存活的时间”,但实际上它是IP数据包在计算机网络中可以转发的最大跳数。TTL是IP协议中的一个值,它位于IP报文头的第9个字节。在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个 TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息。

  TTL字段由IP数据包的发送者设置,默认情况下,Linux系统的TTL值为64或255,UNIX主机的TTL值为255,Windows XP系统的TTL值为128, Win7系统的TTL值为64, Win Server2008系统的TTL为128。

  根据以上我们可以知道,ping命令中显示的TTL,对于相同系统的目标主机来说,TTL值越大表示途经的路由器越少。

 

posted on 2017-05-25 08:51  整鬼专家  阅读(626)  评论(0编辑  收藏  举报