IP地址通信简单理解

上一篇讲到,以太网头部数据,也就是每个通信节点都有一个唯一的MAC地址,在通信的时候,指定本机的MAC地址,再指定对方的MAC地址就可以通信了。但是有一个问题,比如我的MAC地址为01 23 45 67 89 01,要发数据到01 23 45 67 89 02,在局域网中,是没有问题的。但是到了广域网,就不行了,因为你并不知道对方是在中国还是在美国。所以,推出了IP地址,用于解决这个问题,下面只讲IPv4。

IP地址,由4个字节构成,也就是255*255*255*255=4228250625(42亿多的IP地址),全球的所有上网设备加起来早以超过此数,虽然IPv4剩余的IP地址已经很紧张了,但勉强还是够用的,因为不同的内网地址是可以重复的,比如A公司100台电脑,每台的IP是192.168.0.101~192.168.0.200,B公司也是100台电脑,IP地址与A公司一样,只是A公司与B公司的路由器外网地址不一样而已。

IP地址分为ABC三类,总的来说,A类地址拥有的子网主机数最多,B类其次,C类最少,其中又分为公网地址与私网地址,也称为外网地址与内网地址,内网地址(10.0.0.0~10.255.255.255或192.168.0.0~192.168.255.255等)只有公网地址能在互连网上通信,不同的网之间,都是以子网掩码来区分的(4字节32位2进制位,前面有多少个1,后面有多少个0),比如你电脑的IP是192.168.0.100,子网掩码为255.255.255.0,你要发数据到192.168.0.101中,那就是内网,算法为(先把192.168.0.100转成十六进制容易理解)0xC0A80064 & 0xFFFFFF00 == 0xC0A80065 & 0xFFFFFF00,就是把你的IP与子网掩码进行与运算,再和对方IP与掩码进行与运算,如果相等,是内网,否则是外网,与外网通信需要通过网关中转你所要发的数据包。

IP地址是如何分配的?所有的IP地址都由国际组织NIC(Network Information Center)负责统一分配的,比如分配1.0.0.0~9.255.255.255给美国,20.0.0.0~20.255.255.255给中国的CNNIC,中国的ISP商再向CNNIC申请,个人用户再向ISP申请,比如家里装个宽带,有可能拥有一个公网IP,有可能得到的是内网IP等等。。。这样就知道某个IP的使用者在哪个国家,哪个ISP,哪个城市,甚至是哪户人家了,如果有黑客攻击了某政府网站,理论上是可以查到是谁攻击的。

IP报文格式:在以太网中1帧数据中,IP数据段占20字节:版本1(填0x45) + 一般服务1(填0) + 数据长度2 + Mark2 + 状态1(填0) + 偏移1(填0)+ 生成周期1 + 类型1(填0x01 ICPM,0x06 TCP,0x11UDP) + 和检验2 + 源IP + 目的IP组成。也就是说,一个以太网数据包,前14字节,为MAC地址信息,紧接着20字节,为IP地址数据,后面还有源端口,目的端口数据,最后才是真正要发送的数据本身。

有了IP地址后,就可以实现世界上任何两台有公网IP地址的主机相互通信,比如我的电脑的IP是192.168.0.100,我要与123.123.123.123的公网IP进行通讯,经过与子网掩码运算,发现是外网IP,则把数据发到网关,网关经过运算,还是外网IP,再把数据发到他的网关,这个网关经过运算,发现还是外网IP,再发到他的网关,总有一次发现是内网的时候,也就找到了123.123.123.123了,数据发到他上面就可以了,这就好比,你想联系到美国总统,你只要联系到你认为最有可能联系到美国总统的人,他也联系到他认为最有可能联系到美国总统的人,如此下去,大概6次后,就可以联系到美国总统了。当然,也有找不到的时候,这时就有个生成周期起作用了,每过一次网关,此数就减1,最大255,如果到了0还没找到,就再也不去找了。防止无修止的找下去。

当然,具体要经过几次,具体如何路由的,不在本文讨论范围之内,比如我的电脑IP地址是192.168.0.100,我要与www.baidu.com进行通讯查资
料,则还是有其它问题的,比如
1、我要先知道www.baidu.com的IP地址,才能进行通讯。(DNS)
2、我要根据IP地址,知道他的MAC地址,才能进行通讯。(ARP)
 

猜你喜欢

转载自blog.csdn.net/zwf888/article/details/81204106