TCP/IP 高頻點複習筆記

1.OSI七層模型和TCP/IP四層模型

OSI參考模型主要由七層架構組成,分別是:

  1. 物理層: 主要包括一些物理標準設備,如網線接口類型、光纖接口類型、各種傳輸介質速率等。主要作用是傳輸比特流。這一層的數據叫做比特

  2. 數據鏈路層: 主要從物理層接受的數據進行MAC地址(網卡地址)的封裝與解封。這一層的設備叫交換機,數據通過交換機來傳輸。

  3. 網絡層: 下層接收到的數據進行IP地址的封裝與解封裝。這一層工作得設備是路由器,這一層的數據叫數據包

  4. 傳輸層: 定義了一些傳輸數據的協議和端口號,如:TCP(傳輸控制協議,傳輸效率低,可靠性強,用於傳輸可靠性要求高,數據量大的數據),UDP(用戶數據報協議,與TCP特性恰恰相反,用於傳輸可靠性要求不高,數據量小的數據,如QQ聊天數據就是通過這種方式傳輸的)。。主要是將下層數據進行分段傳輸,到達目的地後進行重組。這一層的數據叫

  5. 會話層: 通過傳輸層建立數據傳輸的通路。主要在你的系統之間發起會話或者接受會話請求。

  6. 表示層: 主要對接收到的數據進行解釋、加密和解密、壓縮與解壓縮

  7. 應用層: 主要是一些終端的應用,如FTP,WEB,QQ之類的。

TCP/IP四層模型分別是:
應用層: 參考於OSI參考模型的高層,爲用戶提供所需要的各種服務,如FTP、Tenlnet、DNS、SMTP等。

傳輸層: 對應與OSI參考模型的傳輸層,爲應用層提供端到端的通訊功能,保證了數據包的順序傳送和數據的完整性。主要定義了TCPUDP協議。

網絡層: 網際互聯層對應於OSI參考模型的網絡層,主要解決主機到主機的通信問題。該層協議有IP協議、地址解析協議(ARP)、互聯網管理協議(IGMP)和互聯網控制報文協議(ICMP)。

IP協議是網際互聯層最重要的協議,它提供的是一個不可靠、無連接的數據報傳遞服務。

網絡接口層: 網絡接入層與OSI參考模型中的物理層和數據鏈路層相對應。它負責監視數據在主機和網絡之間的交換。

在這裏插入圖片描述

OSI七層網絡模型

TCP/IP四層概念模型  

對應網絡協議

應用層(Application)

應用層

HTTP、TFTP, FTP, NFS, WAIS、SMTP

表示層(Presentation)

Telnet, Rlogin, SNMP, Gopher

會話層(Session)

SMTP, DNS

傳輸層(Transport)

傳輸層

TCP, UDP

網絡層(Network)

網絡層

IP, ICMP, ARP, RARP, AKP, UUCP

數據鏈路層(Data Link)

網絡接口層

FDDI, Ethernet, Arpanet, PDN, SLIP, PPP

物理層(Physical)

IEEE 802.1A, IEEE 802.2到IEEE 802.11

優點:

  1. 把複雜網絡分成更容易管理的層(複雜問題劃分成若干個小問題)
  2. 沒有一個廠商能夠提供全套完成的解決方案和所有的設備、協議
  3. 分工明確,上層不關心下層下層細節

2. TCP 協議

2.1 TCP長連接和短鏈接

TCP在真正的讀寫操作之前,server和client必須建立一個連接,當讀寫操作完成後,雙方不再需要這個連接時它們可以釋放這個連接。連接的建立通過三次握手,釋放需要四次揮手。所以說每建立一個連接都是需要消耗資源和時間的。

TCP短鏈接

短鏈接步驟:client向server發送連接請求 -> server接到請求 -> client向server發送消息 -> server迴應client -> 一次讀寫完成,一般由client發起close操作。

短連接之間一般只會在client/server之間傳遞一次讀寫操作。

TCP長鏈接

長鏈接步驟:client向server發送連接請求 -> server接到請求 -> client向server發送消息 -> server迴應client -> 一次讀寫完成,連接不關閉 -> 後續讀寫操作 -> 一般由client發起close操作

各自優缺點以及應用場景

  • 長連接可以省去較多的TCP建立和關閉的操作,減少浪費,節約時間。對於頻繁請求資源的客戶來說,較適用長連接。
  • client和server之間連接一直不關閉的話,會導致客戶端連接越來越多,導致server壓力過大。這時server會採用一些策略,關閉一些較長沒有IO時間的連接等。
  • 短鏈接對於服務器比較簡單,存在的連接都是有用連接,不需要額外手段。但如果請求頻繁,在建立和關閉連接上會浪費資源。

長連接適用場景:監控系統、即時通訊系統、數據庫連接

短鏈接使用場景:Http服務

2.2 TCP三次握手和四次揮手

下·

  • 序列號SEQ:佔4個字節,用來標記數據段的順序,TCP把連接中發送的所有數據字節都編上一個序號,第一個字節的編號由本地隨機產生;給字節編上序號後,就給每一個報文段指派一個序號;序列號seq就是這個報文段中的第一個字節的數據編號。

  • 確認序號 ack:佔32位,只有ACK標誌位爲1時,確認序號字段纔有效,ack=seq+1。

  • 確認標誌位ACK:佔1位,確認序號有效。

  • 同步SYN:連接建立時用於同步序號。當SYN=1,ACK=0時表示:這是一個連接請求報文段。若同意連接,則在響應報文段中使得SYN=1,ACK=1。因此,SYN=1表示這是一個連接請求,或連接接受報文。SYN這個標誌位只有在TCP建產連接時纔會被置1,握手完成後SYN標誌位被置0。

  • 終止FIN:用來釋放一個連接。FIN=1表示:此報文段的發送方的數據已經發送完畢,並要求釋放運輸連接

2.2.1 三次握手

在這裏插入圖片描述

第一次握手: 客戶端發送第一個包,其中SYN標誌位爲1, ACK=0,發送順序號sequence=X(隨機int)。客戶端進入SYN發送狀態,等待服務器確認。

第二次握手: 服務器收到這個包後發送第二個包,其中包SYN、ACK標誌位爲x+1,發送順序號seq=Y(隨機int),接收順序號ACK=X+1,此時服務器進入SYN接收狀態。

第三次握手: 客戶端收到服務器傳來的包後,向服務器發送第三個包,SYN=0, ACK=Y+1,接收順序號ACK = Y+1,發送順序號seq=X+1。此包發送完畢,客戶端和服務器進入ESTABLISHED建立成功狀態,完成三次握手。

問題:爲什麼不能用兩次握手進行連接?
答:3次握手完成兩個重要的功能,既要雙方做好發送數據的準備工作(雙方都知道彼此已準備好),也要允許雙方就初始序列號進行協商,這個序列號在握手過程中被髮送和確認。

問題:如果已經建立了連接,但是客戶端突然出現故障了怎麼辦?
TCP還設有一個保活計時器,顯然,客戶端如果出現故障,服務器不能一直等下去,白白浪費資源。服務器每收到一次客戶端的請求後都會重新復位這個計時器,時間通常是設置爲2小時,若兩小時還沒有收到客戶端的任何數據,服務器就會發送一個探測報文段,以後每隔75秒鐘發送一次。若一連發送10個探測報文仍然沒反應,服務器就認爲客戶端出了故障,接着就關閉連接。

2.2.2 四次揮手

在這裏插入圖片描述
四次揮手是指終止TCP連接協議時,需要在客戶端和服務器之間發送四個包
第一次揮手: 主動關閉方發送第一個包,其中FIN標誌位爲1,發送順序號seq爲X,ACK爲Z。
第二次揮手: 被動關閉方收到FIN包後發送第二個包,其中發送順序號seq爲Z,接收順序號ack爲X+1。
第三次揮手: 被動關閉方再發送第三個包,其中FIN標誌位爲1,發送順序號seq爲Y,接收順序號ack爲X。
第四次揮手: 主動關閉方發送第四個包,其中發送順序號seq爲X,接收順序號ack爲Y + 1。至此,完成四次揮手。

超時重傳指的是,發送數據包在一定的時間週期內沒有收到相應的ACK,等待一定的時間,超時之後就認爲這個數據包丟失,就會重新發送。這個等待時間被稱爲RTO.

問題:爲什麼建立連接協議是三次握手,而關閉連接卻是四次握手呢?

建立連接時,ACK和SYN可以放在一個報文裏來發送。而關閉連接時,被動關閉方可能還需要發送一些數據後,再發送FIN報文表示同意現在可以關閉連接了,所以它這裏的ACK報文和FIN報文多數情況下都是分開發送的。

爲什麼TIME_WAIT狀態還需要等2MSL後才能返回到CLOSED狀態?
兩個存在的理由:1、無法保證最後發送的ACK報文會一定被對方收到,所以需要重發可能丟失的ACK報文。2、關閉鏈接一段時間後可能會在相同的IP地址和端口建立新的連接,爲了防止舊連接的重複分組在新連接已經終止後再現。2MSL足以讓分組最多存活msl秒被丟棄。

2.3 TCP滑動窗口

窗口是緩存的一部分,用來暫時存放字節流。發送方和接收方何有一個窗口,接收方通過TCP報文段中的窗口字段告訴發送方自己的窗口大小,發送方根據這個值和其它信息設置自己的窗口大小。

發送窗口內的字節都允許被髮送,接收窗口內的字節都允許被接受。如果發送窗口左部的字節已經發送並且收到了確認,那麼將發送窗口向右滑動一定距離,直到左部第一個字節不是已發送並且已確認的狀態;接受窗口的滑動類似,接受窗口左部字節已經發送確認並交付主機,就向滑動接受窗口。

2.4 UDP協議和TCP協議的區別

UDP又稱無連接協議, 主要用於如下:

特徵點 TCP UDP
是否連接 面向連接 非連接
傳輸可靠性 可靠 會丟包,不可靠
應用場景 傳輸數據量大 傳輸量小
速度
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章