TCP/IP Illustrated学习笔记(2)

接着上回的内容,IP首部里有首部检验和字段,它是根据IP首部计算的检验和码,不对后面的数据段进行计算,实际上如果后面跟着是TCP报文或者是UDP报文,其相应的TCP首部或者UDP首部都有其首部与数据的检验和,其中TCP的检验和是必须的,UDP的为可选。其基本方法就是对其的每16bit进行反码求和,如果接收方发现检验和错误,IP就丢弃收到的数据报,但不产生ICMP差错报文,由上层的TCP与UDP发现与重传。

PS:检验和字段只是对每个16bit反码求和,所以如果源地址与目的地址的值互换的话,检验和的结果还是不变。

IP的路由选择:

1、搜索路由表,寻找与目的地址完全匹配的表目

2、寻找与目的网络号相匹配的条目

3.寻找标为“default”的表目。如果找到,则把数据报发送给该条目指定的下一个路由器

如果上面步骤都没有成功,那么该数据报不被传送,如果不能传送的数据报来自本机,则产生一个 “主机不可达” 或 “网络不可达”的错误。

图一

上图为SUN主机的路由表

Flags中:U代表可用的路由

  G代表其为一个间接路由,没有设置这个位代表直接相连

 H代表目的地址是一个完整的主机地址,若没设置这个位则代表其为网络地址

图二

上图:bsdi主机发送数据报给sun主机(当然先通过DNS域名解析系统将主机名映射为IP地址),bsdi通过搜索自己的路由表发现目的地址与自己在同一个网络内,它就向以太网上的每个主机广播一个ARP请求(点对点链路不适用ARP),要IP地址为目的地址的主机发送一份ARP应答,告诉发送端自己的硬件地址(ARP应答),然后才可以建立连接,发送数据

PS:如若bsdi主机与sun主机频繁通信,则在bsdi和sun的ARP缓冲中都有对方48bit的硬件地址,其是ARP高效运行的关键

图三bsdi发送数据到ftp.uu.net(IP:192.48.96.9)

上图:1、首先bsdi查看自己的路由表发现没有对应的主机地址或网络地址,则只能使用默认路由,即SUN主机

2、数据到达SUN后,sun发现自己的地址与最终目的IP不同,其又被设置为具有路由功能,所以其对数据进行转发,根据图一发现其默认的路由为netb140.252.1.183(通过标志位发现其为一个间接相连的路由及网络地址)

3、netb把数据传送给gateway,它们执行与sun相同的路由步骤,gateway则把数据送出到外网中

PS:直接路由与间接路由的区别:

直接路由如图二:bsdi其发送的目的地址与链路层地址是一样的

间接路由如图三:bsdi其发送的目的地址与链路层地址不一样


这篇就这样吧,下回关于ICMP时间戳、ping程序与traceroute程序以及ifconfig与netstat

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章