`
emowuyi
  • 浏览: 1509217 次
文章分类
社区版块
存档分类
最新评论

Beej’s Guide Network to Programming 系列连载04

 
阅读更多

3.IP地址、结构体、数据排列

下面部分决定了,我们需要改变一下。

首先,我们不谈代码!首先我们谈关于IP地址和端口。当然我们要谈关于套接字API怎么存储和维护IP地址和其他数据。

3.1 IP地址,版本4和6

在一个过去的好日子当BenKenobi准备呼叫Obi Wan Kenobi,要通过IPv4的路由系统。格式如:192.0.2.111.

事实上,现在大部分Internet仍然在使用IPv4。

此处省略若干…

由于IPv4的地址限制,我们需要IPv6。(IPv4的地址是32bit的;而IPv6是128bit的)

IPv6格式如:2001:0db8:c9d2:aee5:73e3:934a:a5ae:9551.

IPv4转换为IPv6,比如IPv4地址为192.0.2.33,那么IPv6地址就是:::ffff:192.0.2.33

3.1.1. 掩码

子网掩码——屏蔽一个IP地址的网络部分的“全1”比特模式。对于A类地址来说,默认的子网掩码是255.0.0.0;对于B类地址来说默认的子网掩码是255.255.0.0;对于C类地址来说默认的子网掩码是255.255.255.0。利用子网掩码可以把大的网络划分成子网,也可以把小的网路归并成大的网络。

互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。

  IP地址的网络号和主机号各是多少位呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。

  子网掩码的设定必须遵循一定的规则。与二进制IP地址相同,子网掩码由1和0组成,且1和0分别连续。子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。这样做的目的是为了让掩码与ip地址做AND运算时用0遮住原主机数,而不改变原网络段数字,而且很容易通过0的位数确定子网的主机数(2的主机位数次方-2,因为主机号全为1时表示该网络广播地址,全为0时表示该网络的网络号,这是两个特殊地址)。只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

子网掩码的术语是扩展的网络前缀码不是一个地址,但是可以确定一个网络层地址哪一部分是网络号,哪一部分是主机号,1 的部分代表网络号,掩码为0的部分代表主机号。子网掩码的作用就是获取主机 IP的网络地址信息,用于区别主机通信不同情况,由此选择不同路由。根据子网掩码格式可以发现,子网掩码有:0.0.0.0;255.0.0.0;255.255.0.0;255.255.255.0;255.255.255.255五种,其中A类地址的默认子网掩码为255.0.0.0;B类地址的默认子网掩码为255.255.0.0;C类地址的默认子网掩码为:255.255.255.0。

3.1.2 端口

IP地址就像一条街上的酒店,而端口就像该酒店的房间号码。

(Think of the IP address as the street address of ahotel, and the port number as the room number.)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics