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

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