詳談OSI七層網路協議和TCP/IP協議
OSI七層模型的簡單介紹
OSI是Open System Interconnection的縮寫,意為開放式系統互聯。是設計和描述計算機網路通信的基本框架。OSI模型把網路通信的工作分為7層
應用層(Application):提供網路與用戶應用軟體之間的介面服務
表示層(Presentation):提供格式化的表示和轉換數據服務,如加密和壓縮
會話層(Session):提供包括訪問驗證和會話管理在內的建立和維護應用之間通信的機制
傳輸層(Transimission): 提供建立、維護和取消傳輸連接功能,負責可靠地傳輸數據(PC)
網路層(Network):處理網路間路由,確保數據及時傳送(路由器)
數據鏈路層(DataLink) :負責無錯傳輸數據,確認幀、發錯重傳等(交換機)
物理層(Physics) : 提供機械、電氣、功能和過程特性(網卡、網線、雙絞線、同軸電纜、中繼器)
TCP/IP協議簡單介紹
TCP(Transmission Control Protocol 傳輸控制協議)是一種面向連接的、可靠的、基於位元組流的傳輸層通信協議,是互聯網的基礎,也是每個程序員必備的基本功。TCP/IP參考模型分為四層,從上到下分別是:應用層、傳輸層、網路互連層、網路介面層。
TCP功能
將數據進行分段打包傳輸
對每個數據包編號控制順序運輸中丟失、重發和丟棄處理
流量控制避免擁塞
TCP/IP參考模型的層次結構
層與層之間的合作和分工
數據從發送源傳輸到接收端要進行數據封裝和數據拆包的過程。數據封裝的傳輸過程中,在每一層要加入首部信息,有時還要增加尾部信息。數據單元在傳輸層被稱為段(segment),在網路層被稱為包(package),在鏈路層被稱為幀(frame)。數據封裝完畢傳輸到接收方後,將數據要進行解封裝。解封裝是把增加的首部信息拆掉,最後把數據傳給接收端。如下圖:
TCP協議的三次握手和四次分手
TCP是面向連接的協議,它在源點和終點之間建立虛擬連接,而不是物理連接
在數據通信之前,發送端與接收端要先建立連接,等數據發送結束後,雙方再斷開連接TCP連接的每一方都是由一個IP地址和一個埠組成
ACK: 此標誌表示應答域有效,就是說前面所說的TCP應答號將會包含在TCP數據包中。有兩個取值: 0和1,為1的時候表示應答域有效,反之為0。
FIN: 表示發送端已經達到數據末尾,也就是說雙方的數據傳送完成,沒有數據可以傳送了,發送FIN標誌位的TCP數據包後,連接將被斷開。這個標誌的數據包也經常被用於進行埠掃描。
三次握手
第一次握手主機A通過一個標識為SYN標識位的數據段發送給主機B請求連接,通過該數據段告訴主機B希望建立連接,需要B應答,並告訴主機B傳輸的起始序列號
第二次握手是主機B用一個確認應答ACK和同步序列號SYNC標誌位的數據段來響應主機A,一是發送ACK告訴主機A收到了數據段,二是通知主機A從哪個序列號做標記。第三次握手是主機A確認收到了主機B的數據段並可以開始傳輸實際數據。
為什麼要三次握手?
為了防止已失效的連接請求報文段突然又傳送到了服務端,因而產生錯誤。
比如:一個人和另一個人說話,其中一個人說你能聽到嗎,另一人不回答,兩個人交流失敗,或者 一個人說中文,另個人說英文,兩個人交流還是失敗,為了保證客戶端能夠接收到服務端的信息並能做出正確的應答,所以才三次握手。
四次斷開
主機A發送FIN控制位發出斷開連接的請求
主機B進行響應,確認收到斷開連接請求主機B提出反方向的關閉要求主機A確認收到的主機B的關閉連接請求
為什麼四次斷開?
四次斷開和上面的例子一樣,如果沒有溝通不好,就會導致鏈接失敗,不安全。
TCP是全雙工模式,這就意味著,當主機1發出FIN報文段時,只是表示主機1已經沒有數據要發送了,主機1告訴主機2,它的數據已經全部發送完畢了;但是,這個時候主機1還是可以接受來自主機2的數據;當主機2返回ACK報文段時,表示它已經知道主機1沒有數據發送了,但是主機2還是可以發送數據到主機1的;當主機2也發送了FIN報文段時,這個時候就表示主機2也沒有數據要發送了,就會告訴主機1,我也沒有數據要發送了,之後彼此就會愉快的中斷這次TCP連接。
OSI七層和TCP/IP四層的關係
1. OSI引入了服務、介面、協議、分層的概念,TCP/IP借鑒了OSI的這些概念建立TCP/IP模型。
2. OSI先有模型,後有協議,先有標準,後進行實踐;而TCP/IP則相反,先有協議和應用再提出了模型,且是參照的OSI模型。
3. OSI是一種理論下的模型,而TCP/IP已被廣泛使用,成為網路互聯事實上的標準。
OSI和TCP/IP模型就簡單介紹完了,如果有理解錯誤的地方,歡迎指正!
推薦閱讀: