天天看點

網絡:七層,HTTP應用層、TCP傳輸層、IP網絡層,拔網線TCP還在,三次握手保證雙向與減少因延時傳輸錯誤

網絡七層

應,表,會,傳,網,數,物

HTTP應用層

TCP傳輸層

IP網絡層

應用層

與其它計算機進行通訊的一個應用,它是對應應用程式的通信服務的。例如,一個沒有通信功能的字處理程式就不能執行通信的代碼,從事字處理工作的程式員也不關心OSI的第7層。但是,如果添加了一個傳輸檔案的選項,那麼字處理器的程式就需要實作OSI的第7層。示例:TELNET,HTTP,FTP,NFS,SMTP等。

表示層

這一層的主要功能是定義資料格式及加密。例如,FTP允許你選擇以二進制或ASCII格式傳輸。如果選擇二進制,那麼發送方和接收方不改變檔案的内容。如果選擇ASCII格式,發送方将把文本從發送方的字元集轉換成标準的ASCII後發送資料。在接收方将标準的ASCII轉換成接收方計算機的字元集。示例:加密,ASCII等。

會話層

它定義了如何開始、控制和結束一個會話,包括對多個雙向消息的控制和管理,以便在隻完成連續消息的一部分時可以通知應用,進而使表示層看到的資料是連續的,在某些情況下,如果表示層收到了所有的資料,則用資料代表表示層。示例:RPC,SQL等。

傳輸層

這層的功能包括是選擇差錯恢複協定還是無差錯恢複協定,及在同一主機上對不同應用的資料流的輸入進行複用,還包括對收到的順序不對的資料包的重新排序功能。示例:TCP,UDP,SPX。

網絡層

這層對端到端的包傳輸進行定義,它定義了能夠辨別所有結點的邏輯位址,還定義了路由實作的方式和學習的方式。為了适應最大傳輸單元長度小于包長度的傳輸媒體,網絡層還定義了如何将一個包分解成更小的包的分段方法。示例:IP,IPX等。

資料鍊路層

它定義了在單個鍊路上如何傳輸資料。這些協定與被讨論的各種媒體有關。示例:ATM,FDDI等。

實體層

OSI的實體層規範是有關傳輸媒體的特性,這些規範通常也參考了其他組織制定的标準。連接配接頭、幀、幀的使用、電流、編碼及光調制等都屬于各種實體層規範中的内容。實體層常用多個規範完成對所有細節的定義。示例:Rj45,802.3等。

拔掉網線後, 原本的 TCP 連接配接還存在嗎

TCP 連接配接在 Linux 核心中是一個名為 struct socket 的結構體,該結構體的内容包含 TCP 連接配接的狀态等資訊。當拔掉網線的時候,作業系統并不會變更該結構體的任何内容,是以 TCP 連接配接的狀态也不會發生改變。

TCP協定為什麼是三次握手而不是兩次呢?

原因1:主要是為了防止已經失效的連接配接請求封包突然又傳送到了伺服器,進而導緻不必要的錯誤和資源的浪費。

如果使用的是兩次握手建立連接配接,假設有這樣一種場景,用戶端發送的第一個請求連接配接并且沒有丢失,隻是因為在網絡中滞留的時間太長了,由于TCP的用戶端遲遲沒有收到确認封包,以為伺服器沒有收到,此時重新向伺服器發送這條封包,此後用戶端和伺服器經過兩次握手完成連接配接,傳輸資料,然後關閉連接配接。此時之前滞留的那一次請求連接配接,因為網絡通暢了, 到達了伺服器,這個封包本該是失效的,但是,兩次握手的機制将會讓用戶端和伺服器再次建立連接配接,這将導緻不必要的錯誤和資源的浪費。

如果采用的是三次握手,就算是那一次失效的封包傳送過來了,服務端接受到了那條失效封包并且回複了确認封包,但是用戶端不會再次發出确認。由于伺服器收不到确認,就知道用戶端并沒有請求連接配接。

原因2: 兩次握手隻能保證單向連接配接是暢通的。因為TCP是一個雙向傳輸協定,隻有經過第三次握手,才能確定雙向都可以接收到對方的發送的資料。

三次握手過程: