導航:首頁 > 網路連接 > 在計算機網路中協議棧是指什麼

在計算機網路中協議棧是指什麼

發布時間:2024-05-23 23:38:27

什麼計算機網路協議

網路協議的定義:為計算機網路中進行數據交換而建立的規則、標准或約定的集合。例如,網路中一個微機用戶和一個大型主機的操作員進行通信,由於這兩個數據終端所用字元集不同,因此操作員所輸入的命令彼此不認識。為了能進行通信,規定每個終端都要將各自字元集中的字元先變換為標准字元集的字元後,才進入網路傳送,到達目的終端之後,再變換為該終端字元集的字元。

常用協議有 HTTP TCP/IP DHCP DNS FTP TELNET SMTP POP3等等

Ⅱ 計算機網路名詞解釋知識點簡答題整理

基帶傳輸:比特流直接向電纜發送,無需調制到不同頻段;

基帶信號:信源發出的沒有經過調制的原始電信號;

URL :統一資源定位符,標識萬維網上的各種文檔,全網范圍唯一;

傳輸時延:將分組的所有比特推向鏈路所需要的時間;

協議:協議是通信設備通信前約定好的必須遵守的規則與約定,包括語法、語義、定時等。

網路協議:對等層中對等實體間制定的規則和約定的集合;

MODEM :數據機;

起始(原始)伺服器:對象最初存放並始終保持其拷貝的伺服器;

計算機網路:是用通信設備和線路將分散在不同地點的有獨立功能的多個計算機系統互相連接起來,並通過網路協議進行數據通信,實現資源共享的計算機集合;

解調:將模擬信號轉換成數字信號;

多路復用:在一條傳輸鏈路上同時建立多條連接,分別傳輸數據;

默認路由器:與主機直接相連的一台路由器;

LAN :區域網,是一個地理范圍小的計算機網路;

DNS :域名系統,完成主機名與 IP 地址的轉換;

ATM :非同步傳輸模式,是建立在電路交換和分組交換基礎上的一種面向連接的快速分組交換技術;

Torrent :洪流,參與一個特定文件分發的所有對等方的集合;

Cookie :為了辨別用戶、用於 session 跟蹤等而儲存在用戶本地終端的數據;

SAP :服務訪問點;

n PDU : PDU 為協議數據單元,指對等層之間的數據傳輸單位;第 n 層的協議數據單元;

PPP :點對點傳輸協議;

Web caching :網頁緩存技術;

Web 緩存:代替起始伺服器來滿足 HTTP 請求的網路實體。

Proxy server :代理伺服器;

Go-back-n :回退 n 流水線協議;允許發送方連續發送分組,無需等待確認,若出錯,從出錯的分組開始重發;接收方接收數據分組,若正確,發 ACK ,若出錯,丟棄出錯分組及其後面的分組,不發任何應答;

Packet switching :分組交換技術;

CDMA :碼分多路復用技術;各站點使用不同的編碼,然後可以混合發送,接收方可正確提取所需信息;

TDM :時分多路復用,將鏈路的傳輸時間劃分為若干時隙,每個連接輪流使用不同時隙進行傳輸;

FDM :頻分多路復用,將鏈路傳輸頻段分成多個小的頻段,分別用於不同連接信息的傳送;

OSI :開放系統互連模型,是計算機廣域網體系結構的國際標准,把網路分為 7 層;

CRC :循環冗餘檢測法,事先雙方約定好生成多項式,發送節點在發送數據後附上冗餘碼,使得整個數據可以整除生成多項式,接收節點收到後,若能整除,則認為數據正確,否則,認為數據錯誤;

RIP :路由信息協議;

Socket (套接字):同一台主機內應用層和運輸層的介面;

轉發表:交換設備內,從入埠到出埠建立起來的對應表,主要用來轉發數據幀或 IP 分組;

路由表:路由設備內,從源地址到目的地址建立起來的最佳路徑表,主要用來轉發 IP 分組;

存儲轉發:分組先接收存儲後,再轉發出去;

虛電路網路:能支持實現虛電路通信的網路;

數據報網路:能支持實現數據報通信的網路;

虛電路:源和目的主機之間建立的一條邏輯連接,創建這條邏輯連接時,將指派一個虛電路標識符 VC.ID ,相關設備為它運行中的連接維護狀態信息;

毒性逆轉技術: DV 演算法中,解決計數到無窮的技術,即告知從相鄰路由器獲得最短路徑信息的相鄰路由器到目的網路的距離為無窮大;

加權公平排隊 WFQ :排隊策略為根據權值大小不同,將超出隊列的數據包丟棄;

服務原語:服務的實現形式,在相鄰層通過服務原語建立交互關系,完服務與被服務的過程;

透明傳輸:在無需用戶干涉的情況下,可以傳輸任何數據的技術;

自治系統 AS :由一組通常在相同管理者控制下的路由器組成,在相同的 AS 中,路由器可全部選用同樣的選路演算法,且擁有相互之間的信息;

分組丟失:分組在傳輸過程中因為種種原因未能到達接收方的現象;

隧道技術:在鏈路層或網路層通過對等協議建立起來的邏輯通信信道;

移動接入:也稱無線接入,是指那些常常是移動的端系統與網路的連接;

面向連接服務:客戶機程序和伺服器程序發送實際數據的分組前,要彼此發送控制分組建立連接;

無連接服務:客戶機程序和伺服器程序發送實際數據的分組前,無需彼此發送控制分組建立連接;

MAC 地址:網卡或網路設備埠的物理地址;

擁塞控制:當網路發生擁塞時,用響應的演算法使網路恢復到正常工作的狀態;

流量控制:控制發送方發送數據的速率,使收發雙方協調一致;

Ad Hoc 網路:自主網路,無基站;

往返時延:發送方發送數據分組到收到接收方應答所需要的時間;

電路交換:通信節點之間採用面向連接方式,使用專用電路進行傳輸;

ADSL :非同步數字用戶專線,採用不對稱的上行與下行傳輸速率,常用於用戶寬頻接入。

多播:組播,一對多通信;

路由器的組成包括:輸入埠、輸出埠、交換結構、選路處理器;

網路應用程序體系結構:客戶機 / 伺服器結構、對等共享、混合;

集線器是物理層設備,交換機是數據鏈路層設備,網卡是數據鏈路層設備,路由器是網路層設備;

雙絞線連接設備的兩種方法:直連線和交叉線,同種設備相連和計算機與路由器相連都使用交叉線;不同設備相連用直連線;

MAC 地址 6 位元組, IPv4 地址 4 位元組, IPv6 地址 16 位元組;

有多種方法對載波波形進行調制,調頻,調幅,調相;

IEEE802.3 乙太網採用的多路訪問協議是 CSMA/CD ;

自治系統 AS 內部的選路協議是 RIP 、 OSPF ;自治系統間的選路協議是 BGP ;

多路訪問協議:分三大類:信道劃分協議、隨機訪問協議、輪流協議;

信道劃分協議包括:頻分 FDM 、時分 TDM 、碼分 CDMA ;

隨機訪問協議包括: ALOHA 、 CSMA 、 CSMA/CD(802.3) 、 CSMA/CA(802.11) ;

輪流協議包括:輪詢協議、令牌傳遞協議

ISO 和 OSI 分別是什麼單詞的縮寫,中文意思是什麼?用自己的理解寫出 OSI 分成哪七層?每層要解決的問題和主要功能是什麼?

答:ISO:international standard organization 國際標准化組織;OSI:open system interconnection reference model 開放系統互連模型;

OSI分為 應用層、表示層、會話層、傳輸層、網路層、數據鏈路層、物理層;

層名稱解決的問題主要功能

應用層實現特定應用選擇特定協議;針對特定應用規定協議、時序、表示等,進行封裝。在端系統中用軟體來實現,如HTTP;

表示層壓縮、加密等表示問題;規定數據的格式化表示,數據格式的轉換等;

會話層會話關系建立,會話時序控制等問題;規定通信的時序;數據交換的定界、同步、建立檢查點等;

傳輸層源埠到目的埠的傳輸問題;所有傳輸遺留問題:復用、流量、可靠;

網路層路由、擁塞控制等網路問題;IP定址,擁塞控制;

數據鏈路層相鄰節點無差錯傳輸問題;實現檢錯與糾錯,多路訪問,定址;

物理層物理上可達;定義機械特性,電氣特性,功能特性等;

網際網路協議棧分層模型及每層的功能。

分層的優點:使復雜系統簡化,易於維護和更新;

分層的缺點:有些功能可能在不同層重復出現;

​​



假設一個用戶 ( 郵箱為: [email protected]) 使用 outlook 軟體發送郵件到另一個用戶 ( 郵箱為: [email protected]) ,且接收用戶使用 IMAP 協議收取郵件,請給出此郵件的三個傳輸階段,並給出每個階段可能使用的應用層協議。

用戶 [email protected] 使用outlook軟體發送郵件到 163 郵件伺服器

163郵件伺服器將郵件發送給用戶 [email protected] 的yahoo郵件伺服器

用戶 [email protected] 使用IMAP協議從yahoo郵件伺服器上拉取郵件

第1、2階段可以使用SMTP協議或者擴展的SMTP協議:MIME協議,第3階段可以使用IMAP、POP3、HTTP協議

三次握手的目的是什麼?為什麼要三次(二次為什麼不行)?

為了實現可靠數據傳輸,TCP協議的通信雙方,都必須維護一個序列號,以標識發送出去的數據包中,哪些是已經被對方收到的。三次握手的過程即是通信雙方相互告知序列號起始值,並確認對方已經收到了序列號起始值的必經步驟。

如果只是兩次握手,至多隻有連接發起方的起始序列號能被確認,另一方選擇的序列號則得不到確認。

選擇性重傳 (SR) 協議中發送方窗口和接收方窗口何時移動?分別如何移動?

發送方:當收到ACK確認分組後,若該分組的序號等於發送基序號時窗口發生移動;向前移動到未確認的最小序號的分組處;

接收方:當收到分組的序號等於接收基序號時窗口移動;窗口按交付的分組數量向前移動;

簡述可靠傳輸協議 rdt1.0, rdt2.0, rdt2.1, rdt2.2 和 rdt3.0 在功能上的區別。

rdt1.0:經可靠信道上的可靠數據傳輸,數據傳送不出錯不丟失,不需要反饋。

rdt2.0(停等協議):比特差錯信道上的可靠數據傳輸,認為信道傳輸的數據可能有比特差錯,但不會丟包。接收方能進行差錯檢驗,若數據出錯,發送方接收到NAK之後進行重傳。

rdt2.1:在rdt2.0的基礎上增加了處理重復分組的功能,收到重復分組後,再次發送ACK;

rdt2.2:實現無NAK的可靠數據傳輸,接收方回發帶確認號的ACK0/1,

收到出錯分組時,不發NAK,發送接收到的上一個分組的ACK;

rdt3.0:實現了超時重發功能,由發送方檢測丟包和恢復;

電路交換和虛電路交換的區別?哪些網路使用電路交換、報文交換、虛電路交換和數據報交換?請各舉一個例子。

電路交換時整個物理線路由通訊雙方獨占;

虛電路交換是在電路交換的基礎上增加了分組機制,在一條物理線路上虛擬出多條通訊線路。

電路交換:電話通信網

報文交換:公用電報網

虛電路交換:ATM

數據報交換:Internet

電路交換:面向連接,線路由通信雙方獨占;

虛電路交換:面向連接,分組交換,各分組走統一路徑,非獨占鏈路;

數據報交換:無連接,分組交換,各分組走不同路徑;

交換機逆向擴散式路徑學習法的基本原理:

交換表初始為空;

當收到一個幀的目的地址不在交換表中時,將該幀發送到所有其他介面(除接收介面),並在表中記錄下發送節點的信息,包括源MAC地址、發送到的介面,當前時間;

如果每個節點都發送了一幀,每個節點的地址都會記錄在表中;

收到一個目的地址在表中的幀,將該幀發送到對應的介面;

表自動更新:一段時間後,沒有收到以表中某個地址為源地址的幀,從表中刪除該地址;

非持久 HTTP 連接和持久 HTTP 連接的不同:

非持久HTTP連接:每個TCP連接只傳輸一個web對象,只傳送一個請求/響應對,HTTP1.0使用;

持久HTTP連接:每個TCP連接可以傳送多個web對象,傳送多個請求/響應對,HTTP1.1使用;

Web 緩存的作用是什麼?簡述其工作過程:

作用:代理原始伺服器滿足HTTP請求的網路實體;

工作過程:

瀏覽器:與web緩存建立一個TCP連接,向緩存發送一個該對象的HTTP請求;

Web緩存:檢查本地是否有該對象的拷貝;

若有,就用HTTP響應報文向瀏覽器轉發該對象;

若沒有,緩存與原始伺服器建立TCP連接,向原始伺服器發送一個該對象的HTTP請求,原始伺服器收到請求後,用HTTP響應報文向web緩存發送該對象,web緩存收到響應,在本地存儲一份,並通過HTTP響應報文向瀏覽器發送該對象;

簡要說明無線網路為什麼要用 CSMA/CA 而不用 CSMA/CD ?

無線網路用無線信號實施傳輸,現在的技術還無法檢測沖突,因此無法使用帶沖突檢測的載波偵聽多路訪問協議CSMA/CD,而使用沖突避免的載波偵聽多路訪問協議CSMA/CA;

簡述各種交換結構優缺點,並解釋線頭 HOL 阻塞現象。

內存交換結構:以內存為交換中心;

       優點:實現簡單,成本低;

       缺點:不能並行,速度慢;

匯流排交換結構:以共享匯流排為交換中心;

       優點:實現相對簡單,成本低;

       缺點:不能並行,速度慢,不過比memory快;

縱橫制:以交叉陣列為交換中心;

       優點:能並行,速度快,比memory和匯流排都快;

       缺點:實現復雜,成本高;

線頭HOL阻塞:輸入隊列中後面的分組被位於線頭的一個分組阻塞(即使輸出埠是空閑的),等待交換結構發送;

CSMA/CD 協議的中文全稱,簡述其工作原理。

帶沖突檢測的載波偵聽多路訪問協議;

在共享信道網路中,發送節點發送數據之前,先偵聽鏈路是否空閑,若空閑,立即發送,否則隨機推遲一段時間再偵聽,在傳輸過程中,邊傳輸邊偵聽,若發生沖突,以最快速度結束發送,並隨機推遲一段時間再偵聽;

奇偶校驗、二維奇偶校驗、 CRC 校驗三者比較:

奇偶校驗能檢測出奇數個差錯;

二維奇偶校驗能夠檢測出兩個比特的錯誤,能夠糾正一個比特的差錯;

CRC校驗能檢測小於等於r位的差錯和任何奇數個差錯;

GBN 方法和 SR 方法的差異:

GBN:一個定時器,超時,重發所有已發送未確認接收的分組,發送窗口不超過2的k次方-1,接收窗口大小為1,採用累計確認,接收方返回最後一個正確接受的分組的ACK;

SR:多個定時器,超時,只重發超時定時器對應的分組,發送窗口和接收窗口大小都不超過2的k-1次方,非累計確認,接收方收到當前窗口或前一窗口內正確分組時返回對應的ACK;

Ⅲ 計算機網路(5)| 運輸層

從通信和處理信息的角度看,運輸層是向它上面的應用層提供通信服務的,它屬於面向通信部分的最高層,同時也是用戶功能中的最低層。當網路的邊緣部分中的兩台主機使用網路的核心部分的功能進行端到端的通信時,只有主機的協議棧才有運輸層,而網路核心部分中的路由器在轉發分組時都只用到下三層的功能。

運輸層的兩個主要協議 TCP/IP 都是互聯網的正式標准,即:
(1)用戶數據報協議UDP
(2)傳輸控制協議TCP

TCP則是面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP不提供廣播或者多播服務。由於TCP要提供可靠的面向連接的運輸服務,因此需要增加很多的開銷。

TCP/IP的運輸層用一個16位埠號來標志一個埠。埠號只有本地意義。它是為了標志本計算機應用層中的各個進程在和運輸層交互時的層間介面。

運輸層的埠號分為以下兩類:
(1)伺服器端使用的埠號: 它主要分為系統埠號0~1023和登記埠號1024~49151。

(2)客戶端使用的埠號: 49152~65535,這類埠號僅在客戶端進程運行時才動態選擇。當伺服器收到客戶端進程的報文時,就知道客戶端進程的埠號。因而可以把數據發送給客戶進程。

用戶數據報協議相比於IP的數據報服務就是只增加了復用、分用和差錯檢測功能。UDP的主要特點是:
(1)UDP是無連接的, 發送數據之前不需要建立連接,因此減少開銷和發送數據之前的時延。
(2)UDP使用盡最大努力交付, 即不保證可靠交付,因此主機不需要維持復雜的連接狀態表。
(3)UDP是面向報文的。 發送方的UDP對應用交下來的報文,添加首部後就向下交付給IP層。不對報文做任何處理,因此當報文過長時,IP層可能需要進行分片處理。
(4)UDP沒有擁塞控制, 網路出現的擁塞不會使源主機的發送速率減低。
(5)UDP支持一對一、一對多、多對一和多對多的交互通信。
(6)UDP的首部開銷小, 只有8個位元組。

UDP有兩個欄位:數據欄位和首部欄位。先介紹首部欄位,它是由4個欄位組成的,每個欄位只有2個位元組,總共有8個位元組。各個欄位的意義如下:
(1)源埠: 源埠號。在需要對方回信時選用。不需要時可用全0。
(2)目的埠: 目的埠號。在這終點交付報文時必須使用。
(3)長度: UDP用戶數據報的長度,其最小值是8(只有首部)。
(4)檢驗和: 檢測UDP用戶數據報在傳輸中是否有錯,有錯則丟棄。

當在傳送用戶數據報時,如果接收方UDP發現收到的報文中目的埠號不正確(即不存在對應於該埠號的應用進程),就丟棄該報文,並由網際控制報文協議ICMP發送「埠不可達」差錯報文給發送方。

TCP的主要特點如下:
(1)TCP是面向連接的運輸層協議。 應用程序在使用TCP協議之前,必須先建立TCP連接。傳送數據完畢後,必須釋放TCP連接。
(2)每一條TCP連接只能有兩個端點。 每一條TCP連接只能是點對點的。
(3)TCP提供可靠交付的服務。 通過TCP連接傳送的數據,無差錯、不丟失、不重復,並且按序到達。
(4)TCP提供全雙工通信。 TCP允許通信雙方的應用進程在任何時候都能發送數據。
(5)面向位元組流。 TCP中的流指的是流入到進程或進程流出的位元組序列。雖然應用程序和TCP的交互是一次一個數據塊,但TCP把應用程序交下來的數據看成一連串的無結構的位元組流。TCP不保證發送方發送的數據塊和接收方接收的數據塊一致,但保證程序接收到的位元組流和程序發送的位元組流一致。

TCP連接的端點叫做套接字或者插口。套接字是指將埠號拼接到IP地址之後,即:

每一條TCP連接唯一的被通信兩端的兩個端點所確定。即:

如圖所示,A發送分組M1,發送完畢就暫停發送,等待B的確認,B收到了M1就向A發死你確認。A在收到了對M1的確認之後,就再發送下一個分組M2,以此類推。

如圖所示,當B接收M1時檢測出了差錯,就丟棄M1,其他什麼也不做。而A只要超過了一段時間沒有收到確認,就會認為剛才發送的分組丟失了,因而重傳前面發送過的分組,這就叫做超時重傳,而實現超時重傳則需要A為每一個已發送的分組都設置一個超時計時器。
需要注意以下三點:
(1)A在發送完一個分組後,必須暫時保留已發送的分組的副本。
(2)分組和確認分組必須編號,這樣才能明確哪一個發出的分組收到了確認。
(3)超時計時器設置的重傳時間應當比數據在分組傳輸的平均往返時間更長。

如圖所示,B所發送的對M1確認丟失了,A在設定的超時重傳時間內沒有收到確認,所以無法知道自己發送的分組是怎樣出錯的,所以會重傳M1,而當B又收到了重傳的分組M1,這時應該採取兩個行動:
(1)丟棄這個重復分組M1。
(2)向A發送確認。

還有一種情況就是在傳輸過程中沒有出現差錯,但B對分組M1的確認遲到了,而A會收到重復的確認,A收下後就會丟棄,B仍然會收到重復的M1,並且同樣要丟棄重復的M1,並且重傳確認分組。

停止等待協議的優點是簡單,缺點則是信道的利用率太低。我們用TD表示A發送分組需要的時間,TA表示B發送確認分組需要的時間,RTT為往返時間,則:

為了提高傳輸的效率,發送方可以不使用低效率的停止等待協議,而是採用流水線傳輸的方式。即不必每發完一個分組就停下來等待對方的確認,這樣就可以使信道上一直有數據在不間斷的傳送。

如圖表示的是發送方維持的發送窗口,它指的是位於發送窗口內的5個分組都可以連續發送出去而不需要等待對方的確認。同時連續ARP協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。

對於接收方採用的則是累計確認的方式,即接收方不必對收到的分組逐個發送確認。而是在收到幾個分組後,對按序到達的最後一個分組發送確認,這就表示:到這個分組為止的所有分組都已正確收到了。這種方式的優點是:容易實現,即使確認丟失也不必重傳(意思是發送方不必重傳)。但缺點是不能向發送方反映出接收方已經正確收到的所有分組信息。

TCP雖然是面向位元組流的,但傳送TCP的數據單元卻是報文段。一個TCP報文段可以分為首部和數據兩部分。

為了後面講述的方便,我們假設數據傳輸只在一個方向進行,即A發送數據,B給出確認。

TCP的滑動窗口是以位元組為單位的。如圖所示,現在假定A收到了B發來的確認報文段,其中的窗口是20位元組,而確認號是31,根據這2個數據,A就構造出自己的發送窗口。

發送窗口表示:在沒有收到B的確認的情況下,A可以連續把窗口內的數據都發送出去。凡是已經發送過的數據,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。發送窗口後面的部分表示已發送且已經收到了確認。而發送窗口前沿的部分表示不允許發送的。

現在假定A發送了序號為31~41的數據。這時發送窗口位置並未改變但是發送窗口內靠後面有11個位元組表示已發送但是未收到確認。而發送窗口內靠前面的9個位元組時允許發送但未發送的。如圖所示:

而對於B,它的接收窗口大小是20,在接收窗口外面到30號位置的數據是接收並確認的,因此可以丟棄。在下圖中,B收到了32和33的數據,但它們不是按序到達的,因為並沒有收到31號數據。B只能對按序達收到的數據中的最高序號給出確認,因此B發送的確認報文欄位的確認號依然是31號。

現在假定B收到了序號為31的數據,並把31~33的數據交付主機,然後B刪除這些數據。接著把窗口向前移動3個序號,同時給a發送確認,其中的窗口值仍為20,但確認號變為34。表明B已經收到序號33為止的數據。

因為TCP的發送方在規定的時間內沒有收到確認就要重傳已經發送的報文段,但是重傳時間的選擇卻TCP最復雜的問題之一。為此TCP採用了一種自適應演算法,它記錄了一個報文段發出的時間以及收到相應的確認的時間。這兩個時間之差就是報文段的往返時間RTT,同時TCP保留了RTT的加權平均往返時間RTTs。而RTTD是RTT的偏差加權平均值,它與RTTs和新的RTT樣本之差有關。

超時重傳時間的演算法如下:
第一次測量時,加權平均往返時間取往返時間RTT,以後每次測量到一個新的RTT,按以下公式計算:

第一次測量時,RTT偏差的加權平均等於RTT的一半,以後的測里中,按以下公式計算:

綜上超時重傳時間RTO計算如下:

若收到的報文無差錯,只是未按序號,使用選擇確認SACK可是讓發送方發送那些未收到的數據,而不重復發送已經收到的那些數據。如果要使用選擇確認SACK,那麼在建立TCP連接時,就要在TCP首部的選項中加上「允許SACK」的選項,並且雙方必須都事先商量好。

流量控制就是指讓發送方的發送速率不要太快,要讓接收方來得及接收。而利用滑動窗口機制就可以很方便的在TCP連接上實現對發送方的流量控制。

如上圖所示,接收方B進行了三次流量控制。第一次把窗口減小到rwnd=300,第二次又減到rwnd=100,最後是rwnd=0,即不允許發送方再發送數據了。

但是我們應該考慮一種情況,就是當接收方B的存儲已滿時,會向發送方發送零窗口的報文段,接著B的存儲又有了一些空間,B再向A發送一個不為零的窗口值,但這個報文丟失了,結果就是雙方一直等待下去。所以為了解決這個問題,TCP為每一個連接設有一個持續計時器。只要TCP連接的一方收到對方的零窗口通知,就啟動持續計時器,當計時器到期後,就發送一個探測段文段,而對方就在確認這個探測段時給出了現在的窗口值。如果窗口仍然是0,那麼收到這個報文段的一方就重新設置持續計時器,反之則死鎖的僵局就可以打破了。

應用程序把數據傳送到TCP的發送緩存後,TCP在何時發送這些數據?,在TCP的實現中廣泛使用了Nagle演算法。具體演算法如下:
(1)若發送應用進程要把數據逐個位元組地送到TCP的發送緩存,則發送方就把第一個數據位元組先發出去,把後面到達的數據位元組都緩存起來。
(2)方發送方收到對第一個數據位元組的確認後,再把發送緩存中的所有數據組裝成一個報文發送出去,同時繼續對後續到來的數據進行緩存。
(3)只有收到對前一個報文段的確認後才繼續發送下一個報文段。

當數據到達快而網路速度慢時,這種方法可以明顯減少網路帶寬。Nagle還規定:當到達的數據達到窗口的一半或最大報文長度時就立即發送一個報文。

但還還需要考慮一個叫做糊塗綜合征的問題,具體內容是若接收方的緩存已滿,應用進程每次只從緩存中取1個位元組,然後向發送方確認,並把窗口設為1個位元組(緩存只空了1個位元組的空間),接著發送方發來1個位元組,接收方發回確認,仍然將窗口設為1,這樣進行下去,網路的利用率很低。

為了解決這個問題,可以讓接收方等待一段時間,使得或者緩存已有足夠的空間或者等到接收緩存已有一半的空閑空間。此時,接收方就發出確認報文,並向發送方通知當前窗口的大小。

擁塞 是指在某一段時間內,若對網路中某一資源的需求超過了該資源所能提供的可用部分,網路的性能就會變壞的情況。而所謂的 擁塞控制 就是防止過多的數據注入到網路當中,這樣可以使網路中的路由器或者鏈路不致過載,它是一個全局性的過程,涉及到所有的主機和路由器,而流量控制往往是指點對點通信量的控制。擁塞控制所要做的都有一個前提,就是網路能夠承受現有的網路負荷。

TCP進行擁塞控制的演算法有4種:慢開始、擁塞避免、快重傳和快恢復。下面在討論這些演算法時我們假定:
(1)數據是單方向傳送的,對方只傳送確認報文。
(2)接收方總是有足夠大的緩存空間。

發送方維持一個擁塞窗口的狀態變數,其大小取決於擁塞程度,並且動態變化。發送方讓自己的發送窗口小於擁塞窗口(如果考慮接收方的接收能力的話,發送窗口可能小於擁塞窗口)。發送方控制擁塞窗口的原則是:只要網路沒有擁塞,擁塞窗口就再增大一點,以便把更多的分組發送出去,只要出現擁塞,就減小擁塞窗口,以減少注入到網路的分組數。

下面會從「慢開始演算法」講起來討論擁塞窗口的大小如何變化的。

慢開始的演算法思路是:當主機開始發送數據時,由於並不清楚網路的負荷情況,所以如果立即把大量數據位元組注入到網路中,就有可能引起網路擁塞。因此會採用由小逐漸增大發送窗口。即在通常開始發送報文時,先將擁塞窗口cwnd的值設為一個最大報文段MSS的數值,而在每收到一個新的報文段確認後,把擁塞窗口增加至多一個MSS的數值。

如上圖所示,開始時cwnd=1,發送方發送一個M1,接收方收到M1發送確認,發送方收到一個確認後將cwnd加1,此時cwnd=2,因此發送方發送M2和M3兩個報文段,接收方收到後返回兩個確認,因此cwnd增加兩次,此時cwnd=4,接著發送方發送M4~M7四個報文段。依次類推。因此使用慢開始演算法後,每經過一個傳輸輪次,擁塞窗口就加倍。

但是為了防止擁塞窗口cwnd增加過大導致網路擁塞,需要設置一個慢開始門限ssthresh,慢開始門限用法如下:
當cwnd<ssthresh時,使用上述的慢開始演算法。
當cwnd>ssthresh時,停止使用慢開始演算法,使用擁塞避免演算法。
當cwnd=ssthresh時,既可以使用慢開始演算法,也可以使用擁塞避免演算法。
這里的擁塞避免演算法是指讓擁塞窗口緩慢的增大,即每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1,而不是像慢開始階段那樣加倍增長。

需要注意的是無論在慢開始階段還是擁塞避免階段,只要發送方判斷網路出現擁塞(根據是沒有按時收到確認),立即把慢開始門限ssthresh設為出現擁塞時的發送窗口的一半。然後發送窗口cwnd重新設為1,執行慢開始演算法。目的是迅速減少主機發送到網路分組的分組數。

快重傳演算法要求接收方每收到一個失序的報文段後就立即發送重復確認,如下圖接收了M1和M2後,又接收到一個M4,M4屬於失序報文,則發送對M2的重復確認。發送方只要連續收到三次確認重復就立即重傳對方未收到的報文段M3。

與快重傳演算法配合的還有快恢復演算法,過程如下:
(1)當發送方連續收到三個重復確認時,就把慢開始門限ssthresh減半,這是為了防止網路擁塞,接著並不執行慢開始演算法。
(2)由於上圖這種情況很可能不是因為網路擁塞引起的,因此這里不執行慢開始演算法(即不把擁塞窗口cwnd設為1,這樣速度太慢),而是把cwnd值設置為慢開始門限ssthresh減半後的數值,然後開始執行擁塞避免演算法。

TCP的運輸連接有是三個階段:連接建立、數據傳送和連接釋放。在TCP的連接過程中要解決以下三個問題:
(1)要使每一方能夠確知對方的存在。
(2)要允許雙方協商一些參數(如最大窗口值、是否使用窗口擴大選項和時間戳選項以及服務質量)。
(3)能夠對運輸實體資源進行分配。

TCP建立連接的過程叫做握手,握手需要在客戶和伺服器之間交換3個TCP報文段。如圖是三報文握手建立的連接過程:

A最後還要發送一次確認的原因是為了防止已經失效的連接請求報文段突然又傳送到了B,因而產生錯誤。試想一種情況:如果只有第一次和第二次握手,第二次B向A發送的確認丟失了,此時B進入了連接建立狀態,A沒有收到確認,過一段時間後會再次向B發送連接請求,B收到後又會再次建立連接,白白浪費B的資源。

A在TIME-WAIT狀態等待2MSL(MSL,最長報文段壽命),主要是因為以下兩點考慮:首先是為了保證A發送的最後一個ACK報文段能夠到達B,因為這個ACK報文段可能丟失,此時B會重傳連接釋放報文,如果A已經關閉,則無法收到這個報文。其次,當A在發送完最後一個ACK報文段後,再經過時間2MSL,就可以使本連接持續時間內產生的所有報文段都從網路中消失。這樣,下一個新連接中不會出現這種舊的連接請求報文段。

在圖中每一個方框即TCP可能具有的狀態。每個方框中的大寫英文字元串時TCP標准所使用的的TCP連接狀態名。狀態之間的箭頭表示可能發生的狀態變遷。箭頭旁邊的字表明引起這種變遷的原因,或表明發生狀態變遷後又出現什麼動作,在圖中粗實線箭頭表示對客戶進程的正常變遷,粗虛線箭頭表示對伺服器進程的正常變遷,細線箭頭表示異常變遷。

閱讀全文

與在計算機網路中協議棧是指什麼相關的資料

熱點內容
億聯網路股票是哪個板塊 瀏覽:288
計算機網路支撐技術包括 瀏覽:132
vpm蘋果網路加速 瀏覽:899
蘋果6怎麼修改網路 瀏覽:952
全球手機網路最貴的國家是 瀏覽:540
計算機網路空間技術是干什麼的 瀏覽:444
電視上如何添加網路 瀏覽:682
數據網路基帶需要多少錢 瀏覽:317
wifi算有線還是無線網路 瀏覽:510
區域網有網卡驅動怎麼連接網路 瀏覽:881
專升本計算機網路 瀏覽:349
藍牙音響怎麼連接電腦上的網路 瀏覽:22
怎麼看蘋果手機網路鎖 瀏覽:824
共建網路安全成全國共識 瀏覽:635
網路連接訪問網址 瀏覽:586
真我Q25g網路模式選哪個 瀏覽:374
網路上的評論在哪裡找 瀏覽:262
手機沒有網路怎麼緊急呼叫 瀏覽:750
拔了網線找不到wifi網路 瀏覽:783
網路語鏟鏟是什麼意思 瀏覽:772

友情鏈接