TCPIP基础.docx
《TCPIP基础.docx》由会员分享,可在线阅读,更多相关《TCPIP基础.docx(5页珍藏版)》请在冰豆网上搜索。
TCPIP基础
网络基础(TCP/IP篇)
1.IP地址与MAC地址的区别
IP地址是指Internet协议使用的地址,而MAC地址是Ethernet协议使用的地址。
IP地址与MAC地址之间并没有什么必然的联系,MAC地址是Ethernet网卡上带的地址,长度为48位。
每个Ethernet网卡生产厂家必须向IEEE组织申请一组MAC地址,在生产网卡时在网卡的串行EEPROM中写入一个唯一的MAC地址。
任何两个Ethernet网卡的MAC地址,不管是哪一个厂家生产的都不应相同。
Ethernet芯片厂家不必负责MAC地址的申请,MAC地址存在于每一个Ethernet包中,是Ethernet包头的组成部分,Ethernet交换机根据Ethernet包头中的MAC源地址和MAC目的地址实现包的交换和传递。
IP地址是Internet协议地址,每个Internet包必须带有IP地址,每个Internet服务提供商(ISP)必须向有关组织申请一组IP地址,然后一般是动态分配给其用户。
IP地址现是32位长,正在扩充到128位。
IP地址与MAC地址无关,因为Ethernet的用户,仍然可通过Modem连接Internet,取得一个动态的IP地址,这个地址每次可以不一致。
IP地址通常工作于广域网,路由器处理的就是IP地址。
MAC地址工作于局域网,局域网之间的互连一般通过现有的公用网或专用线路,需要进行网间协议转换。
可以在Ethernet上传送IP信息,此时IP地址只是Ethernet信息包数据域的一部分,Ethernet交换机或处理器看不见IP地址,只是将其作为普通数据处理。
2.IP地址与子网掩码
IP地址与网络分类
(1)IP地址
不同的物理网络技术有不同的编址方式;不同物理网络中的主机,有不同的物理网络地址。
网间网技术是将不同物理网络技术统一起来的高层软件技术。
网间网技术采用一种全局通用的地址格式,为全网的每一网络和每一主机都分配一个网间网地址,以此屏蔽物理网络地址的差异。
IP协议提供一种全网间网通用的地址格式,并在统一管理下进行地址分配,保证一个地址对应一台网间网主机(包括网关),这样物理地址的差异被IP层所屏蔽。
IP层所用到的地址叫做网间网地址,又叫IP地址。
它由网络号和主机号两部分组成,统一网络内的所有主机使用相同的网络号,主机号是唯一的。
IP地址是一个32为的二进制数,分成4个字段,每个字段8位。
(2)三类主要的网络地址
我们知道,从LAN到WAN,不同种类网络规模相差很大,必须区别对待。
因此按网络规模大小,将网络地址分为主要的五类,如下:
IP地址有5类,A类到E类,各用在不同类型的网络中。
地址分类反映了网络的大小以及数据包是单播还是组播的。
A类到C类地址用于单点编址方法,但每一类代表着不同的网络大小。
A类地址(1.0.0.0-126.255.255.255)用于最大型的网络,该网络的节点数可达16,777,216个。
B类地址(128.0.0.0-191.255.255.255)用于中型网络,节点数可达65,536个。
C类地址(192.0.0.0-223.255.255.255)用于256个节点以下的小型网络的单点网络通信。
D类地址并不反映网络的大小,只是用于组播,用来指定所分配的接收组播的节点组,这个节点组由组播订阅成员组成。
D类地址的范围为224.0.0.0-239.255.255.255。
E类(240.0.0.0-255.255.255.254)地址用于试验。
按照目前使用的IPv4的规定,对IP地址强行定义了一些保留地址,即:
“网络地址”和“广播地址”。
所谓“网络地址”就是指“主机号”全为“0”的IP地址,如:
125.0.0.0(A类地址);而“广播地址”就是指“主机号”全为“255”时的IP地址,如:
125.255.255.255(A类地址)。
而子网掩码,则是用来标识两个IP地址是否同属于一个子网。
它也是一组32位长的二进制数值,其每一位上的数值代表不同含义:
为“1”则代表该位是网络位;若为“0”则代表该位是主机位。
和IP地址一样,人们同样使用“点式十进制”来表示子网掩码,如:
255.255.0.0。
如果两个IP地址分别与同一个子网掩码进行按位“与”计算后得到相同的结果,即表明这两个IP地址处于同一个子网中。
也就是说,使用这两个IP地址的两台计算机就像同一单位中的不同部门,虽然它们的作用、功能、乃至地理位置都可能不尽相同,但是它们都处于同一个网络中。
子网掩码计算方法自从各种类型的网络投入各种应用以来,网络就以不可思议的速度进行大规模的扩张,目前正在使用的IPv4也逐渐暴露出了它的弊端,即:
网络号占位太多,而主机号位太少。
目前最常用的一种解决办法是对一个较高类别的IP地址进行细划,划分成多个子网,然后再将不同的子网提供给不同规模大小的用户群使用。
使用这种方法时,为了能有效地提高IP地址的利用率,主要是通过对IP地址中的“主机号”的高位部分取出作为子网号,从通常的“网络号”界限中扩展或压缩子网掩码,用来创建一定数目的某类IP地址的子网。
当然,创建的子网数越多,在每个子网上的可用主机地址的数目也就会相应减少。
要计算某一个IP地址的子网掩码,可以分以下两种情况来分别考虑。
第一种情况:
无须划分成子网的IP地址。
一般来说,此时计算该IP地址的子网掩码非常地简单,可按照其定义就可写出。
例如:
某个IP地址为12.26.43.0,无须再分割子网,按照定义我们可以知道它是一个A类地址,其子网掩码应该是255.0.0.0;若此IP地址是一个B类地址,则其子网掩码应该为255.255.0.0;如果它是C类地址,则其子网掩码为255.255.255.0。
其它类推。
第二种情况:
要划分成子网的IP地址。
在这种情况下,如何方便快捷地对于一个IP地址进行划分,准确地计算每个子网的掩码,方法的选择很重要。
下面我介绍两种比较便捷的方法:
当然,在求子网掩码之前必须先清楚要划分的子网数目,以及每个子网内的所需主机数目。
方法一:
利用子网数来计算。
1.首先,将子网数目从十进制数转化为二进制数;2.接着,统计由“1”得到的二进制数的位数,设为N;3.最后,先求出此IP地址对应的地址类别的子网掩码。
再将求出的子网掩码的主机地址部分(也就是“主机号”)的前N位全部置1,这样即可得出该IP地址划分子网的子网掩码。
例如:
需将B类IP地址167.194.0.0划分成28个子网:
1)(28)10=(11100)2;2)此二进制的位数是5,则N=5;3)此IP地址为B类地址,而B类地址的子网掩码是255.255.0.0,且B类地址的主机地址是后2位(即0-255.1-254)。
于是将子网掩码255.255.0.0中的主机地址前5位全部置1,就可得到255.255.248.0,而这组数值就是划分成28个子网的B类IP地址167.194.0.0的子网掩码。
方法二:
利用主机数来计算。
1.首先,将主机数目从十进制数转化为二进制数;2.接着,如果主机数小于或等于254(注意:
应去掉保留的两个IP地址),则统计由“1”中得到的二进制数的位数,设为N;如果主机数大于254,则N>8,也就是说主机地址将超过8位;3.最后,使用255.255.255.255将此类IP地址的主机地址位数全部置为1,然后按照“从后向前”的顺序将N位全部置为0,所得到的数值即为所求的子网掩码值。
例如:
需将B类IP地址167.194.0.0划分成若干个子网,每个子网内有主机500台:
1)(500)10=(111110100)2;2)此二进制的位数是9,则N=9;3)将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255。
然后再从后向前将后9位置0,可得:
11111111.11111111.11111110.00000000即255.255.254.0。
这组数值就是划分成主机为500台的B类IP地址167.194.0.0的子网掩码。
(3)TCP/IP规定网络地址
除了一般地标识一台主机外,还有几种具有特殊意义的特殊形式。
*广播地址
TCP/IP规定,主机号全为“1”的网络地址用于广播之用,叫做广播地址。
所谓广播,指同时向网上所有主机发送报文。
*有限广播
前面提到的广播地址包含一个有效的网络号和主机号,技术上称为直接广播(directedboradcasting)地址。
在网间网上的任何一点均可向其他任何网络进行直接广播,但直接广播有一个缺点,就是要知道信宿网络的网络号。
有时需要在本网络内部广播,但又不知道本网络网络号。
TCP/IP规定,32比特全为“1”的网间网地址用于本网广播,该地址叫做有限广播地址(limitedbroadcastaddress)。
*“0”地址
TCP/IP协议规定,各位全为“0”的网络号被解释成“本”网络。
*回送地址
A类网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopbackaddress)。
无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。
TCP/IP协议规定,一、含网络号127的分组不能出现在任何网络上;二、主机和网关不能为该地址广播任何寻径信息。
由以上规定可以看出,主机号全“0”全“1”的地址在TCP/IP协议中有特殊含义,不能用作一台主机的有效地址。
二、子网掩码
(1)子网TCP/IP网间网技术产生于大型主流机环境中,它能发展到今天的规模是当初的设计者们始料未及的。
网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性,而是会带来两方面的负担:
第一,巨大的网络地址管理开销;第二,网关寻径急剧膨胀。
其中第二点尤为突出,寻径表的膨胀不仅会降低网关寻径效率(甚至可能使寻径表溢出,从而造成寻径故障),更重要的是将增加内外部路径刷新时的开销,从而加重网络负担。
因此,迫切需要寻求新的技术,以应付网间网规模增长带来的问题。
仔细分析发现,网间网规模的增长在内部主要表现为网络地址的增减,因此解决问题的思路集中在:
如何减少网络地址。
于是IP网络地址的多重复用技术应运而生。
通过复用技术,使若干物理网络共享同一IP网络地址,无疑将减少网络地址数。
子网编址(subnetaddressing)技术,又叫子网寻径(subnetrouting),英文简称subnetting,是最广泛使用的IP网络地址复用方式,目前已经标准化,并成为IP地址模式的一部分。
一般的,32位的IP地址分为两部分,即网络号和主机号,我们分别把他们叫做IP地址的“网间网部分”和“本地部分”。
子网编址技术将本地部分进一步划分为“物理网络”部分和“主机”部分,如图:
网间网部分物理网络主机
|←网间网部分→|←────本地部分─────→|
其中“物理网络”用于标识同一IP网络地址下的不同物理网络,既是“子网”。
(2)子网掩码IP协议标准规定:
每一个使用子网的网点都选择一个32位的位模式,若位模式中的某位置1,则对应IP地址中的某位为网络地址(包括网间网部分和物理网络号)中的一位;若位模式中的某位置0,则对应IP地址中的某位为主机地址中的一位。
例如位模式:
11111111111111111111111100000000中,前三个字节全1,代表对应IP地址中最高的三个字节为网络地址;后一个字节全0,代表对应IP地址中最后的一个字节为主机地址。
这种位模式叫做子网模(subnetmask)或“子网掩码”。
为了使用的方便,常常使用“点分整数表示法”来表示一个IP地址和子网掩码,例如B类地址子网掩码(11111111111111111111111100000000)为:
255.255.25.0IP协议关于子网掩码的定义提供一种有趣的灵活性,允许子网掩码中的“0”和“1”位不连续。
但是,这样的子网掩码给分配主机地址和理解寻径表都带来一定困难,并且,极少的路由器支持在子网中使用低序或无序的位,因此在实际应用中通常各网点采用连续方式的子网掩码。
像255.255.255.64和255.255.255.160等一类的子网掩码不推荐使用。
(3)子网掩码与IP地址子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。
例如:
有一个C类地址为:
192.9.200.13其缺省的子网掩码为:
255.255.255.0则它的网络号和主机号可按如下方法得到:
①将IP地址192.9.200.13转换为二进制11000000000010011100100000001101
②将子网掩码255.255.255.0转换为二进制11111111111111111111111100000000
③将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分11000000000010011100100000001101AND1111111111111111111111110000000011000000000010011100100000000000结果为192.9.200.0,即网络号为192.9.200.0。
④将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分11000000000010011100100000001101AND0000000000000000000000001111111100000000000000000000000000001101结果为0.0.0.13,即主机号为13。
(4)子网掩码与IP地址子网掩码与IP地址结合使用,可以区分出一个网络地址的网络号和主机号。
例如:
有一个C类地址为:
192.9.200.13其缺省的子网掩码为:
255.255.255.0则它的网络号和主机号可按如下方法得到:
①将IP地址192.9.200.13转换为二进制11000000000010011100100000001101
②将子网掩码255.255.255.0转换为二进制11111111111111111111111100000000
③将两个二进制数逻辑与(AND)运算后得出的结果即为网络部分11000000000010011100100000001101AND1111111111111111111111110000000011000000000010011100100000000000结果为192.9.200.0,即网络号为192.9.200.0。
④将子网掩码取反再与IP地址逻辑与(AND)后得到的结果即为主机部分11000000000010011100100000001101AND0000000000000000000000001111111100000000000000000000000000001101结果为0.0.0.13,即主机号为13。