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等 |
OSI | TCP/IP | 協議 |
---|---|---|
應用層/表示層/會話層 | 應用層 | HTTP、FTP、TFTP、SMIP、SNMP、DNS |
傳輸層 | 傳輸層 | TCP、UDP |
網絡層 | 網絡層 | ICMP、IGMP、IP、ARP、RARP |
數據鏈路層/物理層 | 網絡接口層 | 由底層網絡定義協議 |
鏈路層—網絡接口層html
網絡接口層是TCP/IP模型的最底層,負責接收從上一層交來的數據報並將數據報經過底層的物理網絡發送出去,比較常見的就是設備的驅動程序。ARP(地址解析協議)和RARP(逆地址解析協議)是某些網絡接口(如以太網和令牌環網)使用的特殊協議,用來轉換IP層和網絡接口層使用的地址算法
網絡層緩存
對應OSI網絡層,負責數據包裝、尋址、路由和交換錯誤報文。只管傳送數據,無論成功與否網絡
IP網絡協議一種不可靠的服務,快速將源節點送到目標節點,被TCP/UDP使用,TCP和UDP的每組數據都經過端系統和每一箇中間路由器中的IP層在互聯網中進行傳輸。併發
傳輸層app
位於應用層和網絡接口層之間,爲兩臺主機提供端到端的通訊,在TCP/IP協議族中,有兩個互不相同的傳輸協議:TCP(傳輸控制協議)和UDP(用戶數據報協議)。tcp
TCP爲兩臺主機提供高可靠性的數據通訊,如圖:編碼
TCP首部最小爲20字節,這20字節分爲5行,每行4個字節也就是32個位。加密
第一行是源端口號和目標端口號,分別佔用16位,也就是端口號最大是2^16,因此端口號的範圍是0~65536.net
第二行,第三行分別是32位序列號和32位確認號,在創建鏈接時,計算機生成一個隨機序列號做爲初始值,傳遞給目標,當對方接收完畢以後,接收端會返回一個32位確認應答號是序列號加數據長度,當發送端收到確認應答號後,用來確認這個位置之前全部數據都被正常接收,不然將會重新鏈接發送
第四行主要分爲兩大部分,左側16位分別是4位首首部長度,若是沒有可選字段,那這裏的值就是5,表示TCP首都的長度爲20字節,也就是說5行x每行32bit。一位8bit,因此就是5x4=20字節。而後是6位保留用做將來使用,暫時都爲0.
而後是6位控制位,鏈接,傳輸和斷開都受到這六個控制位的指揮
而後第二部分是16位窗口大小
第五行分別爲16位校驗和、16位緊急指針
可選項 — TCP頭部長度最多爲60字節,因此可選項最多爲40字節,在這裏不作太多陳述,具體可查閱TCP頭部選項
應用層
應用層是咱們常常接觸使用的部分,好比經常使用的http協議、ftp協議(文件傳輸協議)、snmp(網絡管理協議)、telnet(遠程登陸協議)、smtp(簡單郵件傳輸協議)、dns(域名解析),主要是面向用戶的交互的。這裏的應用層集成了osi分層模型中 的應用、表示、會話層三層的功能。
如圖所示三次握手,第一次客戶端發送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教程
郵箱:ngaiwe@126.com