畢業設計之路(5)——ICMP、IGMP、TCP協議

今每天氣不錯。緩存

Internet控制信息協議(ICMP),在結構上是屬於傳輸層的,但在實際的功能上它是屬於網絡層的,是IP層的組成部分。ICMP協議爲IP數據報提供傳輸過程當中遇到的路由和傳送錯誤報告。服務器

ICMP消息在如下幾種狀況發送:當數據報不能到達目的地時,當網關已經失去緩存功能時,當網關可以引導主機在更短路由上發送時。網絡

IP並不是設計爲絕對可靠,這個協議是爲了當網路出現問題時返回控制信息,而不是使IP協議變得絕對可靠,並不保證數據報或控制信息可以返回。一些數據報仍將在沒有任何報告的狀況下丟失。上層協議必須使用本身的差錯控制程序來判斷通訊是否正確。ICMP信息一般報告在處理數據報過程當中的錯誤。若要避免信息無限制地返回,ICMP消息不會單獨成包發送,並且ICMP信息只在處理數據報偏移量爲0時發送。spa

ICMP消息以基本IP報頭髮送。下面是ICMP的封裝。設計

  • 類型:長度1字節,表示該ICMP幀的類型。ICMP信息既是一份差錯報文,又是查詢報文。
  • 代碼:長度1字節,表示在該類型下的錯誤代碼。只有差錯報文才有,其它都爲0
  • 校驗和:長度2字節,表示整個ICMP幀的16位校驗和,計算範圍是ICMP的類型開始到數據末尾結束。計算方法與IP的校驗和相同。計算方法與IP的校驗和相同。
  • 特定類型的數據:幾乎每一個類型的數據都不相同,長度也不一。

IGMP數據報
Internet組管理協議(IGMP)在IP主機上應用,並向任一個鄰近的路由器報告它們的組播成員關係。該備忘錄僅描述了IGMP在主機和路由器之間如何肯定成員關係,此路由器和組播成員主機的行爲相反。IGMP也能夠用於兩個路由器之間。
同ICMP同樣,IGMP也是IP的一個組成部分。它要求在全部想接收IP組播的主機都要實現IGMP。IGMP消息封裝在IP報文中,其IP的協議號爲2.在該文檔中全部說明了的IGMP消息均會用TTL爲1進行傳遞,並在IP頭中包括了IP路由檢測選項。

TCP協議
TCP協議全稱是傳輸控制協議,從TCP/IP這個名字便可知道TCP的份量。以4部分講述TCP協議。TCP協議幀的基礎;TCP的鏈接;TCP的流量控制;TCP的超時和重發。
1) TCP協議幀的基礎
  • 面向鏈接:TCP協議規定,在進行數據傳輸以前2個及誒單必須使用TCP鏈接的創建過程,創建鏈接成功後再進行數據傳輸。終止鏈接也要使用TCP鏈接中斷過程關閉鏈接。
  • 雙向傳輸:TCP協議中,每一個鏈接都有2個邏輯管道,一收一發。數據能夠同時進行收和發,TCP報頭包含傳出數據和確認輸入數據的序列號。
  • 可靠傳輸:TCP協議規定,在傳輸數據時要按順序發送數據,並需獲得接收方的確認,沒有獲得確認的數據將重發,接收方接收到的重複包將被丟棄,失序包將被還原爲正確的序列。TCP校驗字提供比特級的完整性校驗。
  • 數據字節流:在TCP的輸入和輸出邏輯管道上傳輸的數據被認爲是連續的字節流,TCP報頭的序列號和確認號都是以字節爲單位肯定的。TCP不知道所傳輸的字節流的內容是什麼,以及在哪裏開始,在哪裏結束,對字節流數據的分析只能經過應用層的協議進行分析。
  • 流控制:TCP協議中還規定了數據傳輸的流量控制,防止堵塞。在數據傳輸的雙方都有接收緩衝區,若是一方接收緩衝區已滿,另外一方將再也不發送,直到緩衝區有空餘空間。而雙方的緩衝區都是獨立的,永遠也不會溢出。
  • 應用層數據分段:TCP創建鏈接時,雙方都交換可接收的最大段,若是接收到ICMP的」路徑最大傳輸單位「MTU消息,就能自動調整TCP最大段的大小。
  • 一對一傳輸:TCP協議只能實現一對一,而UDP協議能夠提供一對多服務。
總結以上幾點,TCP協議爲上層的應用層協議提供了可靠的數據傳輸服務,使用TCP傳輸的有HTTP,FTP,SMTP等一些不提供可靠數據傳輸的應用層協議。
說說TCP幀的結構。TCP幀分爲兩部分:報頭和有效負載。TCP報頭的長度是能夠改變的,最小長度是20字節(在沒有選項和填充時)。
TCP報頭有如下字段:
(1) 源端口:長度爲2字節。標識源應用層協議。如80(HTTP服務器端口)20和21(FTP服務器端口)、23(TELNET服務器端口)等。應用層協議的服務器端通常在已知的端口上接聽,而應用層協議的客戶端只對默認的服務器端口進行訪問。
(2) 目標端口:長度爲2字節,標識目標應用層協議。IPO報頭的目標IP地址加上TCP報頭的目標端口組成全局惟一而有效的地址,1個IP地址加一個端口號就稱爲一個SOCKET。
(3) 序 列號(ISN):長度4字節,表示本TCP幀中有效數據的第1個字節的基於輸出字節流的序列號,即便沒有有效數據也要設置序列號,這時它等於下一個字節的基於輸出字節流的序列號。另外在創建鏈接或斷開鏈接時序列號加1,這種狀況之後再詳細說明。
(4) 確認號(ACK):長度4字節,表示接收方但願接受的下一幀TCP幀數據字節流的第1個字節序列號。確認號提供對已經接收數據的確認。若是已經發送的數據沒有獲得正確的確認,就要重發。因此接收方要對已經接收的數據積極確認,確認號對全部的TCP幀來講都是很是重要的。
(5) TCP幀頭長度:長度是4位,表示在TCP幀中TCP幀頭的長度,和IP的報頭長度同樣,它的數值範圍是0X5~0XF,她是表示4的倍數的值。如最小的TCP報頭長度是20,能夠表示爲0x5,最大的TCP報頭長度是60,它能夠表示爲0xF,TCP報頭的大小始終是4的倍數。
(6) 保留:長度爲6位,設爲0便可。
(7) 標誌:長度爲6位,分別表示URG(緊急指針),ACK(確認序號正確),PSH(接收方儘快把數據發到應用層)、RST(重建鏈接)、SYN(同步序號),FIN(完成)6個標誌。置1有效,這6位能夠同時多個置1.
(8) 剩餘緩存空間:長度是2字節表示發送端接收緩衝區的剩餘空間,單位是字節。緩衝區最大值爲65535字節,該字段爲時,對方不能發送數據。其實該緩衝區是面向應用層的,若是應用層沒有讀取上面的數據,該字段就會愈來愈小,直到爲0.應用層協議讀取後,該字段的值變大,這樣就能夠保證不會丟失數據。
(9) 校驗和:長度2字節,爲TCP。提供位級別的綜合檢查。它的計算包括TCP僞報頭,TCP報頭、TCP有效負載,不發送TCP僞報頭。計算方法與IP報的校驗和計算方法相同,計算前要先把TCP校驗和字段清0.
下面是TCP僞報頭。
源IP地址和目標IP地址與IP報頭的相同。未定義字段填0,該協議字段填6.(表示TCP協議),TCP長度填TCP報的長度。對於報文校驗和的奇數和偶數個數的問題,其解決方法和UDP的同樣,即在最後增長填充字節0,這只是爲了計算校驗和,增長的填充字0與TCP僞報頭同樣不被髮送。
(10) 緊急指針:長度爲2字節,它在URG標誌置1後纔有用,平時爲0.它是TCP發送緊急數據的一種方式。它指出了TCP有效數據中緊急數據的長度和位置,緊急數據都放在當前TCP有效數據的開始到指針之內的範圍,RFC793的解析式在緊急指針指向最後一個緊急數據的位置,而新的RFC1122的解析是在緊急指針指向最後一個緊急數據位置再加1的地方。
(11) 選項和填充:長度以4字節增長,具體長度不定,通常是0.可是某些包如創建鏈接的同步包,是必須由選項的。下面介紹最大段大小選項。它描述了本TCP鏈接(指創建鏈接後所傳輸的數據)中每一個TCP幀最大傳輸數據的大小,它的型號是0x02,長度0x04,而後兩個字節表示最大段的大小,單位是字節。SACK選擇性重傳描述了從TCP上傳輸的數據中哪些須要從新傳輸。它在使用前有兩個默認字段,兩個無操做TCP選擇字段,0x01,0x01而後是它選項型號和選項長度。通常它包含兩種形式,SACK許可和SACK選項。SACK許可的選項型號是0x04,選項長度是0x02.SACK選項的選項型號是0x05,選項長度是十、1八、2六、34等,而後跟須要重發數據的左邊界(序列號,4字節)、右邊界.左邊界加右邊界恰好定義一個數據段,每定義一個數據段使用8字節,加上前面的選項型號、選項長度後,長度多是10(1個數據段)或者18(2個數據段)、26(3個數據段)、34(4個數據段)的等。
相關文章
相關標籤/搜索