转载地址
重要MTU概论
IP只负责将数据发给目标主机,那么TCP则负责保证对端主机确实接收到数据(因为可能丢包)。
4.1 IP即网际协议
TCP/IP的心脏是互联网层。这一层主要是由IP(Internet Protocol)和ICMP(Internet Control Message Protocol)两个协议组成。
4.1.1 IP相当于OSI参考模型的第3层
IP(IPv4、IPv6)相当于OSI参考模型中的第3层–网络层。
网络层的主要作用是“实现终端节点之间的通信”。这种终端节点之间的通信也叫“点对点(end-to_end)通信”。
网络层的下一层—数据链路层的主要作用是在互联同一种数据链路的节点之间进行包传递。
4.2.1 IP地址属于网络层地址
IP地址用于在“连接到网络中的所有主机中识别出进行通信的目标地址”。因此,在TCP/IP通信中所有主机或路由器必须设定自己的IP地址。
另外,在网桥或交换集线器等物理层或数据链路层数据包转发设备中,不需要设置IP地址(在用SNMP进行网络管理时有必要设置IP地址)。因为这些设备只负责将IP包转化为0,、1比特流转发或对数据链路帧的数据部分进行转发,而不需要应对IP协议。
4.2.2 路由控制
路由控制(Routing)是指将分组数据发送到最终目标地址的功能。一个数据包之所以能够成功地到达最终的目标地址,全靠路由控制。
多跳路由是指路由器或主机在转发IP数据包时只指定下一个路由器或主机,而不是将到最终目标地址为止的所有通路全都指定出来。因为每一个区间(跳)在在转发IP数据包时会分别指定下一跳的操作,直至包达到最终的目标地址。
在前面的例子中,虽然已经确定了最终的目标车站,但是一开始还是不知道如何换乘才能到达这个终极目标地址。因此,工作人员给出的方法是首先去往最近的一个车站,再咨询这一车站的工作人员。而到了这个车站以后再询问工作人员如何才能达到最终的目标地址时,仍然得到同样的建议:乘坐某某线列车到某某车站以后再询问那里的工作人员。
need-to-insert-img
于是,该乘客就按照每一个车站工作人员的指示,到达下一车站以后再继续询问车站的工作人员,得到类似的建议。
因此,即使乘客不知道其最终目的地的方向也没有关系。可以通过每到一个车站咨询工作人员的这种极其偶然T的方法继续前进,也可以到达最终的目标地址。
IP数据包的传输亦是如此。可以将旅行者看做IP数据包,将车站和工作人员看做路由器。当某个IP包到达路由器时,路由器首先査找其目标地址' 从而再决定下一步应该将这个包发往哪个路由器,然后将包发送过去。当这个IP包到达那个路由器以后,会再次经历査找下一目标地址的过程,并由该路由器转发给下一个被找到的路由器。这个过程可能会反复多次,直到找到最终的目标地址将数据包发送给这个节点。
这里还可以用快递的送货方式来打比方。IP数据包犹如包裹,而送货车犹如数据链路。包裹不可能自己移动,必须有送货车承载转运。而一辆送货车只能将包裹送到某个区间范围内。每个不同区间的包裹将由对应的送货车承载、运输。IP的工作原理也是如此。
路由控制表
为了将数据包发给目标主机,所有主机都维护着一张路由控制表(Routing Table)。该表记录IP数据在下一步应该发给哪个路由器。IP包将根据这个路由表在各个数据链路上传输。
数据链路的抽象化
P是实现多个数据链路之间通信的协议。数据链路根据种类的不同各有特点。对这些不同数据链路的相异特性进行抽象化也是IP的重要作用之一。数据链路的地址可以被抽象化为IP地址。因此,对IP的上一层来说,不论底层数据链路使用以太网还是无线LAN、PPP,都将被一视同仁。
不同数据链路有个最大的区别,就是它们各自最大传输单位(MTU:Maximum Transmission Unit)不同。就好像人们在邮寄或行李时有各自的大小限制一样。
MTU的值在以太网中是1500字节,在FDDI中是4352字节,而ATM则为9180字节。IP的上一层可能会要求传送比这些MTU更多字节的数据,因此必须在线路上传送比包长还要小的MTU。
为了解决这个问题,IP进行分片处理(IP Fragmentation),所谓分片,就是讲较大的IP包分成多个较小的IP包。分片的包到了对端目标地址后再被组合起来传给上一层。从IP的上层看,它完全可以忽略数据包在途中的各个数据链路上的NTU,而只需要按照源地址发送的长度接收数据包。IP以这种方式抽象化了数据链路层,使得从上层更不容易看到底层网络构造的细节。
4.2.4 IP属于面向无连接型
ip面向无连接。即在发包之前,不需要建立与对端目标地址之间的连接。上层如果遇到需要发送给ip的数据,该数据会立即被压缩成ip包发送出去。
在面向有连接的情况下,需要事先建立连接。如果对端主机关机或不存在, 也就不可能建立连接。反之,一个没有建立连接的主机也不可能发送数据过来。
而面向无连接的情况则不同。即使对端主机关机或不存在,数据包还是会被发送出去。反之,对于一台主机来说,它会何时从哪里收到数据也是不得而知的。通常应该进行网络监控,让主机只接收发给自己的数据包。若没有做好准备很有可能会错过一些该收的包。因此,在面向无连接的方式下可能会有很多冗余的通信。
那么,为什么ip要采用面向无连接呢?
主要有两点原因:一是为了简化,二是为了提速。面向连接比起面向无连接处理相对复杂。甚至管理每个连接本身就是一个相当繁琐的事情。此外,每次通信之前都要事先建立连接,又会降低处理速度。需要有连接时,可以委托上一层提供此项服务。因此,ip为了实现简单化与高速化采用面向无连接的方式。
为了提高可靠性,上一层的TCP采用面向有连接型
IP提供尽力服务(Best Effort),意指“为了把数据包发送到最终目 标地址,尽最大努力。”然而,它并不做“最终收到与否的验证”。IP数据包在途中可能会发生丟包、错位以及数据量翻倍等问题。如果发送端的数据未能真正发送到对端目标主机会造成严重的问题。例如,发送一封电子邮件,如果邮件内容中很重要的一部分丟失,会让收件方无法及时获取信息。
因此提高通信的可靠性很重要。TCP就提供这种功能。如果说IP只负责将数据发给目标主机,那么TCP则负责保证对端主机确实接收到数据。
4.3 ip地址的基础知识
在用TCP/IP通信时,用IP地址识别主机和路由器。为了保证正常通信,有必要为每个设备配置正确的IP地址。在互联网通信中,全世界都必须设定正确的IP地址。否则,根本无法实现正常的通信。
IP地址的定义
IP地址(IPv4地址)由32位正整数来表示。TCP/IP通信要求将这样的IP 地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制v方式被处理。然而,由于人类社会并不习惯于采用二进制方式,需要采用一种特殊的标记方式。那就是将32位的IP地址以每8位为一组,分成4组,每组以隔开,再将每组以.隔开再将每组数转换为十进制数'
例)
10101100000101000000000100000001(2进制)
10101100.00010100.00000001.00000001(2进制)
172.20.1.1(10进制)
将表示成IP地址的数字整体计算,会得出如下数值。
2^32 =4294967296
从这个计算结果可知,最多可以允许43亿台计算机连接到网络'
实际上,IP地址并非是根据主机台数来配置的,而是每一台主机上的每一块网卡(NIC)都得设置IP地址T。通常一块网卡只设置一个IP地址,其实一块网卡也可以配置多个IP地址。此外,一台路由器通常都会配置两个以上的网卡,因此可以设置两个以上的IP地址。
因此,让43亿台计算机全部连网其实是不可能的。后面将要详细介绍IP地址的两个组成部分(网络标识和主机标识),了解了这两个组成部分后你会发现实际能够连接到网络的计算机个数更是少了很多v。
4.3.2 IP地址由网络和主机两部分标识组成
IP地址由“网络标识(网络地址)”和“主机标识(主机地址)”两部分 组成'
如图4. 11所示,网络标识在数据链路的每个段配置不同的值。网络标识必须 保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。IP地址的“主机标识”则不允许在同一个网段内重复出现。由此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的IP地址都不会相互重叠。即IP地址具有了唯一性'
如图4. 12所示,IP包被转发到途中某个路由器时,正是利用目标IP地址的网络标识进行路由。因为即使不看主机标识,只要一见到网络标识就能判断出是否为该网段内的主机
那么,究竟从第几位开始到第几位算是网络标识,又从第几位开始到第几位算是主机标识呢?关于这点,有约定俗成的两种类型。最初二者以分类进行区别。而现在基本以子网掩码(网络前缀)区分。不过,请读者注意,在有些情况下依据部分功能、系统和协议的需求,前一种的方法依然存在。
IP地址分为四个级别,分别为A类、B类、C类、0类' 它根据IP地址中从第1位到第4位的比特列对其网络标识和主机标识进行区分。 还有一个一直未使用的E类。
A类地址
A类IP地址是首位以“0” 开头的地址。从第1位到第8 是它的网络标识。 用十进制表示的话,0.0.0.0-127.0.0.0是A类的网络地址。A类地址的后24位相 当于主机标识(去掉分类位剩下7位)。因此,一个网段内可容纳的主机地址上限为16, 777, 214个'
B类地址
B类IP地址是前两位为“10” 的地址。从第1位到第16位^是它的网络标识。 用十进制表示的话,128.0.0.1〜191.255.0.0是B类的网络地址。B类地址的后16 位相当于主机标识。因此,一个网段内可容纳的主机地址上限为65, 534个'
(去掉分类位剩下14位)
C类地址
C类IP地址是前三位为“110” 的地址。从第1位到第24 是它的网络标 识。用十进制表示的话,192. 168.0.0〜239.255.255.0是C类的网络地址。C类地址的后8位相当于主机标识。因此,一个网段内可容纳的主机地址上限为 254个 '
(去掉分类位剩下21位)
D类地址
D类IP地址是前四位为“1110” 的地址。从第1位到第32 是它的网络标 识。用十进制表示的话,224. 0.0.0〜239. 255. 255. 255是D类的网络地址。D类地址没有主机标识,常被用于多播。关于多播的更多细节请参考4. 3. 5节。
(去掉分类位剩下28位)
关于分配IP主机地址的注意事项
在分配IP地址时关于主机标识有一点需要注意。即要用比特位表示主机地址时,不可以全部为0或全部为1。因为全部为只有0在表示对应的网络地址或IP 地址不可获知的情况下才使用。而全部为1的主机地址通常作为广播地址。
因此,在分配过程中,应该去掉这两种情况。这也是为什么C类地址每个网段最多只能有254 (28- 2 = 254)个主机地址的原因。