TCP/IP詳解閱讀筆記(一):TCP協議

做者: remcarpediem
聯繫方式:segmentfaultcsdn簡書git

本文轉載請註明做者、文章來源,連接,版權歸做者全部。github

 前段時間提交了本科畢業論文,這段時間特別空閒,因而但願研究一些基礎性的技術,好比網絡和編譯原理。因而就找來《TCP/IP協議詳解》來看,並作一些筆記,記錄一下感悟或在重點。
 爲了節約你的時間,本文主要內容爲:segmentfault

  • TCP/IP協議族安全

  • TCP和UDP的區別網絡

  • TCP提供可靠性的方式數據結構

  • TCP首部格式網絡傳輸協議

TCP/IP協議族

 TCP/IP協議是一組網絡傳輸協議的集合,按照網絡模型的不一樣層次,使用不一樣的傳輸協議進行分工合做。TCP/IP的網絡參考模型一共有四層,自上而下分別爲應用層,傳輸層,網絡層和數據鏈路層。
TCP/IP協議族分層spa

  • 鏈路層,有時候也稱爲數據鏈路層或網絡接口層,一般包括操做系統中的設備驅動程序和計算機中對應的網絡接口卡。它們一塊兒處理與電纜(或者其餘任何傳輸媒介)的物理接口細節。操作系統

  • 網絡層,有時也稱爲互聯網層,處理分組在網絡中的活動,例如分組的選路。在TCP/IP協議族中,網絡層協議包括IP協議,ICMP協議,以及IGMP協議。.net

  • 傳輸層主要爲兩臺主機上的應用程序提供端到端的通訊,在TCP/IP協議族中,有兩個互不相同的傳輸協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)。TCP相對安全穩定,可是UDP速度更快。

  • 應用層負責處理特定的應用程序細節。幾乎各類不一樣的TCP/IP實現都會提供下面這些通用的應用程序:

    • Telnet遠程登錄

    • FTP文件傳輸協議

    • SMTP簡單郵件傳輸協議

    • SNMP 簡單網絡管理協議

TCP:傳輸控制協議

 TCP和UDP都是傳輸層的協議,可是兩者卻有着不少的不一樣。TCP提供一種面向鏈接的,可靠的字節流服務。而UDP是一個簡單的面向數據報文的傳輸層協議:進程中的每一個輸出操做都正好產生一個UDP數據報文,而且組裝成一份待發送的IP數據報,而TCP協議中,應用程序產生的全體數據與真正發送的單個IP數據報可能沒有什麼聯繫。UDP也不提供可靠性保證
 TCP和UDP的主要區別如圖所示。

TCP提供可靠性的方式

&ems;與UDP不一樣的是,TCP提供各類方式來保證數據傳輸的正確性:

  • 應用數據被分割成TCP認爲最合適發送的數據快。這和UDP徹底不一樣,應用程序產生的數據報長度不變。

  • TCP發送一個報文段以後,它啓動一個定時器,等待目的端確認收到這個報文段。若是不能及時收到一個確認,將從新發送這個報文。

  • 當TCP收到發自TCP鏈接另外一端的數據,它將發送一個確認。

  • TCP將保持它首部和數據的檢驗和。這是一個端到端的檢驗和,目的是檢測數據在傳輸過程當中的任何變化。若是收到端的檢驗和有差異,TCP將丟棄這個報文段。

  • TCP會對收到的數據金喜重排,將收到的數據以正確的順序交給應用層。

  • TCP的接受端會放棄重複的數據

  • TCP提供流量控制。TCP接受的每一方都有固定大小的緩衝空間。TCP的接受端只容許另外一端發送接收端緩衝區所能容納的數據。

TCP的首部

 TCP數據被封裝在一個IP數據報中,以下圖所示。

TCP IP報文包結構
 下圖顯示TCP首部的數據結構。若是不計任何可選字段的話,它一般是20個字節。

TCP首部結構

  • 每一個TCP端都包含源端和目的端的端口號,用於尋找發送端和接受端應用進程。這兩個值加上IP首部的源端IP地址和目的端IP地址惟一肯定一個TCP鏈接。

  • 序號用來標識TCP發端向TCP收端發送的數據字節流,它表示在這個報文段中的第一個字節數據。若是將字節流看做在兩個應用程序之間的單向流動,則TCP用序號來對每一個字節進行計數。序號是32位的無符號數。

  • 確認序號包含發送確認的一端所指望收到的下一個序號。所以,確認序號應當是上次已經成功收到的數據字節序號+1。只有ACK標誌爲1時確認序號字段纔有效。

  • 首部長度給出TCP首部的字節數目。須要這個值是由於任選字段的長度是可變的。

  • TCP首部中有6個標誌位。

    • URG:緊急指針有效標誌位,當它被置爲1時,緊急指針纔有效。

    • ACK:確認序號有效,當它被置爲1時,確認序號纔有效。

    • PSH:接受方應該儘快將這個報文交給應用層。

    • RST:重建鏈接。

    • SYN:同步序號用來發起一個新鏈接。

    • FIN:發端完成發送任務。

  • 窗口大小來進行TCP的流量控制。窗口大小爲字節數,起始於確認序號字段指明的值,這個值是接受端指望接受的字節。

  • 檢驗和覆蓋了整個的TCP報文段:TCP首部和TCP數據。這是一個強制性的字段,必定由發端進行計算和存儲,並由收端進行檢驗。

  • 緊急指針是一個正的偏移量,和序號字段中的值相加表示緊急數據最後一個字節的序號。TCP的緊急方式是發送端向另外一端發送緊急數據的一種方式。

後記

 本片文章幾乎就是一個讀書筆記摘要。每一個章節都如此,既無養分也很浪費時間,但願本身之後能夠多作一些總結和實質性的文章吧。但願之後能夠找到一個好的方式來寫讀書筆記。

相關文章
相關標籤/搜索