【网络层】IP网际协议

IP是TCP/IP协议族中最为核心的协议;所有的TCP,UDP,ICMP,IGMP数据包都是以IP数据包格式传输的;IP提供最好的服务;如果发生某种错误时,如某个路由器暂时用完了缓冲区,IP有一个简单的数据处理算法:丢弃该数据包,然后发送ICMP消息给信源端;任何要求的可靠性都是由上层来提供的;


(1)网络字节次序是大端模式的字节序,先传输0~7bit,最后才是24~31bit;协议版本号是4,首部长度是4个字节,它最多可表示首部长度为60个字节,普通IP数据包的字段是5;服务类型TOS包括一个3bit的优先权字段,4bit的TOS子字段(分别代表最小时延,最大吞吐量,最高可靠性,最大吞吐量)和1bit未用位必须置为0;总长度字段表示整个数据包的长度,以字节为单位,因此长度大小是2^16字节,但是一般数据链路层都会对它进行分片,而且主机也要求不能接受超过576字节的数据包,因此TCP把用户数据分片,属于必选字段,因为要知道数据链路层是否对它进行了填充;标识符字段唯一的标识主机发送的每一份数据包;TTL生存时间字段设置了数据包可以经过的最多路有数,它指定了数据包的生存时间,每经过处理它的一个路由,就会减1,知道该字段为0时,该字段将会被丢弃,并发送ICMP报文通知源主机;协议字段表示是哪个协议向IP发送数据包;首部检验和是根据IP首部计算的校验码,不针对后面的数据包进行计算,同时ICMP,IGMP,UDP,TCP在它们各自的首部中均含同时覆盖首部和数据校验和码(对首部中每一个16bit进行二进制反码求和,结果存在检验和字段中,当收到这份IP数据包时,同样对首部中的每个16bit位进行二进制反码的求和,没有差错结果为1);最后一个字段是任选字段;



(2)IP路由选择:从概念上来说,IP路由是简单的,特别对于主机来说,如果目的主机与源主机直接相连(如点对点链路上)或在一个共享网络上(如以太网),那么IP数据包就直接送到目标主机上了;否则就把数据包发送到一默认路由器上,由该路由器来转发该数据包;现在的主机即可以配置能路由器,又可以配置成主机,我们可以为它指定主机和路由器算法(它们的本质是,主机从不把数据包从一个接口转发到另一个接口,而路由器则负责转发数据包);IP在内存中有一个路由表;当接收到一份数据包时并进行发送时,它要对该表进行搜索一次;当数据包来自某个接口时,IP首先检查目的IP地址是否为本机的IP地址或者是IP广播地址,如果是这样,那么数据包被送到IP首部协议制定的协议模块(如TCP)进行处理;如果数据包的目的不是这些地址,除非IP层设置为路由器功能要转发,否则丢弃;IP路由是逐跳进行转发的;其实所有的路由转发都是基于这个目的地址的;

(2.1)搜索路由表,寻找能与目的IP地址能完全匹配的表目(网络号和主机号都匹配),则把报文发送给指定的下一站路由器直接相连的网络接口取决于标志字段,目的IP地址是网络地址还是主机地址,下一站是路由器还是直连的网络接口);

(2.2)搜索路由表,寻找能与目的IP地址的网络号匹配表目,则把报文发送给指定的下一站路由器或直接相连的网络接口;目的网络上的所有主机都可以通过这个表目来处理,如一个以太网上的所有主机都是通过这种表目进行寻找(取决于标志字段)

(2.3)搜索路由表,寻找默认的路由;

如果上述步骤都没有成功,那么该数据包将不能被传送;如果不能传送的包来自本机,那么会向应用程序返回一个主机不可达或网络不可达的错误;为一个网络指定一个路由器,而不是一个主机一个路由器,这是IP路由选择机制的一个基本特性,这样可以极大缩小路由器的规模;

下面是一个以太网直连主机数据包传输的例子(链路层首部中的目的地址是48bit的sun主机的以太网接口地址);



下面是一个例子(最底下链路层首部中的目的地址是48bit的sun主机的以太网接口地址,此时sun已被设置成路由器功能了);每一个链路层可能具有不同的数据帧首部,链路层的目的地址始终是下一站的链路层地址,但是slip没有以太网那样的首部,直接是点对点传输的;


(3)现在所有的主机都要求支持子网寻址,即将主机号再分成一个子网号和主机号;子网对外部总是隐藏了内部网络组织的细节;子网划分缩小了Internet路由表的规模(使用同一管理),但是主机是要知道多少bit用于子网号和主机号的,这是通过子网掩码来确定的;可以确定本子网上的主机,本网络中其他子网的主机,其他网络上的主机;下面在子网的内部又使用了子网划分,分为以太网以及SLIP链路;结合子网的一个新例子如下:



(4)使用ifconfig可对网络接口进行配置和查询;eth0是以太网,MASK子网掩码,lo是环回地址;



(5)使用netstat时,用-i表示打印出接口的信息,linux对-n的指定是不会打印出ip地址的;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值