TCP/IP速記
網路協議
電腦網路的核心就是網路協議。網路協議是電腦網路中為了數據交換而建立的規則。
OSI七層模型和TCP/IP五層模型
在實際運用中,最終是TCP得到了廣泛的應用。
OSI是一種設計得非常詳細的協議,而問題就是出在詳細上;因為實際的情況往往比想像中的更加多變和靈活,所以OSI的詳細本該成為它的優勢,但卻成為了其限制。
王老師的思想遷移:不光是這種協議的發展規律,生活中很多事情都是這樣,不能等完完全全準備好了再去做,而是在做的過程中不斷改進,不斷適應,就TCP/IP一樣,雖然更加簡單,但卻能經受實際的考驗。
TCP/IP五層模型
- 應用層(HTTP)
- 傳輸層(TCP,UDP)
- 網路層(IP)
- 數據鏈路層
- 物理層
TCP的三次握手和四次揮手
三次握手進行連接
SYN:標誌位,為1時表示請求連接
ACK:標誌位,為1時表示確認請求
第一次握手:客戶端向服務端發送SYN為1的請求報文
第二次握手:服務端向客戶端發送ACK消息確認【此時客戶端知道自己可以發送消息給服務端,而且服務端也可以發送消息給自己;但服務端只知道客戶端的消息可以傳過來,但不知道自己的消息能否傳過去】
第三次握手:客戶端向服務端發送ACK消息確認【目的:讓服務端知道自己發送的消息客戶端可以接收到】
四次揮手斷開連接
FIN:標誌位,為1時表示請求斷開連接
第一次揮手:客戶端向服務端發送FIN=1的報文
第二次揮手:此時服務端可能會有未發出的消息,所以先給客戶端一個ACK確認消息,表示收到了客戶端的請求
第三次揮手:此時服務端已經發送了所有的消息,然後向客戶端發送一個FIN=1的報文,表示可以斷開請求了
第四次揮手:客戶端收到請求後,給服務端發送ACK確認消息
TCP連接的特點
- TCP是一種有連接,安全可靠的協議
- 點對點的通訊模式
- 在傳輸可靠上的特性:丟包重發,流量控制
TCP是如何保證安全可靠的
宏觀上來看,三次握手和四次揮手的這種有連接的機製為TCP的安全提供了基礎。
更加微觀的看
- 校驗和(TCP頭部,數據,尾部)
- 應答機制:不管是對於客戶端還是服務端,每發送一個消息都需要返回一個確認消息,不然就會重發
- 超時重傳:發送一個包和接受應答包這個時間如果過長,就會重新發送
- 擁塞控制:發出少量數據來測試網路擁堵情況,然後決定按多大的速度傳送數據
UDP連接的特點
-
UDP是一種無連接,不可靠的協議
-
支援一對多,多對多的通訊模式
TCP和UDP的區別
-
是否有連接
TCP是有連接的,而UDP是無連接的。連接決定是否安全可靠。
-
傳輸效率
UDP首部位元組為8個,而TCP首部位元組20個。所以UDP的傳輸效率更高。
-
通訊模式
TCP支援點對點,UDP支援一對多,多對多
TCP和UDP首部的區別
- UDP首部只有8個位元組:源埠,目的埠,校驗和
- TCP超過20個位元組:源埠,目的埠,校驗和,SYN,ACK,FIN
HTTP請求的過程和原理
- 發起一個請求後,通過DNS將URL中的域名解析為IP地址
- 然後根據IP地址,建立與服務端的TCP連接(三次握手)
- 斷開連接:四次揮手