TCP/IP详解之IP协议

IP数据报的格式

  • IP协议是TCP/IP协议族中最核心的协议。IP协议在网络中唯一标识一台主机,为数据报提供最好的传输服务。
    在这里插入图片描述
    1、4位版本:以IPV4为例,协议的版本号为4;
    2、4位首部长度:IP头部的长度是多少个32bit,也就是length4的字节数;4bit表示的最大长度是15,所以IP头部最大长度是60个字节;
    3、8位服务类型:3位优先权字段(已经弃用),4 bit的TOS子字段和1 bit未用位但必须置0。4 bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。这四者相互冲突,4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要;
    4、16位总长度:IP数据报整体占多少字节;
    5、16位标识:唯一的标识主机发送的报文,如果IP报文在数据链路层被分片了,那么每一片里面的id也是相同的。
    6、3位标志:第一位保留,第二位为1表示禁止分片,这时候如果数据报文长度超过MTU,ip模块就会丢弃报文;第三位表示更多分片,最后一个分片置0,其他是1,类似一个结束标记。
    7、13位分片偏移:是分片相对于原始IP报文开始处的偏移,其实就是表示当前分片在原始报文中是处于什么位置。实际偏移的字节数是这个值
    8得到的;因此除了最后一个报文外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
    8、8位生存时间:数据报到达目的地的最大报文跳数,一般是64,每次经过一个路由,TTL-=1;如果一直减到0还没到达,那么就丢弃了,这个字段主要用来防止出现路由循环。
    9、8位协议:表示上层协议的类型
    10、16位首部校验和:使用CRC进行校验,来鉴别头部是否损坏
    11、32位源端/目的端地址:表示发送端和接收端

IP路由选择

  • 目的主机与源主机直接相连/在同一个共享网络上(以太网/令牌环网)

在这里插入图片描述
那么这个时候IP数据报就直接发送到对端主机上。

  • 目的主机与源主机不是直接相连的(在同一网段/不在同一网段)
    在这里插入图片描述
    这个时候主机把数据报发往一默认的路由器上,由路由器来转发该数据报,大多数的主机都是采用这种简单机制。
  • 在一般的体制中,I P可以从T C P、U D P、I C M P和I G M P接收数据报(即在本地生成的数据报)并进行发送,或者从一个网络接口接收数据报(待转发的数据报)并进行发送。I P层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次。当数据报来自某个网络接口时, I P首先检查目的I P地址是否为本机的I P地址之一或者I P广播地址。如果确实是这样,数据报就被送到由I P首部协议字段所指定的协议模块进行处理。如果数据报的目的不是这些地址,那么( 1)如果I P层被设置为路由器的功能,那么就对数据报进行转发(也就是说,像下面对待发出的数据报一样处理);否则( 2)数据报被丢弃。
  • 路由表中的每一项都包含下面这些信息:
    • 目的I P地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定(如下所述)。主机地址有一个非0的主机号以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网)。
    • 下一站(或下一跳)路由器( next-hop router)的I P地址,或者有直接连接的网络I P地址。下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。
    • 标志。其中一个标志指明目的I P地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口
    • 为数据报的传输指定一个网络接口。

IP路由器主要完成以下几个功能:

  • 搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号完全匹配),如果找到就直接把报文发给该表目指定的下一站路由器或者直接连接的网络接口(取决于标志字段的值。就是上面说的路由器的包含的信息有一个是标志)
  • 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到就把报文发送给该表目所指定下一站路由器或者直接连接的网络接口(取决于标志字段的值。)然后目的网络上的所有主机都可以通过这个表目来处置。例如以太网上所有主机都是通过这种表目进行寻径的。这种搜索方法必须考虑可能的子网掩码(判断是否为同一子网)
  • 搜索路由表,寻找标为“默认”表目。如果找到就把报文发给该表目指定的下一站路由器(默认路由(Default route):是对IP数据包中的目的地址找不到存在的其他路由时,路由器所选择的路由。目的地不在路由器的路由表里的所有数据包都会使用默认路由。这条路由一般会连去另一个路由器,而这个路由器也同样处理数据包: 如果知道应该怎么路由这个数据包,则数据包会被转发到已知的路由;否则,数据包会被转发到默认路由,从而到达另一个路由器。每次转发,路由都增加了一跳的距离。)

未完待续

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值