天天看點

計算機網絡結構

網絡協定

網絡協定是計算機網絡中用于資料通信的規則和标準。它定義了網絡中不同裝置之間的通信方式、資料的格式、傳輸過程中的控制政策等,以確定資料能夠在網絡中準确、高效地傳輸和處理。

OSI 協定模型

OSI(開放系統互聯)協定模型是一個參考模型,用于說明應用程式如何在網絡上進行通信。它由國際标準化組織(ISO)于1984年制定,旨在規範不同廠商裝置之間的通信協定。OSI模型包括七層,每一層都有特定的功能,為兩個端點之間的通信做出貢獻:

1. 實體層:該層定義了網絡的實體特性,例如傳輸資料的電纜、連接配接器和信号等。

2. 資料鍊路層:該層管理跨實體網絡連接配接的資料流,執行錯誤檢測和糾正等功能。

3. 網絡層:該層提供邏輯尋址和路徑選擇,使不同網絡之間的資料得以傳輸。

4. 傳輸層:該層確定資料在端點之間可靠地傳遞,處理諸如擁塞控制和消息分段等問題。

5. 會話層:該層建立、維護和結束應用程式之間的會話。

6. 表示層:該層處理資料格式和編碼,確定一個應用程式發送的資料可以被另一個應用程式讀取。

7. 應用層:該層代表實際使用網絡進行通信的應用程式,例如電子郵件用戶端、Web浏覽器和檔案傳輸程式。

TCP/IP

TCP/IP是一個網絡通信協定集合,由兩個主要協定組成:傳輸控制協定(Transmission Control Protocol,TCP)和Internet協定(Internet Protocol,IP)。這兩個協定共同工作,以確定資料在不同計算機之間的傳輸。

TCP負責将資料分為多個資料包(segment),通過網際網路将它們傳輸到目标計算機。TCP提供面向連接配接、可靠的資料傳輸服務,能夠自行處理丢失或損壞的資料包。如果有任何丢失或損壞的資料包,TCP會請求發送端重新發送這些資料包。

IP負責尋址和路由資料包。每個資料包都帶有源位址和目标位址,IP根據這些位址找到最佳路徑将資料包從源計算機發送到目标計算機。IP還能夠處理網絡擁塞等問題,以確定資料能夠在網絡上高效地傳輸。

TCP/IP協定具有廣泛的應用,被用于Internet上的通信以及許多其他類型的計算機網絡中。它的優點包括:穩定性、通用性、可擴充性、開放性和相容性。

TCP/IP 協定模型

TCP/IP協定模型是一個四層的網絡通信協定模型,它由以下四個層次組成:

1. 網絡接口層(Network Interface Layer):也稱為資料鍊路層,負責将資料幀從一個節點傳輸到另一個節點,以及實體尋址和錯誤檢測等任務。這一層通常與底層的硬體裝置進行互動,如網卡。

2. 網際層(Internet Layer):也稱為IP層,負責實作不同網絡之間的通信,通過選擇最佳路徑将資料包從源主機送到目标主機。該層還處理資料片斷重組、差錯檢驗和擁塞控制等問題。

3. 傳輸層(Transport Layer):在TCP/IP協定中,實作傳輸層的主要協定是TCP和UDP。TCP(Transmission Control Protocol)提供可靠傳輸服務,保證資料傳輸的完整性和可靠性;而UDP(User Datagram Protocol)提供無連接配接的傳輸服務,适合于實時應用場景。

4. 應用層(Application Layer):位于協定堆棧的最高層,負責處理特定的應用程式協定,例如Web浏覽器、電子郵件、檔案傳輸等。

相比于OSI參考模型,TCP/IP協定模型少了會話層和表示層,這兩層的功能通常由應用層來完成。

TCP/IP協定族

TCP/IP協定模型是一個四層的網絡通信協定模型,它由以下四個層次組成:

1. 網絡接口層(Network Interface Layer):也稱為資料鍊路層,負責将資料幀從一個節點傳輸到另一個節點,以及實體尋址和錯誤檢測等任務。這一層通常與底層的硬體裝置進行互動,如網卡。

2. 網際層(Internet Layer):也稱為IP層,負責實作不同網絡之間的通信,通過選擇最佳路徑将資料包從源主機送到目标主機。該層還處理資料片斷重組、差錯檢驗和擁塞控制等問題。

3. 傳輸層(Transport Layer):在TCP/IP協定中,實作傳輸層的主要協定是TCP和UDP。TCP(Transmission Control Protocol)提供可靠傳輸服務,保證資料傳輸的完整性和可靠性;而UDP(User Datagram Protocol)提供無連接配接的傳輸服務,适合于實時應用場景。

4. 應用層(Application Layer):位于協定堆棧的最高層,負責處理特定的應用程式協定,例如Web浏覽器、電子郵件、檔案傳輸等。

相比于OSI參考模型,TCP/IP協定模型少了會話層和表示層,這兩層的功能通常由應用層來完成。

TCP封包的頭部結構

非常抱歉,可能是圖檔連結失效或被限制所緻。以下是一個簡單的TCP封包結構示意圖:

計算機網絡結構
0       7      15      23      31
        +--------+--------+--------+--------+
        |     Source      |   Destination   |
        |      Port       |      Port       |
        +--------+--------+--------+--------+
        |                 |                 |
        |      Seq. #     |   Acknowledgment|
        |                 |       #         |
        +--------+--------+--------+--------+
        |  Data  |       |U|A|P|R|S|F|       |
        | Offset |  Res. |R|C|S|S|Y|I|       |
        |        |       |G|K|H|T|N|N|       |
        |        |       | | |T| | | |       |
        +--------+--------+--------+--------+
        |     Window Size     |   Checksum    |
        +--------+--------+--------+--------+
        |         Urgent Pointer (optional)    |
        +--------+--------+--------+--------+
        |              Options (optional)     |
        +--------+--------+--------+--------+           

其中,每個字段的含義如下:

  • Source Port和Destination Port:源端口号和目标端口号,用于辨別發送方和接收方的應用程式。
  • Sequence Number和Acknowledgment Number:序号用于辨別發送方發送的每一個位元組,而确認号表示期望收到的下一個位元組的序号。
  • Data Offset、Reserved和Flags:Data Offset表示TCP頭部的長度,以4位元組為機關;Reserved字段保留未來使用;Flags包含URG、ACK、PSH、RST、SYN和FIN六個标志位,用于表示TCP狀态或操作。
  • Window Size:視窗大小表示接收方可以接受的資料量,用于流量控制。
  • Checksum:校驗和用于檢查TCP封包是否在傳輸過程中出現錯誤。
  • Urgent Pointer和Options:Urgent Pointer用于訓示一些重要的資料,如異常資訊、錯誤提示等;Options包含一些附加的資訊,如時間戳、最大封包段長度等。

TCP狀态

Flags是TCP協定頭中的6個标志位,它們分别為URG、ACK、PSH、RST、SYN和FIN。它們的含義如下:

1. URG(URGent):表示緊急指針是否有效。如果該位被設定為1,就表明緊急指針有效,資料包中的資料應該被盡快處理。

2. ACK(ACKnowledgment):表示确認序号是否有效。如果該位被設定為1,就表明确認序号有效,即收到的資料包已經被正确接收。

3. PSH(PuSH):表示接收方應該立即将資料交給應用程式處理,而不是将其緩存起來。

4. RST(ReSeT):表示連接配接複位。當該位被設定時,會強制斷開連接配接并重置連接配接狀态。

5. SYN(SYNchronization):表示同步序号。在建立一個新的TCP連接配接時,用戶端向伺服器發送一個帶有SYN标志的資料包,用于協商序号。

6. FIN(FINish):表示結束連接配接。當該位被設定時,表示發送方已經沒有資料需要發送,并請求關閉連接配接。

TCP的三次握手四次揮手

TCP是一種面向連接配接的、可靠的傳輸層協定,它使用三次握手建立連接配接和四次揮手斷開連接配接。下面是TCP的三次握手和四次揮手過程:

1. 三次握手(建立連接配接)

第一次握手:用戶端向伺服器發送SYN封包,其中SYN标志位設定為1,表示用戶端請求建立連接配接,同時用戶端随機選擇一個序列号seq。

第二次握手:伺服器收到SYN封包後,向用戶端發送SYN+ACK封包,其中SYN和ACK标志位都設定為1,表示伺服器已經收到用戶端的請求,同時伺服器也請求建立連接配接,并且伺服器随機選擇一個序列号seq,确認号ack設定為用戶端的seq+1。

第三次握手:用戶端收到伺服器的SYN+ACK封包後,向伺服器發送ACK封包,其中ACK标志位設定為1,确認号ack設定為伺服器的seq+1,表示用戶端已經收到伺服器的響應,連接配接建立成功。

2. 四次揮手(斷開連接配接)

第一次揮手:用戶端向伺服器發送FIN封包,其中FIN标志位設定為1,表示用戶端請求關閉連接配接。

第二次揮手:伺服器收到FIN封包後,向用戶端發送ACK封包,其中ACK标志位設定為1,确認号ack設定為用戶端的seq+1,表示伺服器已經收到用戶端的請求,但是伺服器還沒有準備好關閉連接配接。

第三次揮手:伺服器準備好關閉連接配接後,向用戶端發送FIN封包,其中FIN标志位設定為1,表示伺服器請求關閉連接配接,并且伺服器随機選擇一個序列号seq。

第四次揮手:用戶端收到伺服器的FIN封包後,向伺服器發送ACK封包,其中ACK标志位設定為1,确認号ack設定為伺服器的seq+1,表示用戶端已經收到伺服器的請求,連接配接已經關閉。

序列号(seq)和确認号(ack)

TCP 的序列号(seq)和确認号(ack)是用來提供可靠傳輸的機制,主要作用和功能如下:

1. 資料排序:TCP 通過對每個資料包配置設定唯一的序列号(seq),保證資料按照正确的順序接收。接收方會根據seq來對資料進行排序,確定後續的資料能夠正确處理。

2. 可靠性:TCP 使用确認号(ack)機制來保證資料的可靠傳輸。當發送方把資料發送給接收方時,接收方會回複一個帶有确認号的封包段,告訴發送方該資料已經被接收。如果發送方在一定時間内沒有收到确認資訊,就認為資料丢失了,并重新發送資料,直到接收方成功接收,進而實作了資料的可靠傳輸。

3. 流量控制:TCP 通過連接配接雙方交換的視窗大小(Window Size)來控制資料的流量,以避免由于資料包過多導緻網絡擁塞的情況發生。發送方根據接收方的視窗大小确定自己可以發送的資料長度,進而避免發送過多的資料,導緻網絡擁塞和資料丢失。

4. 确認資料:TCP 的确認号也可以用于确認資料已經被接收并處理。當接收方收到資料時,會回複一個帶有确認号的封包段,告訴發送方這些資料已經被正确處理。同時,發送方還能夠根據确認号确定哪些資料已經成功接收,以便在必要的時候進行重傳或逾時處理。

5. 應對攻擊:序列号(seq)和确認号(ack)是防禦網絡攻擊的重要手段之一。通過合理地生成seq和ack,可以有效地避免網絡攻擊,比如SYN洪水攻擊等。

綜上所述,TCP 的序列号和确認号是實作可靠傳輸的關鍵要素,其主要功能包括了資料排序、提供可靠性、流量控制、确認資料以及應對攻擊。

序列号和确認号 工作流程

TCP 的序列号和确認号機制在實際的工作中主要流程如下:

1. 建立連接配接:在 TCP 連接配接建立時,每個方向會配置設定一個初始序列号(Initial Sequence Number,ISN)。用戶端和伺服器之間分别交換 ISN,并将其用于後續的資料傳輸。此外,在連接配接建立完成後,雙方也會互相确認對方收到 ISN。

2. 發送資料:當發送方想要發送資料時,它将資料分割成多個資料段。發送方為每個資料段配置設定一個序列号,這個序列号表示了該資料段第一個位元組的編号。然後發送方将資料段和序列号封裝成封包段并發送給接收方。

3. 接收資料:當接收方收到資料時,它會檢查這些資料段的序列号,以便正确地重組資料。如果接收方收到的資料段包含所有的位元組,則将發送一個帶有确認号的封包段來告訴發送方資料已經成功接收。如果資料段不完整,則接收方隻會發送确認消息,而不會重組資料。

4. 确認資料:當發送方收到接收方的确認消息時,它會更新它期望接收的下一個序列号。這個值等于原始序列号加上已經成功接收的資料量。如果發送方沒有收到确認消息,則會重新發送資料,直到接收方成功接收。

5. 流量控制:在資料傳輸過程中,接收方會根據它的可用緩沖區大小和視窗大小來通知發送方可以發送多少資料。如果接收方的緩沖區已滿,則它會通知發送方停止發送資料,直到有更多的空間。

6. 關閉連接配接:當一方要關閉連接配接時,它會向另一方發送一個帶有 FIN 标志位的封包段,并等待對方确認。接收方收到 FIN 後會立即發送一個 ACK 确認消息,然後通知應用程式連接配接已經關閉。

綜上所述,TCP 的序列号和确認号機制在實際工作中起着至關重要的作用,確定了資料傳輸的可靠性和正确性。這個機制不僅能夠自動調節流量控制,還能夠防止網絡攻擊及其他幹擾因素對資料傳輸造成的影響。

繼續閱讀