一、TCP、UDP、ICMP、IGMP数据都使用IP数据报格式传输,所以IP是TCP/IP协议族中最为核心的协议。
二、IP提供不可靠、无连接的数据报传输服务;
1)不可靠的意思是不能保证IP数据报能成功地到达目的地,IP仅提供最好的传输服务,如果发生什么错误时,IP就会丢弃该数据报,然后发送ICMP消息包给源端。例如IP数据报中的TTL字段,每经过一个处理它的路由器,它的值就减一,直到此值为减为0,数据报被丢弃,并发送ICMP报文通知源主机。
2)无连接意思IP层并不维护任何关于发出后的数据报的状态信息,发出的每个数据报都是相互独立的。也就是说IP数据报可以不按发送数据接收。如果源端向相同的目的端发送两个连续的数据报先A后B,每个数据报都是独立的进行路由选择,可能选择不同的路线,因此B可能比A先接收。
三、网络字节序
最高位记为第0bit,最低位记为第31bit。4个字节的32bit值以下面的次序传输:首先是0--7bit,其次8--15bit,然后是16--23bit,最后是24--25bit。这种传输次序为BIG ENDIAN字节序,也就是说先发送数据的高位后发送数据的低位。TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称网络字节序。以其他形式存储二进制整数的机器little endian ,则必须在传输之前把部首转换成网络字节序。
四、IP路由
IP路由选择是逐跳的(就是一级一级的选择路由)进行的,IP并不知道任何目的的完整的路径(除哪些与主机直接相连的目的),所有的IP路由选择只为数据报传输提供下一站路由器的IP地址,而且假定下一站路由总比发送数据报的主机更接近目的,而且下一站的路由器与要发送数据报的主机直接相连的。
IP路由选择主要完成以下功能:
1)搜索路由表,寻找能与目的IP地址完全匹配的表项(网络号和主机号都要匹配)。如果找到,则把报文发送给该表项指定的下一站路由器或者直接连接的网络接口(取决于标志字段的值)。
2)搜索路由表,寻找能与目的网络号相匹配的表项。如果找到,则把报文发送给该表项指定的下一站路由器或者直接连接的网络接口。目的网络上的所有主机都可以通过这个表项来处理,以太网的所有主机都是通过这种表项进行寻址的。
3)搜索路由器,寻找标为“default”的表项。如果找到,则把报文发送给该表项指定的一站路由器。
4)如果上面这些步骤都没有成功,那么该数据报不能传送。如果数据报来自本机,则向生成数据报的应用程序返回主机不可达或者网络不可达的标志。如果为数据报选择了错误的默认路由,下一站路由器接收到数据报后,发送ICMP报文。
完整主机地址匹配在网络号匹配之前执行,只有当它们都失败后才能选择默认路由。一般为一个网络指定一个路由器,而不是为每个主机指定路由器,这样可以极大地缩小路由表的规模。
五、子网寻址(一个网络的主机太多,降低效率(发送冲突);减小路由表规模,易于路由)
没有子网掩码时,IP地址由两部分组成:网络号和主机号,添加子网掩码后,子网掩码把主机号又分为子网号和主机号,此时IP地址由:网络号、子网号和主机号组成。具体多少bit给子网号,多少bit给主机号,又网络管理员决定。
子网对所有子网外部Internet路由器来说隐藏内部子网络组织。例如B类网络号140.252,则只要发给这个网络的IP数据报,都路由到这个网络连接的路由器A,但对于路由器A时,知道内部子网络组织,也就是子网对于子网内部的路由器是不透明的,然后A路由再在内部子网组织中进行路由,找到子网中的主机。这样为了到达P地址开始部分为140.252主机,外部路由器只需要知道通往IP地址为140.252.104.1路由器的路径,只需一个路由表目,如果要是采用30个C类地址组织网络,那么需要30个路由表项,这样子网可以缩小了路由表的规模。
给定IP和子网掩码后,主机就可以确定IP数据报的目的:1)本子网上的主机(网络号和子网号相同,主机号不同);2)本网络中其他子网中的主机;(网络号相同,子网号和不同)3)其他网路上的主机(网络号不同);
子网中还可以在分子网(变长子网);具体参见P34。