IP是TCP/IP协议族中最为核心的协议。全部的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输(见图1-4)。许多刚开始接触TCP/IP的人对IP提供不可靠、无链接的数据报传送服务感到很奇怪,特别是那些具备X.25或SNA背景知识的人。html
不可靠(unreliable)的意思是它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。若是发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的错误处理算法:丢弃该数据报,而后发送ICMP消息报给信源端。任何要求的可靠性必须由上层来提供(如TCP)。web
无链接(connectionless)这个术语的意思是IP并不维护任何关于后续数据报的状态信息。每一个数据报的处理是相互独立的。这也说明,IP数据报能够不按发送顺序接收。若是一信源向相同的信宿发送两个连续的数据报(先是A,而后是B),每一个数据报都是独立地进行路由选择,可能选择不一样的路线,所以B可能在A到达以前先到达。算法
在本章,咱们将简要介绍IP首部中的各个字段,讨论IP路由选择和子网的有关内容。还要介绍两个有用的命令:ifconfig
和netstat
。关于IP首部中一些字段的细节,将留在之后使用这些字段的时候再进行讨论。RFC 791[Postel 1981a]是IP的正式规范文件。网络
IP数据报的格式如图3-1所示。普通的IP首部长为20个字节,除非含有选项字段。less
图3-1 IP数据报格式及首部中的各字段dom
第3章 IP:网际协议25 tcp
图3-2 服务类型字段推荐值性能
Te lnet和Rlogin这两个交互应用要求最小的传输时延,由于人们主要用它们来传输少许的交互数据。另外一方面,FTP文件传输则要求有最大的吞吐量。最高可靠性被指明给网络管理(SNMP)和路由选择协议。用户网络新闻(Usenet news, NNTP)是惟一要求最小费用的应用。学习
如今大多数的TCP/IP实现都不支持TO S特性,可是自4.3BSD Reno之后的新版系统都对它进行了设置。另外,新的路由协议如OSPF和IS-IS都能根据这些字段的值进行路由决策。网站
26TCP/IP详解,卷1:协议
图3-3 数据报从主机bsdi到sun的传送过程
数据报被送到以太网驱动程序,而后做为一个以太网数据帧被送到sun
主机上(见图2-1)。IP数据报中的目的地址是以太网140.252.13,而在 链路层首部中的目的地址是48bit的sun主机的以太网接口地址。这个48bit的以太网地址是用ARP协议得到的,咱们将在下一章对此进行描述。
如今来看另外一个例子:主机bsdi
有一份IP数据报要传到ftp.uu.net
主机上,它的IP地址是192.48.96.9。通过的前三个路由器如图3-4所示。首先,主机bsdi
搜索路由表,可是没有找到与主机地址或网络地址相匹配的表目,所以只能用默认的表目,把数据报传给下一站路由器,即主机sun
。当数据报从bsdi
被传到sun
主机上之后,目的IP地址是最终的信宿机地址(192.48.96.9),可是链路层地址倒是sun
主机的以太网接口地址。这与图3-3不一样,在那里数据报中的目的IP地址和目的链路层地址都指的是相同的主机(sun
)。
图3-4 从bsdi
到ftp.uu.net
(192.48.96.9)的初始路径
30TCP/IP详解,卷1:协议
图3-5 B类地址的一种子网编址
第3章 IP:网际协议31
图3-6 网络noao.edu(140.252)中的大多数子网安排
32TCP/IP详解,卷1:协议
图3-7 两种不一样的B类地址子网掩码的例子
尽管IP地址通常以点分十进制方法表示,可是子网掩码却常常用十六进制来表示,特别是当界限不是一个字节时,由于子网掩码是一个比特掩码。
给定IP地址和子网掩码之后,主机就能够肯定IP数据报的目的是:(1)本子网上的主机;(2)本网络中其余子网中的主机;(3)其余网络上的主机。若是知道本机的IP地址,那么就知道它是否为A类、B类或C类地址(从IP地址的高位能够得知),也就知道网络号和子网号之间的分界线。而根据子网掩码就可知道子网号与主机号之间的分界线。
举例
假设咱们的主机地址是140.252.1.1(一个B类地址),而子网掩码为255.255.255.0(其中8bit为子网号,8bit为主机号)。
图3-8 使用子网掩码的两个B类地址之间的比较
第3章 IP:网际协议33
图3-9 特殊状况的IP地址
咱们把这个表分红三个部分。表的头两项是特殊的源地址,中间项是特殊的环回地址,最后四项是广播地址。
表中的头两项,网络号为0,如主机使用BOOTP协议肯定本机IP地址时只能做为初始化过程当中的源地址出现。
在12.2节中,咱们将进一步分析四类广播地址。
这个例子是本文中采用的子网,以及如何使用两个不一样的子网掩码。具体安排如图3-10所示。
图3-10 做者所在子网中的主机和网络安排
若是把该图与扉页前图相比,就会发如今图3-10中省略了从路由器sun到上面的以太网之间的链接细节,实际上它们之间的链接是拨号SLIP。这个细节不影响本节中讨论的子网划分问题。咱们在4.6节讨论ARP代理时将再回头讨论这个细节。
34TCP/IP详解,卷1:协议
图3-11 变长子网
140.252.13子网中的全部接口的子网掩码是255.255.255.224,或0xffffff e0。这代表最右边的5bit留给主机号,左边的27 bit留给网络号和子网号。
图3-10中全部接口的IP地址和子网掩码的分配状况如图3-12所示。
图3-12 做者子网的IP地址
第1栏标为是“主机”,可是sun
和bsdi
也具备路由器的功能,由于它们是多接口的,能够把分组数据从一个接口转发到另外一个接口。
这个表中的最后一行是图3-10中的广播地址140.252.13.63:它是根据以太网子网号(140.252.13.32)和图3-11中的低5位置1(16+8+4+2+1=31)得来的(咱们在第12章中将看到,这个地址被称做以子网为目的的广播地址(subnet-directed broadcast address))。
第3章 IP:网际协议35
环回接口(2.7节)被认为是一个网络接口。它是一个A类地址,没有进行子网划分。
须要注意的是以太网没有采用尾部封装(2.3节),并且能够进行广播,而SLIP链路是一个点对点的连接。
SLIP接口的标志LINK0
是一个容许压缩slip的数据(CSLIP,参见2.5节)的配置选项。其余的选项有LINK1
(若是从另外一端收到一份压缩报文,就容许采用CSLIP)和LINK2
(全部外出的ICMP报文都被丢弃)。咱们在4.6节中将讨论SLIP连接的目的地址。
安装指南中的注释对最后这个选项进行了解释:“通常它不该设置,可是因为一些不当的ping操做,可能会致使吞吐量降到0。”
bsdi
是另外一台路由器。因为-a参数是SunOS操做系统具备的功能,所以咱们必须屡次执行ifconfig
,并指定接口名字参数:
这里,咱们看到以太网接口(we0
)的一个新选项:SIMPLEX。这个4.4BSD标志代表接口不能收到本机传送的数据。在BSD/386中全部的以太网都这样设置。一旦这样设置后,若是接口发送一帧数据到广播地址,那么就会为本机拷贝一份数据送到环回地址(在6.3小节咱们将举例说明这一点)。
在主机slip
中,SLIP接口的设置基本上与上面的bsdi
一致,只是两端的IP地址进行了互换:
最后一个接口是主机svr4
上的以太网接口。它与前面的以太网接口相似,只是SVR4版的ifconfig
没有打印RUNNING标志:
36TCP/IP详解,卷1:协议
这个命令打印出每一个接口的MTU、输入分组数、输入错误、输出分组数、输出错误、冲突以及当前的输出队列长度。
在第9章将用netstat
命令检查路由表,那时再回头讨论该命令。另外,在第13章将用它的一个改进版原本查看活动的广播组。
IP主要存在三个方面的问题。这是Internet在过去几年快速增加所形成的结果(参见习题1.2)。
无类别的域间路由选择CIDR(Classless Interdomain Routing)提出了一个能够解决第三个问题的建议,对当前版本的IP(IP版本4)进行扩充,以适应21世纪Internet的发展。对此咱们将在10.8节进一步详细介绍。
对新版的IP,即下一代IP,常常称做IPng,主要有四个方面的建议。1993年5月发行的IEEE Network (vol.7, no.3)对前三个建议进行了综述,同时有一篇关于CIDR的论文。RFC1454[Dixon 1993]对前三个建议进行了比较。
第3章 IP:网际协议37
前三个建议基本上采用了相同版本的TCP和UDP做为传输层协议。
因为四个建议只能有一个被选为IPv4的替换者,并且在你读到此书时可能已经作出选择,所以咱们对它们不进行过多评论。虽然CIDR即将实现以解决目前的短时间问题,可是IPv4后继者的实现则须要通过许多年。
本章开始描述了IP首部的格式,并简要讨论了首部中的各个字段。咱们还介绍了IP路由选择,并指出主机的路由选择能够很是简单:若是目的主机在直接相连的网络上,那么就把数据报直接传给目的主机,不然传给默认路由器。
在进行路由选择决策时,主机和路由器都使用路由表。在表中有三种类型的路由:特定主机型、特定网络型和默认路由型。路由表中的表目具备必定的优先级。在选择路由时,主机路由优先于网络路由,最后在没有其余可选路由存在时才选择默认路由。
IP路由选择是经过逐跳来实现的。数据报在各站的传输过程当中目的IP地址始终不变,可是封装和目的链路层地址在每一站均可以改变。大多数的主机和许多路由器对于非本地网络的数据报都使用默认的下一站路由器。
A类和B类地址通常都要进行子网划分。用于子网号的比特数经过子网掩码来指定。咱们为此举了一个实例来详细说明,即做者所在的子网,并介绍了变长子网的概念。子网的划分缩小了Internet路由表的规模,由于许多网络常常能够经过单个表目就能够访问了。接口和网络的有关信息经过ifconfig
和netstat
命令能够得到,包括接口的IP地址、子网掩码、广播地址以及MTU等。
在本章的最后,咱们对Internet协议族潜在的改进建议——下一代IP进行了讨论。
本文同步发表: https://www.geek-share.com/detail/2752945343.html
《TCP/IP详解 卷1:协议》在线整理版目录导航