美文网首页
TCP/IP详解003 IP网际协议

TCP/IP详解003 IP网际协议

作者: gg大宇 | 来源:发表于2019-01-18 21:10 被阅读87次

    IP协议是不可靠、无连接的数据传送服务
    不可靠(unreliable):它不能保证IP数据报能成功地到达目的地。IP仅提供最好的传输服务。
    无连接(connectionless):IP并不维护任何关于后续数据报的状态信息。每个数据报的处理都是相互独立的。这也说明,IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

    IP首部

    image.png

    最高位在左边,记作0bit;最低位在右边,记作31bit。

    4个字节的32bit值以下面的次序传输:首先是07bit,其次815bit,然后1623bit,最后是2431bit。这种传输次序称作big endian字节序。TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。
    继续说IP首部的各个字段的意思:
    版本号:IPv4就是4
    首部长度是指首部占32bit字的数目,包括任何选项,占4位。由于它是一个4比特字段,因此首部最长是60个字节。(占4位,可表示的最大十进制数是15,这个字段所表示数的单位是32位字(一个32位字长是4字节),因此,当IP首部长度为111时(即十进制的15),首部长度就达到60字节。)
    服务类型(TOS):占8位,用来获得更好的服务,这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过,1998年IETF把这个字段改名为区分服务DS(DifferentiatedServices).只有在使用区分服务时,这个字段才起作用。
    总长度字段:是指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16bit,所以IP数据报最长可达65535字节。
    尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片,而且,主机也要求不能接收超过576字节的数据报。这个限制会影响到UDP,它们都限制用户数据报长度为512字节,小于576字节。但是,事实上现在大多数的实现允许超过8192字节的IP数据报。

    image.png
    标识字段(identification):占16位,IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段,但这个“标识”并不是序号,因为IP是无连接的服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
    标志(flag):占3位,但目前只有2位有意义。
    第1位没有被使用
    第2位D是不分片位(DF),Do not fragment,顾名思义,不要分片,当DF位设置为1时,表示路由器不能对报文进行分片处理
    第3位M表示还有后继分片(MF),More fragment,多分片,当路由器对报分进行分片时,除了最后一个分片的MF位设置为0外,其他所有分片的MF位均设置1,以便接收者直到收到MF位为0的分片为止

    片偏移:占13位。较长的分组在分片后,某片在原分组的相对位置,也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍
    生存时间(TTL):占8位,设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间,TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减1.当该字段为0时,数据报就被丢弃。
    协议:占8位,协议字段指出此数据报携带的数据是何种协议。
    首部校验和:占16位,根据IP首部计算的检验和码,不包括数据部分。数据每经过一个路由器,都要重新计算一下首部校验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
    源地址:占32位
    目的地址:占32位

    image.png
    image.png
    image.png
    IP路由的选择

    点对点链路或都在一个共享网络上(以太网或令牌环网),IP数据报直接送到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。
    路由器和主机本质上的区别自在于主机从不把数据报从一个接口转发到另一个接口,而路由器则要转发数据报。
    IP层在内存中有一个路由表,当收到一份数据报并进行发送时,它都要对该表搜索一次。
    IP路由的选择是逐跳地进行的。IP并不知道到达任何目的的完整路径,所有的IP路由选择只为数据报传输提供下一跳路由器的IP地址。

    image.png
    如果上面这些步骤都没有成功,那么该数据就不能被传送。
    如果不能传送的数据来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。
    注意:完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。
    为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是IP路由选择机制的另一个基本特性,这样做可以极大地缩小路由表的规模。
    traceroute
    子网寻址

    现在所有的主机都要求支持子网编址,把主机号在分成一个子网号和一个主机号。


    image.png

    子网划分缩减了路由表的规模。

    子网掩码

    除了IP地址以外,主机还需要知道有多少比特用于子网号及多少比特用于主机号。这是在引导过程中通过子网掩码来确定的
    这个掩码是一个32bit的值,其中值为1的比特留给网络号和子网号,为0的比特留给主机号。


    image.png

    给定IP地址和子网掩码后,主机可以确定IP数据报的目的是:1、本子网上的主机;2、本网络中其他子网中的主机 3、其他网络上的主机。

    特殊的IP地址
    image.png image.png

    在进行路由选择决策时,主机和路由器都使用路由表。在表中有三种类型的路由:特定主机型、特定网络型、默认路由型。

    相关文章

      网友评论

          本文标题:TCP/IP详解003 IP网际协议

          本文链接:https://www.haomeiwen.com/subject/ccdudqtx.html