協議棧

OSI七層網絡模型與TCP/IP四層網絡模型

1. OSI網絡分層參考模型

  網絡協議設計者不應當設計一個單一、巨大的協議來爲所有形式的通信規定完整的細節,而應把通信問題劃分成多個小問題,然後爲每一個小問題設計一個單獨的協議。這樣做使得每個協議的設計、分析、時限和測試比較容易。協議劃分的一個主要原則是確保目標系統有效且效率高。爲了提高效率,每個協議只應該注意沒有被其他協議處理過的那部分通信問題;爲了主協議的實現更加有效,協議之間應該能夠共享特定的數據結構;同時這些協議的組合應該能處理所有可能的硬件錯誤以及其它異常情況。爲了保證這些協議工作的協同性,應當將協議設計和開發成完整的、協作的協議系列(即協議族),而不是孤立地開發每個協議。
  在網絡歷史的早期,國際標準化組織(ISO)和國際電報電話諮詢委員會(CCITT)共同出版了開放系統互聯的七層參考模型。一臺計算機操作系統中的網絡過程包括從應用請求(在協議棧的頂部)到網絡介質(底部) ,OSI參考模型把功能分成七個分立的層次。圖2.1表示了OSI分層模型。
  ┌─────┐
  │ 應用層 │←第七層
  ├─────┤
  │ 表示層 │
  ├─────┤
  │ 會話層 │
  ├─────┤
  │ 傳輸層 │
  ├─────┤
  │ 網絡層 │
  ├─────┤
  │數據鏈路層│
  ├─────┤
  │ 物理層 │←第一層
  └─────┘ 
  OSI七層參考模型
  OSI模型的七層分別進行以下的操作:
  第一層:物理層
  負責最後將信息編碼成電流脈衝或其它信號用於網上傳輸。它由計算機和網絡介質之間的實際界面組成,可定義電氣信號、符號、線的狀態和時鐘要求、數據編碼和數據傳輸用的連接器。如最常用的RS-232規範、10BASE-T的曼徹斯特編碼以及RJ-45就屬於第一層。所有比物理層高的層都通過事先定義好的接口而與它通話。如以太網的附屬單元接口(AUI),一個DB-15連接器可被用來連接層一和層二。
  第二層:數據鏈路層
  通過物理網絡鏈路提供可靠的數據傳輸。不同的數據鏈路層定義了不同的網絡和協議特徵,其中包括物理編址、網絡拓撲結構、錯誤校驗、幀序列以及流控。物理編址(相對應的是網絡編址)定義了設備在數據鏈路層的編址方式;網絡拓撲結構定義了設備的物理連接方式,如總線拓撲結構和環拓撲結構;錯誤校驗向發生傳輸錯誤的上層協議告警;數據幀序列重新整理並傳輸除序列以外的幀;流控可能延緩數據的傳輸,以使接收設備不會因爲在某一時刻接收到超過其處理能力的信息流而崩潰。數據鏈路層實際上由兩個獨立的部分組成,介質存取控制(Media Access Control,MAC)和邏輯鏈路控制層(Logical Link Control,LLC)。MAC描述在共享介質環境中如何進行站的調度、發生和接收數據。MAC確保信息跨鏈路的可靠傳輸,對數據傳輸進行同步,識別錯誤和控制數據的流向。一般地講,MAC只在共享介質環境中才是重要的,只有在共享介質環境中多個節點才能連接到同一傳輸介質上。IEEE MAC規則定義了地址,以標識數據鏈路層中的多個設備。邏輯鏈路控制子層管理單一網絡鏈路上的設備間的通信,IEEE 802.2標準定義了LLC。LLC支持無連接服務和面向連接的服務。在數據鏈路層的信息幀中定義了許多域。這些域使得多種高層協議可以共享一個物理數據鏈路。
  第三層:網絡層
  負責在源和終點之間建立連接。它一般包括網絡尋徑,還可能包括流量控制、錯誤檢查等。相同MAC標準的不同網段之間的數據傳輸一般只涉及到數據鏈路層,而不同的MAC標準之間的數據傳輸都涉及到網絡層。例如IP路由器工作在網絡層,因而可以實現多種網絡間的互聯。
  第四層:傳輸層
  向高層提供可靠的端到端的網絡數據流服務。傳輸層的功能一般包括流控、多路傳輸、虛電路管理及差錯校驗和恢復。流控管理設備之間的數據傳輸,確保傳輸設備不發送比接收設備處理能力大的數據;多路傳輸使得多個應用程序的數據可以傳輸到一個物理鏈路上;虛電路由傳輸層建立、維護和終止;差錯校驗包括爲檢測傳輸錯誤而建立的各種不同結構;而差錯恢復包括所採取的行動(如請求數據重發),以便解決發生的任何錯誤。傳輸控制協議(TCP)是提供可靠數據傳輸的TCP/IP協議族中的傳輸層協議。
  第五層:會話層
  建立、管理和終止表示層與實體之間的通信會話。通信會話包括髮生在不同網絡應用層之間的服務請求和服務應答,這些請求與應答通過會話層的協議實現。它還包括創建檢查點,使通信發生中斷的時候可以返回到以前的一個狀態。
  第六層:表示層
  提供多種功能用於應用層數據編碼和轉化,以確保以一個系統應用層發送的信息可以被另一個系統應用層識別。表示層的編碼和轉化模式包括公用數據表示格式、性能轉化表示格式、公用數據壓縮模式和公用數據加密模式。
  公用數據表示格式就是標準的圖像、聲音和視頻格式。通過使用這些標準格式,不同類型的計算機系統可以相互交換數據;轉化模式通過使用不同的文本和數據表示,在系統間交換信息,例如ASCII(American Standard Code for Information Interchange,美國標準信息交換碼);標準數據壓縮模式確保原始設備上被壓縮的數據可以在目標設備上正確的解壓;加密模式確保原始設備上加密的數據可以在目標設備上正確地解密。
  表示層協議一般不與特殊的協議棧關聯,如QuickTime是Applet計算機的視頻和音頻的標準,MPEG是ISO的視頻壓縮與編碼標準。常見的圖形圖像格式PCX、GIF、JPEG是不同的靜態圖像壓縮和編碼標準。
  第七層:應用層
  最接近終端用戶的OSI層,這就意味着OSI應用層與用戶之間是通過應用軟件直接相互作用的。注意,應用層並非由計算機上運行的實際應用軟件組成,而是由嚮應用程序提供訪問網絡資源的API(Application Program Interface,應用程序接口)組成,這類應用軟件程序超出了OSI模型的範疇。應用層的功能一般包括標識通信夥伴、定義資源的可用性和同步通信。因爲可能丟失通信夥伴,應用層必須爲傳輸數據的應用子程序定義通信夥伴的標識和可用性。定義資源可用性時,應用層爲了請求通信而必須判定是否有足夠的網絡資源。在同步通信中,所有應用程序之間的通信都需要應用層的協同操作。
  OSI的應用層協議包括文件的傳輸、訪問及管理協議(FTAM) ,以及文件虛擬終端協議(VIP)和公用管理系統信息(CMIP)等。

2. TCP/IP分層模型

  TCP/IP分層模型(TCP/IP Layening Model)被稱作因特網分層模型(Internet Layering Model)、因特網參考模型(Internet Reference Model)。
  ┌────────┐┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐
  │        ││D│F│W│F│H│G│T│I│S│U│ │
  │        ││N│I│H│T│T│O│E│R│M│S│其│
  │第四層,應用層 ││S│N│O│P│T│P│L│C│T│E│ │
  │        ││ │G│I│ │P│H│N│ │P│N│ │
  │        ││ │E│S│ │ │E│E│ │ │E│它│
  │        ││ │R│ │ │ │R│T│ │ │T│ │
  └────────┘└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘
  ┌────────┐┌─────────┬───────────┐
  │第三層,傳輸層 ││   TCP   │    UDP    │
  └────────┘└─────────┴───────────┘
  ┌────────┐┌─────┬────┬──────────┐
  │        ││     │ICMP│          │
  │第二層,網間層 ││     └────┘          │
  │        ││       IP            │
  └────────┘└─────────────────────┘
  ┌────────┐┌─────────┬───────────┐
  │第一層,網絡接口││ARP/RARP │    其它     │
  └────────┘└─────────┴───────────┘
                     TCP/IP四層參考模型 
  TCP/IP協議被組織成四個概念層,其中有三層對應於ISO參考模型中的相應層。ICP/IP協議族並不包含物理層和數據鏈路層,因此它不能獨立完成整個計算機網絡系統的功能,必須與許多其他的協議協同工作。
  TCP/IP分層模型的四個協議層分別完成以下的功能:
  第一層:網絡接口層
  包括用於協作IP數據在已有網絡介質上傳輸的協議。實際上TCP/IP標準並不定義與ISO數據鏈路層和物理層相對應的功能。相反,它定義像地址解析協議(Address Resolution Protocol,ARP)這樣的協議,提供TCP/IP協議的數據結構和實際物理硬件之間的接口。
  第二層:網間層
  對應於OSI七層參考模型的網絡層。本層包含IP協議、RIP協議(Routing Information Protocol,路由信息協議),負責數據的包裝、尋址和路由。同時還包含網間控制報文協議(Internet Control Message Protocol,ICMP)用來提供網絡診斷信息。
  第三層:傳輸層
  對應於OSI七層參考模型的傳輸層,它提供兩種端到端的通信服務。其中TCP協議(Transmission Control Protocol)提供可靠的數據流運輸服務,UDP協議(Use Datagram Protocol)提供不可靠的用戶數據報服務。
  第四層:應用層

  對應於OSI七層參考模型的應用層和表達層。因特網的應用層協議包括Finger、Whois、FTP(文件傳輸協議)、Gopher、HTTP(超文本傳輸協議)、Telent(遠程終端協議)、SMTP(簡單郵件傳送協議)、IRC(因特網中繼會話)、NNTP(網絡新聞傳輸協議)等。


PS:CCNP中寫的ARP和RARP都屬於網絡層,中國網絡工程師教程寫的ARP屬於數據鏈路層

==================================================================================================================================

總結
OSI中的層 功能 TCP/IP協議族
應用層 文件傳輸,電子郵件,文件服務,虛擬終端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,RIP,Telnet
表示層 數據格式化,代碼轉換,數據加密 沒有協議
會話層 解除或建立與別的接點的聯繫 沒有協議
傳輸層 提供端對端的接口 TCP,UDP
網絡層 數據包選擇路由 IP,ICMP,OSPF,BGP,IGMP,ARP,RARP
數據鏈路層 傳輸有地址的幀以及錯誤檢測功能 SLIP,CSLIP,PPP,MTU,ARP,RARP
物理層 以二進制數據形式在物理媒體上傳輸數據 ISO2110,IEEE802,IEEE802.2

======================================================================================================

轉載自:Linux C編程一站式學習


TCP/IP協議棧與數據包封裝

TCP/IP網絡協議棧分爲應用層(Application)、傳輸層(Transport)、網絡層(Network)和鏈路層(Link)四層,如下圖所示。


TCP/IP協議棧

TCP/IP協議棧

兩臺計算機通過TCP/IP協議通訊的過程如下所示。

TCP/IP通訊過程

TCP/IP通訊過程

傳輸層及其以下的機制由內核提供,應用層由用戶進程提供,應用程序對通訊數據的含義進行解釋,而傳輸層及其以下處理通訊的細節,將數據從一臺計算機通過一定的路徑發送到另一臺計算機。應用層數據通過協議棧發到網絡上時,每層協議都要加上一個數據首部(header),稱爲封裝(Encapsulation),如下圖所示。

TCP/IP數據包的封裝

TCP/IP數據包的封裝

不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報(datagram),在鏈路層叫做幀(frame)。數據封裝成幀後發到傳輸介質上,到達目的主機後每層協議再剝掉相應的首部,最後將應用層數據交給應用程序處理。

上圖對應兩臺計算機在同一網段中的情況,如果兩臺計算機在不同的網段中,那麼數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器,如下圖所示。

跨路由器通訊過程

跨路由器通訊過程

其實在鏈路層之下還有物理層,指的是電信號的傳遞方式,比如現在以太網通用的網線(雙絞線)、早期以太網採用的的同軸電纜(現在主要用於有線電視)、光纖等都屬於物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等。集線器(Hub)是工作在物理層的網絡設備,用於雙絞線的連接和信號中繼(將已衰減的信號再次放大使之傳得更遠)。

鏈路層有以太網、令牌環網等標準,鏈路層負責網卡設備的驅動、幀同步(就是說從網線上檢測到什麼信號算作新幀的開始)、衝突檢測(如果檢測到衝突就自動重發)、數據差錯校驗等工作。交換機是工作在鏈路層的網絡設備,可以在不同的鏈路層網絡之間轉發數據幀(比如十兆以太網和百兆以太網之間、以太網和令牌環網之間),由於不同鏈路層的幀格式不同,交換機要將進來的數據包拆掉鏈路層首部重新封裝之後再轉發。

網絡層的IP協議是構成Internet的基礎。Internet上的主機通過IP地址來標識,Internet上有大量路由器負責根據IP地址選擇合適的路徑轉發數據包,數據包從Internet上的源主機到目的主機往往要經過十多個路由器。路由器是工作在第三層的網絡設備,同時兼有交換機的功能,可以在不同的鏈路層接口之間轉發數據包,因此路由器需要將進來的數據包拆掉網絡層和鏈路層兩層首部並重新封裝。IP協議不保證傳輸的可靠性,數據包在傳輸過程中可能丟失,可靠性可以在上層協議或應用程序中提供支持。

網絡層負責點到點(point-to-point)的傳輸(這裏的“點”指主機或路由器),而傳輸層負責端到端(end-to-end)的傳輸(這裏的“端”指源主機和目的主機)。傳輸層可選擇TCP或UDP協議。TCP是一種面向連接的、可靠的協議,有點像打電話,雙方拿起電話互通身份之後就建立了連接,然後說話就行了,這邊說的話那邊保證聽得到,並且是按說話的順序聽到的,說完話掛機斷開連接。也就是說TCP傳輸的雙方需要首先建立連接,之後由TCP協議保證數據收發的可靠性,丟失的數據包自動重發,上層應用程序收到的總是可靠的數據流,通訊之後關閉連接。UDP協議不面向連接,也不保證可靠性,有點像寄信,寫好信放到郵筒裏,既不能保證信件在郵遞過程中不會丟失,也不能保證信件是按順序寄到目的地的。使用UDP協議的應用程序需要自己完成丟包重發、消息排序等工作。

目的主機收到數據包後,如何經過各層協議棧最後到達應用程序呢?整個過程如下圖所示。

 Multiplexing過程

Multiplexing過程

以太網驅動程序首先根據以太網首部中的“上層協議”字段確定該數據幀的有效載荷(payload,指除去協議首部之外實際傳輸的數據)是IP、ARP還是RARP協議的數據報,然後交給相應的協議處理。假如是IP數據報,IP協議再根據IP首部中的“上層協議”字段確定該數據報的有效載荷是TCP、UDP、ICMP還是IGMP,然後交給相應的協議處理。假如是TCP段或UDP段,TCP或UDP協議再根據TCP首部或UDP首部的“端口號”字段確定應該將應用層數據交給哪個用戶進程。IP地址是標識網絡中不同主機的地址,而端口號就是同一臺主機上標識不同進程的地址,IP地址和端口號合起來標識網絡中唯一的進程。

注意,雖然IP、ARP和RARP數據報都需要以太網驅動程序來封裝成幀,但是從功能上劃分,ARP和RARP屬於鏈路層,IP屬於網絡層。雖然ICMP、IGMP、TCP、UDP的數據都需要IP協議來封裝成數據報,但是從功能上劃分,ICMP、IGMP與IP同屬於網絡層,TCP和UDP屬於傳輸層。本文對RARP、ICMP、IGMP協議不做進一步介紹,有興趣的讀者可以看參考資料。


以太網(RFC 894)幀格式

以太網的幀格式如下所示:

以太網幀格式

以太網幀格式

其中的源地址和目的地址是指網卡的硬件地址(也叫MAC地址),長度是48位,是在網卡出廠時固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。類型字段有三種值,分別對應IP、ARP、RARP。幀末尾是CRC校驗碼。

以太網幀中的數據長度規定最小46字節,最大1500字節,ARP和RARP數據包的長度不夠46字節,要在後面補填充位。最大值1500稱爲以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU,如果一個數據包從以太網路由到撥號鏈路上,數據包長度大於撥號鏈路的MTU了,則需要對數據包進行分片(fragmentation)。ifconfig命令的輸出中也有“MTU:1500”。注意,MTU這個概念指數據幀中有效載荷的最大長度,不包括幀首部的長度。


ARP數據報格式

在網絡通訊時,源主機的應用程序知道目的主機的IP地址和端口號,卻不知道目的主機的硬件地址,而數據包首先是被網卡接收到再去處理上層協議的,如果接收到的數據包的硬件地址與本機不符,則直接丟棄。因此在通訊前必須獲得目的主機的硬件地址。ARP協議就起到這個作用。源主機發出ARP請求,詢問“IP地址是192.168.0.1的主機的硬件地址是多少”,並將這個請求廣播到本地網段(以太網幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播),目的主機接收到廣播的ARP請求,發現其中的IP地址與本機相符,則發送一個ARP應答數據包給源主機,將自己的硬件地址填寫在應答包中。

每臺主機都維護一個ARP緩存表,可以用arp -a命令查看。緩存表中的表項有過期時間(一般爲20分鐘),如果20分鐘內沒有再次使用某個表項,則該表項失效,下次還要發ARP請求來獲得目的主機的硬件地址。


IP地址與路由 

Pv4的IP地址長度爲4字節,通常採用點分十進制表示法(dotted decimal representation)例如0xc0a80002表示爲192.168.0.2。Internet被各種路由器和網關設備分隔成很多網段,爲了標識不同的網段,需要把32位的IP地址劃分成網絡號和主機號兩部分,網絡號相同的各主機位於同一網段,相互間可以直接通信,網絡號不同的主機之間通信則需要通過路由器轉發。

過去曾經提出一種劃分網絡號和主機號的方案,把所有IP地址分爲五類,如下圖所示。

IP地址類

A類 0.0.0.0到127.255.255.255
B類 128.0.0.0到191.255.255.255
C類 192.0.0.0到223.255.255.255
D類 224.0.0.0到239.255.255.255
E類 240.0.0.0到247.255.255.255

一個A類網絡可容納的地址數量最大,一個B類網絡的地址數量是65536,一個C類網絡的地址數量是256。D類地址用作多播地址,E類地址保留未用。

隨着Internet的飛速發展,這種劃分方案的侷限性很快顯現出來,大多數組織都申請B類網絡地址,導致B類地址很快就分配完了,而A類卻浪費了大量地址。這種方式對網絡的劃分是flat的而不是層級結構(hierarchical)的,Internet上的每個路由器都必須掌握所有網絡的信息,隨着大量C類網絡的出現,路由器需要檢索的路由表越來越龐大,負擔越來越重。

針對這種情況提出了新的劃分方案,稱爲CIDR(Classless Interdomain Routing)。網絡號和主機號的劃分需要用一個額外的子網掩碼(subnet mask)來表示,而不能由IP地址本身的數值決定,也就是說,網絡號和主機號的劃分與這個IP地址是A類、B類還是C類無關,因此稱爲Classless的。這樣,多個子網就可以彙總(summarize)成一個Internet上的網絡,例如,有8個站點都申請了C類網絡,本來網絡號是24位的,但是這8個站點通過同一個ISP(Internet service provider)連到Internet上,它們網絡號的高21位是相同的,只有低三位不同,這8個站點就可以彙總,在Internet上只需要一個路由表項,數據包通過Internet上的路由器到達ISP,然後在ISP這邊再通過次級的路由器選路到某個站點。

下面舉兩個例子:

                劃分子網的例子1

IP地址 140.252.20.68 8C FC 14 44
子網掩碼 255.255.255.0 FF FF FF 00
網絡號 140.252.20.0 8C FC 14 00
子網地址範圍 140.252.20.0~140.252.20.255  

劃分子網的例子2

IP地址 140.252.20.68 8C FC 14 44
子網掩碼 255.255.255.240 FF FF FF F0
網絡號 140.252.20.64 8C FC 14 40
子網地址範圍 140.252.20.64~140.252.20.79  

可見,IP地址與子網掩碼做與運算可以得到網絡號,主機號從全0到全1就是子網的地址範圍。IP地址和子網掩碼還有一種更簡潔的表示方法,例如140.252.20.68/24,表示IP地址爲140.252.20.68,子網掩碼的高24位是1,也就是255.255.255.0。

如果一個組織內部組建局域網,IP地址只用於局域網內的通信,而不直接連到Internet上,理論上使用任意的IP地址都可以,但是RFC 1918規定了用於組建局域網的私有IP地址,這些地址不會出現在Internet上,如下表所示。

  • 10.*,前8位是網絡號,共16,777,216個地址

  • 172.16.*到172.31.*,前12位是網絡號,共1,048,576個地址

  • 192.168.*,前16位是網絡號,共65,536個地址

使用私有IP地址的局域網主機雖然沒有Internet的IP地址,但也可以通過代理服務器或NAT(網絡地址轉換)等技術連到Internet上

還有一些不能用作主機IP地址的特殊地址:

  • 目的地址爲255.255.255.255,表示本網絡內部廣播,路由器不轉發這樣的廣播數據包。

  • 主機號全爲0的地址只表示網絡而不能表示某個主機,如192.168.10.0(假設子網掩碼爲255.255.255.0)。

  • 目的地址的主機號爲全1,表示廣播至某個網絡的所有主機,例如目的地址192.168.10.255表示廣播至192.168.10.0網絡(假設子網掩碼爲255.255.255.0)。

下面介紹路由的過程,首先正式定義幾個名詞:

路由(名詞)

數據包從源地址到目的地址所經過的路徑,由一系列路由節點組成。

路由(動詞)

某個路由節點爲數據報選擇投遞方向的選路過程。

路由節點

一個具有路由能力的主機或路由器,它維護一張路由表,通過查詢路由表來決定向哪個接口發送數據包。

接口

路由節點與某個網絡相連的網卡接口。

路由表

由很多路由條目組成,每個條目都指明去往某個網絡的數據包應該經由哪個接口發送,其中最後一條是缺省路由條目。

路由條目

路由表中的一行,每個條目主要由目的網絡地址、子網掩碼、下一跳地址、發送接口四部分組成,如果要發送的數據包的目的網絡地址匹配路由表中的某一行,就按規定的接口發送到下一跳地址。

缺省路由條目

路由表中的最後一行,主要由下一跳地址和發送接口兩部分組成,當目的地址與路由表中其它行都不匹配時,就按缺省路由條目規定的接口發送到下一跳地址。


TCP協議

段格式 

TCP的段格式如下圖所示

TCP段格式

和UDP協議一樣也有源端口號和目的端口號,通訊的雙方由IP地址和端口號標識。32位序號、32位確認序號、窗口大小稍後詳細解釋。4位首部長度和IP協議頭類似,表示TCP協議頭的長度,以4字節爲單位,因此TCP協議頭最長可以是4x15=60字節,如果沒有選項字段,TCP協議頭最短20字節。URG、ACK、PSH、RST、SYN、FIN是六個控制位,本節稍後將解釋SYN、ACK、FIN、RST四個位,其它位的解釋從略。16位檢驗和將TCP協議頭和數據都計算在內。緊急指針和各種選項的解釋從略。

通訊時序 

下圖是一次TCP通訊的時序圖。

TCP連接建立斷開

TCP連接建立斷開

在這個例子中,首先客戶端主動發起連接、發送請求,然後服務器端響應請求,然後客戶端主動關閉連接。兩條豎線表示通訊的兩端,從上到下表示時間的先後順序,注意,數據從一端傳到網絡的另一端也需要時間,所以圖中的箭頭都是斜的。雙方發送的段按時間順序編號爲1-10,各段中的主要信息在箭頭上標出,例如段2的箭頭上標着SYN, 8000(0), ACK 1001, <mss 1024>,表示該段中的SYN位置1,32位序號是8000,該段不攜帶有效載荷(數據字節數爲0),ACK位置1,32位確認序號是1001,帶有一個mss選項值爲1024。

建立連接的過程:

  1. 客戶端發出段1,SYN位表示連接請求。序號是1000,這個序號在網絡通訊中用作臨時的地址,每發一個數據字節,這個序號要加1,這樣在接收端可以根據序號排出數據包的正確順序,也可以發現丟包的情況,另外,規定SYN位和FIN位也要佔一個序號,這次雖然沒發數據,但是由於發了SYN位,因此下次再發送應該用序號1001。mss表示最大段尺寸,如果一個段太大,封裝成幀後超過了鏈路層的最大幀長度,就必須在IP層分片,爲了避免這種情況,客戶端聲明自己的最大段尺寸,建議服務器端發來的段不要超過這個長度。

  2. 服務器發出段2,也帶有SYN位,同時置ACK位表示確認,確認序號是1001,表示“我接收到序號1000及其以前所有的段,請你下次發送序號爲1001的段”,也就是應答了客戶端的連接請求,同時也給客戶端發出一個連接請求,同時聲明最大尺寸爲1024。

  3. 客戶端發出段3,對服務器的連接請求進行應答,確認序號是8001。

在這個過程中,客戶端和服務器分別給對方發了連接請求,也應答了對方的連接請求,其中服務器的請求和應答在一個段中發出,因此一共有三個段用於建立連接,稱爲'''三方握手(three-way-handshake)'''。在建立連接的同時,雙方協商了一些信息,例如雙方發送序號的初始值、最大段尺寸等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章