TcpIp详解--IP网际协议

TcpIp详解--IP网际协议

1.IP首部

IP首部的格式如下图所示,

 

下面是一些解析说明:

4位版本:目前的协议版本号是4

4位首部长度:指首部占32位字(4个字节)的数目,包括任何选项.因为该字段只有4,所以该字段的最大值是15,所以IP首部的长度必须在60字节以内.普通ip数据报(没有任何选择项)该字段的值是5.

8位服务类型:包括3位的优先权子字段,4位的TOS子字段和1位未用位但必须置0.其中4位的TOS分别代表:最小时延,最大吞吐量,最高可靠性和最小费用.4位中只能置其中1.如果4位都为0,那么就是一般服务.

下图是对不同应用建议的TOS,但事实上TOS字段很少使用到.

 

  16位总长度字段:指整个IP数据报的长度,以字节为单位.因为该字段有16,所以ip数据报的最大长度为65535字节.为什么要有这个字段呢?这是因为一些链路层协议的设计决定的(层次关系没有分好啊!).如以太网的最小帧长为46字节,不足的部分会自动补足,所以为了区分在这46字节中我们真正的数据,就设定了这个字段.

16位标识字段:唯一的标识主机发送的每一份数据报.通常每发送一份报文它的值就会加1(通常?意味着还有很多的例外).

8TTL生存时间字段:表示数据报可以经过的最多路由器数.TTL的初始值由源主机设置(通常为3264).一旦经过一个处理它的路由器,它的值就减1,当该字段 的值为0,数据报就会被丢弃.并发送ICMP报文通知源主机.

16位首部检验和字段:是根据ip首部计算的检验和码.它不对首部后面的数据进行计算.ICMP,IGMP,UDPTCP在它们各自的首部中均含有同时覆盖首部和数据检验和码.

那么如何计算一份数据报的ip检验和呢?首先把检验和字段置为0,然后,对首部中每个16位进行二进制反码求和,结果存在检验和字段中.当收到一份ip数据报后,同样对首部中每个16位进行二进制反码的求和.如果首部在传输过程中没有发生任何差错,那么接收方计算的结果就应该为全1.如果不是,那么ip就丢弃收到的数据报,但不生成差错报文 ,由上层去发现丢失的数据报并进行重传.在数据经过路由器时,路由器会修改ip首部,但只是将TTL字段减1,所以路由器在转发数据时只需增加它的检验和,而不需要对整个首部进行重新计算.

 

任选项字段:一个可变长的可选信息.它的定义如下,安全和处理限制,记录路径,时间戳,宽松的源站选路,严格的源站选路.任选项如果不是32位的倍数,那么必须填充0,为什么一定要是32位的倍数,因为ip首部规定必须要是32位的倍数,没办法啊.

 

 

2.IP路由选择

 主機與路由器的區別: 主機從不轉發數據報,除非它被設置成那樣,而路由器則要轉發數據報.

路由表中每一項都包含以下結構:
目的ip地址:即可以是一個完整的主機地址,也可以是一個網絡地址,由該表中的標誌字段來指定.
下一跳:下一站路由器的ip地址,或者有直接連接的網絡ip地址.
標誌:其中一個標誌指明目的ip地址是網絡地址還是主機地址,另一標誌指明下一站路由器是否為真正的下一站路由器,還是一個直接相連的接口.
網絡接口:表示數据報傳輸時用到的接口.

當主机(啟用了路由器功能)收到一份來自某個網絡接口的數據報後,它都要搜索一次路由表,
首先檢查目的ip地址是否為本機的ip地址之一或者ip廣播地址.如果是,則將數據報送到相應的協議模塊進行處理.如果不是,那麼接著按如下步驟搜索路由表:
(1)搜索路由表,尋找能與目的ip地址完全相匹配的的表目(網絡號和主機號都要相配).如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決於標誌字段的值).
(2)搜索路由表,尋找能與目的網絡號相匹配的表目.如果找到,則把報文發送給該表目指定的下一站路由器或直接連接的網絡接口(取決於標誌字段的值).
這種匹配方法必須考盧可能的子网掩碼.
(3)搜索路由表,尋找標為"默認(default)"的表目,如果找到,則把報文發送給該表目指定的下一站路由器.
如果上面3個步驟都不成功,那么該數據報就不能被發送,數據報將被丟棄.

3.子网尋址
從InterNIC獲得某類IP網絡號後,這個網絡號可能是A類或B類地址,它們容納的主機數太多了,為了管理,一般會繼續分成多個子網.
如一個B類網絡地址建立子網後的格式如下圖:

4.子網掩碼
子網掩碼用於區分網絡號(包括網絡號與子網號)與主機號各佔ip地址中的多少位.

5.特殊情況下的ip地址
見下圖,0表示所有的比特位全為0;-1表示所有的比特位全為1,netid,subnetid和hostid分別表示不為全0或全1的對應字段.子網號為空表示該地址沒有進行子網划分.

 

 

 

 参考文献:1.<<TCP/IP详解>>  

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值