OSI/TCP/IP深刻淺出

一.OSI七層網絡模型—Open System Interconnection

OSI 功能 TCP/IP協議
應用層(Application Layer) 面向計算機用戶,提供應用程序和網絡之間的接口,向用戶提供服務,完成用戶但願在網上完成的各類工做 HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等
表示層(Presentation Layer) 處理來自應用層的的命令和數據,對各類語法解釋,按照規格傳給會話層。處理編碼,數據但是轉換和加密解密 沒有協議
會話層(Session Layer) 用戶應用程序和網絡之間的接口,向兩個實體表示層提供鏈接和鏈接方法,不一樣實體之間的表示層鏈接叫作會話,所以主要功能是維護和協調會話之間的數據通訊 沒有協議
傳輸層(Transport Layer) 爲會話層和網絡層提供傳輸服務,從會話層得到數據,在必要時進行分割,而後傳送給網絡層,主要起到創建,維護和取消傳輸鏈接功能,負責兩節點的可靠傳輸 TCP、UDP
網絡層(Network Layer) 經過路由算法(兩節點之間可能有多條路徑),爲報文選擇最適當的路徑,在網絡層數據轉換爲數據包,經過路徑選擇等控制,將信息從一個網絡設備傳送到另外一個網絡設備 IP、ICMP、RIP、OSPF、BGP、IGMP等
數據鏈路層(Data Link Layer) 數據鏈路層的數據傳輸單元成爲幀,就是將網絡層轉發的數據封裝爲幀,傳輸給物理層,以及分析物理層傳輸過來的數據幀 SLIP、CSLIP、PPP、ARP、RARP、MTU等
物理層(Physical Layer) 爲數據鏈路層提供數據幀和接收數據幀而後管理電腦通訊設備和網絡媒體之間的互通。包括了針腳、電壓、線纜規範、集線器、中繼器、網卡、主機適配器等 ISO2110等

二 .TCP/IP模型

OSI TCP/IP 協議
應用層/表示層/會話層 應用層 HTTP、FTP、TFTP、SMIP、SNMP、DNS
傳輸層 傳輸層 TCP、UDP
網絡層 網絡層 ICMP、IGMP、IP、ARP、RARP
數據鏈路層/物理層 網絡接口層 由底層網絡定義協議

三.TCP/IP分層模型圖

tcp圖解

  • 鏈路層—網絡接口層

    網絡接口層是TCP/IP模型的最底層,負責接收從上一層交來的數據報並將數據報經過底層的物理網絡發送出去,比較常見的就是設備的驅動程序。ARP(地址解析協議)和RARP(逆地址解析協議)是某些網絡接口(如以太網和令牌環網)使用的特殊協議,用來轉換IP層和網絡接口層使用的地址html

  • 網絡層

    對應OSI網絡層,負責數據包裝、尋址、路由和交換錯誤報文。只管傳送數據,無論成功與否算法

    IP網絡協議一種不可靠的服務,快速將源節點送到目標節點,被TCP/UDP使用,TCP和UDP的每組數據都經過端系統和每一箇中間路由器中的IP層在互聯網中進行傳輸。緩存

  • 傳輸層

    位於應用層和網絡接口層之間,爲兩臺主機提供端到端的通訊,在TCP/IP協議族中,有兩個互不相同的傳輸協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)。網絡

    TCP爲兩臺主機提供高可靠性的數據通訊,如圖:併發

tcpport

TCP首部最小爲20字節,這20字節分爲5行,每行4個字節也就是32個位。app

  • 第一行是源端口號和目標端口號,分別佔用16位,也就是端口號最大是2^16,因此端口號的範圍是0~65536
  • 第二行,第三行分別是32位序列號和32位確認號,在創建鏈接時,計算機生成一個隨機序列號做爲初始值,傳遞給目標,當對方接收完畢以後,接收端會返回一個32位確認應答號是序列號加數據長度,當發送端收到確認應答號後,用來確認這個位置之前全部數據都被正常接收,不然將會重新鏈接發送
  • 第四行主要分爲兩大部分,左側16位分別是4位首首部長度,若是沒有可選字段,那這裏的值就是5,表示TCP首都的長度爲20字節,也就是說5行x每行32bit。一位8bit,因此就是5x4=20字節。而後是6位保留用做將來使用,暫時都爲0.tcp

    而後是6位控制位,鏈接,傳輸和斷開都受到這六個控制位的指揮編碼

    • URG (urgent緊急) — 緊急標誌位,表示的是此報文段中有緊急數據,將緊急數據排在普通數據的前面;當接受端收到此報文後後必須先處理緊急數據,然後再處理普通數據。 一般用來暫時中斷通訊
    • ACK (acknowledgement確認) — 置1時表示確認號合法,爲0表示數據段不包含確認信息,確認號被忽略
    • PSH (push推送) — 置1時請求的報文在接收方收到時,會盡快交付接收應用進程,而不在等到整個緩存區都填滿後再交付給應用進程
    • RST (reset重置) — 置1時從新鏈接,表示出現錯誤,須要釋放鏈接,再從新創建鏈接
    • SYN (synchronous同步) — 置1時鏈接請求或贊成報文,當SYN=1而ACK=0時,代表這是一個鏈接請求報文段。對方若贊成創建鏈接,則應在響應的報文段中使SYN=1和ACK=1
    • FIN (FINis終止) — 釋放鏈接,提出斷開鏈接的一方將FIN置爲1表示斷開鏈接
而後第二部分是16位窗口大小

- 窗口 — 指對於發送報文段一方而言的接收窗口。
  窗口值 — 則是告訴發送方,從報文段首部的確認號算起,接收方目前容許對方發送的數據量
    • 第五行分別爲16位校驗和、16位緊急指針加密

      • 16位校驗和 — 發送端計算校驗和,接收端進行檢驗計算和,若是兩次校驗一致表示數據正確,不然認爲數據被破壞,接收端將丟棄該數據,主要用來差錯控制
      • 16位緊急指針 — 當URG置爲1時,指向後面優先數據,URG爲0時,則無效做爲填充,主要用來加快處理標識爲URG的緊急數據
    • 可選項 — TCP頭部長度最多爲60字節,因此可選項最多爲40字節,在這裏不作太多陳述,具體可查閱TCP頭部選項
    • 應用層

      應用層是咱們常常接觸使用的部分,好比經常使用的http協議、ftp協議(文件傳輸協議)、snmp(網絡管理協議)、telnet(遠程登陸協議)、smtp(簡單郵件傳輸協議)、dns(域名解析),主要是面向用戶的交互的。這裏的應用層集成了osi分層模型中 的應用、表示、會話層三層的功能。spa

    TCP三次握手,四次揮手

    • TCP是面向鏈接的協議,它在源點和終點之間創建虛擬鏈接,而不是物理鏈接
    • 在數據通訊以前,發送端與接收端要先創建鏈接,等數據發送結束後,雙方再斷開鏈接
    • TCP鏈接的每一方都是由一個IP地址和一個端口組成

    TCP鏈接圖

    • 首先創建鏈接,客戶端鏈接服務端,發送32位序列號seq=x,而且SYN置1,服務端監聽客戶端發送的序列號,而後發送32位確認響應swq=y和ack=x+1,並將SYN、ACK置1,而後客戶端接收之後,說明服務端接收成功,而後再返回ack=y+1,表示客戶端已經接收成功能夠開始鏈接
    • 當須要斷開數據的時候,客戶端發送序列號seq=x+2,確認號ack=y+1,並FIN置1,服務端接收之後,返回ack=x+3,並ACK置1,若是有數據沒有傳送完畢,等待傳送完畢返回序列號seq=y+1也就是返回確認號,並FIN置1,若是沒有數據則合併ack=x+3,seq=y+1 FIN置1,最後客戶端接收之後返回給服務端確認號ack=y+2來確認斷開

    抓包

    • Window用科來網絡分析系統,如圖

    TCP抓包

    • 如圖所示三次握手,第一次客戶端發送seq序列號,ACK置0,SYN置1。而後服務端收到序列號後發送列號seq,確認號ack爲客戶端序列號+1,且SYN、ACK置1,而後客戶端接收之後發送序列號爲服務端的ack確認號,併發送確認號爲服務端序列號+1,且ACK置1
    • 如圖所示四次揮手變三次揮手,由於沒有數據須要等待傳輸,首先客戶端發送序列號爲服務端在握手中發送的確認號,確認號爲服務端發送的序列號+1,且ACK、FIN置1,當服務端收到之後開始發送給客戶端,序列號爲客戶端發送的確認號,確認號爲客戶端發送的序列號+1,且ACK、FIN置1,當客戶端收到之後再發送給服務端,序列號爲服務端發的確認號,確認號爲服務端發送的序列號+1,且ACK置1,結束鏈接
    • Mac用WireShark

      WireShark主要用於抓包,在這裏咱們須要用wireshark查看tcp的三次握手和4次揮手,具體請查看WireShark教程

    UDP則爲應用層提供一種很是簡單的服務,如圖:

    • UDP是一個無鏈接、不保證可靠性的傳輸層協議,也就是說發送端不關心發送的數據是否到達目標主機、數據是否出錯等,收到數據的主機也不會告訴 發送方是否收到了數據,它的可靠性由上層協議來保障
    • 首部結構簡單,在數據傳輸時能實現最小的開銷,若是進程想發送很短的報文而對可靠性要求不高可使用

    UDP

    • 16位源端口號和16位目標端口號和TCP同樣
    • 16位UDP長度表明數據長度
    • 16位UDP校驗和,用於差錯控制
    • 主要應用於QQ、視頻軟件、TFTP 簡單文件傳輸協議(短信)

    四.應用交互舉例

    應用交互圖

    五.參考

    六.博客

    魏燃技術博客

    有任何問題可留言或者發送本人-郵箱:ngaiwe@126.com

    相關文章
    相關標籤/搜索