⑴ 關於計算機網路中數據鏈路層和傳輸層TCP的一些問題
數據鏈路層是直連兩點之間的通訊,傳輸層是任意兩點之間的可靠通訊。
將差錯檢測放在2層還是4層,這是個問題,這么問題似乎不會有答案。在目前看來人們傾向與放在4層。至於他們之間有什麼關系。在OSI七層中每一層都是獨立運作的 每一層只關心自己的工作。然後把結果交給上層或者接受下層的結果。數據鏈路層是在幀尾加上效驗信息 來發現錯誤。這里並沒有協議,所以它是「傻瓜」式的 在這層只能保證接收端 接收的幀都是正確的 而不能保證是不是都接收完整了 那就更談不上超時重發了。 而傳輸層依靠TCP一些就要可靠得多 它的差錯控制 包括效驗和、確認、超時3個部分 它是智能得多 舉個例子 比如同樣3段數據:"11 22 33" 先經過2層 有可能接收方收到數據「11 31」很顯然 丟了一段「22」、也把 33 收成了 31 這是2層怎麼處理?首先11 沒有錯,22丟了這時候2層一點辦法都沒有,丟了就丟了。 33 收成31 這個經過效驗信息2層能夠知道錯了 但2曾不會請求重發 它只能直接丟掉!數據傳到了4層TCP的差錯控制 就能一一解決這些問題 4層收到11 沒錯不管了、 收不到22 那這是TCP就要請求重發直到正確為止。收到的是31 而不是33 TCP通過效驗和欄位也能知道錯了 也要求重發 一直到正確為止。再舉個通俗點例子進一步說明:機場有2個不同的安檢部門一個用X光(機場常規安檢) 一個用警犬(警察部門)。他們工作的目的一樣都為了保證安全,但完成的過程不一樣。互相協助!
⑵ 計算機網路技術:TCP/IP體系結構將網路分為哪幾層TCP/IP體系結構與OSI模型的對應關系是
計算機網路技術:TCP/IP體系結構將網路分為應用層,表示層,會話層,傳輸層,網路層,數據鏈路層,物理層。
TCP/IP體系結構與OSI模型的對應關系是:osi的上三層對應tcp的應用層,傳輸層與網路層是一一對應的。
應用層、表示層、會話層三個層次提供的服務相差不是很大,所以在TCP/IP協議中,它們被合並為應用層一個層次。由於運輸層和網路層在網路協議中的地位十分重要,所以在TCP/IP協議中它們被作為獨立的兩個層次。
(2)計算機網路中tcprp4擴展閱讀:
對不同種類的應用程序它們會根據自己的需要來使用應用層的不同協議,郵件傳輸應用使用了SMTP協議、萬維網應用使用了HTTP協議、遠程登錄服務應用使用了有TELNET協議。
在TCP/IP協議中,網路介面層位於第四層。由於網路介面層兼並了物理層和數據鏈路層所以,網路介面層既是傳輸數據的物理媒介,也可以為網路層提供一條准確無誤的線路。
⑶ TCP/IP協議分為哪四層,具體作用是什麼
具體分為:網路訪問層、網際互連層、傳輸層(主機到主機)、和應用層。
對應於OSI參考模型的高層,為用戶提供所需要的各種服務,例如:FTP、Telnet、DNS、SMTP等.
傳輸層對應於OSI參考模型的傳輸層,為應用層實體提供端到端的通信功能,保證了數據包的順序傳送及數據的完整性。該層定義了兩個主要的協議:傳輸控制協議(TCP)和用戶數據報協議(UDP).
TCP協議提供的是一種可靠的、面向連接的數據傳輸服務;而UDP協議提供的則是不可靠的、無連接的數據傳輸服務.
網際互聯層對應於OSI參考模型的網路層,主要解決主機到主機的通信問題。它所包含的協議設計數據包在整個網路上的邏輯傳輸。注重重新賦予主機一個IP地址來完成對主機的定址,它還負責數據包在多種網路中的路由。該層有四個主要協議:網際協議(IP)、地址解析協議(ARP)、互聯網組管理協議(IGMP)和互聯網控制報文協議(ICMP)。
IP協議是網際互聯層最重要的協議,它提供的是一個不可靠、無連接的數據報傳遞服務。
網路接入層與OSI參考模型中的物理層和數據鏈路層相對應。它負責監視數據在主機和網路之間的交換。事實上,TCP/IP本身並未定義該層的協議,而由參與互連的各網路使用自己的物理層和數據鏈路層協議,然後與TCP/IP的網路接入層進行連接。
是計算機網路的祖父ARPANET和其後繼的網際網路使用的參考模型。ARPANET是由美國國防部DoD(U.S.Department of Defense)贊助的研究網路。逐漸地它通過租用的電話線連結了數百所大學和政府部門。當無線網路和衛星出現以後,現有的協議在和它們相連的時候出現了問題,所以需要一種新的參考體TCP/IP參考模型系結構。這個體系結構在它的兩個主要協議出現以後,被稱為TCP/IP參考模型(TCP/IP reference model)。
由於國防部擔心他們一些珍貴的主機、路由器和互聯網關可能會突然崩潰,所以網路必須實現的另一目標是網路不受子網硬體損失的影響,已經建立的會話不會被取消,而且整個體系結構必須相當靈活。
⑷ TCP/IP協議參考模型共分為了幾層,其中3、4層分別是什麼
TCP/IP協議參考模型共有4層,從下到上3、4層分別是網路層、網路介面層。
分別介紹TCP/IP協議中的四個層次:
1、應用層:應用層是TCP/IP協議的第一層,是直接為應用進程提供服務的。
2、運輸層:作為TCP/IP協議的第二層,運輸層在整個TCP/IP協議中起到了中流砥柱的作用。且在運輸層中,TCP和UDP也同樣起到了中流砥柱的作用。
3、網路層:網路層在TCP/IP協議中的位於第三層。在TCP/IP協議中網路層可以進行網路連接的建立和終止以及IP地址的尋找等功能。
4、網路介面層:在TCP/IP協議中,網路介面層位於第四層。由於網路介面層兼並了物理層和數據鏈路層所以,網路介面層既是傳輸數據的物理媒介,也可以為網路層提供一條准確無誤的線路。
(4)計算機網路中tcprp4擴展閱讀
OSI模型:
1、第1層是物理層(Physical Layer)(也即OSI模型中的第一層)
2、第2層是數據鏈路層(Data Link Layer)運行乙太網等協議。
3、第3層是網路層(Network Layer)在計算機網路中進行通信的兩個計算機之間可能會經過很多個數據鏈路,也可能還要經過很多通信子網。
4、第4層是處理信息的傳輸層(Transport Layer)。第4層的數據單元也稱作數據包(packets)。但是,當你談論TCP等具體的協議時又有特殊的叫法,TCP的數據單元稱為段(segments)而UDP協議的數據單元稱為「數據報(datagrams)」。
5、第5層是會話層( Session Layer)這一層也可以稱為會晤層或對話層,在會話層及以上的高層次中,數據傳送的單位不再另外命名,統稱為報文。
6、第6層是表示層(Presentation Layer)這一層主要解決用戶信息的語法表示問題。
7、第7層是「一切」。第7層也稱作「應用層」(Application Layer),是專門用於應用程序的。
⑸ 計算機網路——TCP三次握手四次揮手
用戶進程和伺服器進程需要完成一次通信都需要完成 三個階段 : 連接建立、數據傳送、連接釋放
參考:三次握手和四次揮手
首先先明確幾個概念:
序列號seq(4B) :用來標記數據段的順序,TCP把連接中發送的所有數據位元組都編上一個序號,第一個位元組的編號由本地隨機產生,給位元組編上序號後,就給每一個報文段指派一個序號, 序列號seq就是這個報文段中的第一個位元組的數據編號 。
確認號ack(4B) : 期待收到對方下一個報文段的第一個數據位元組的序號 ,序列號表示報文段攜帶數據的第一個位元組的編號,而確認號指的是期望接受到下一個位元組的編號,因此擋牆報文段最後一個位元組的編號+1即是確認號。
確認ACK(1bit) :僅當ACK=1,確認號欄位才有效。ACK=0,確認號無效。
同步SYN : 連接建立時 用於同步序號。SYN=1表示這是一個連接請求,或連接接收報文,SYN這個標志位只有在TCP建立連接才會被置為1,握手完成後SYN標志位被置為0.當SYN=1,ACK=0表示:這是一個連接請求報文段。若同意連接,則在響應報文段中使用SYN=1,ACK=1
終止FIN :用來釋放一個連接。
B的TCP伺服器進程先創建傳輸控制塊TCB,准備接受客戶進程的連接請求。然後伺服器進程就處於LISTEN(收聽)狀態,等待客戶的連接請求。若有,則作出響應。
1)第一次握手:A首先向B發一個SYN (Synchronize) 標記的包,告訴B請求建立連接,一個 SYN包就是僅SYN標記設為1的TCP包(參見TCP包頭Resources), SYN=1的報文段不能攜帶數據 ,但要 消耗掉一個序號, 此時TCP客戶進程進入SYN-SENT(同步已發送)狀態。
2)第二次握手:B收到後會發一個對SYN包的確認包(SYN/ACK)回去,表示對第一個SYN包的確認,並繼續握手操作.注意: SYN/ACK包是僅SYN 和 ACK 標記為1的包。在確認報文段中,測試TCP伺服器進程進入SYN-RCVD(同步收到)狀態;
3)第三次握手:TCP客戶進程收到B的確認後,要向B給出確認報文段,ACK報文段可以攜帶數據,不攜帶數據則不消耗序號。TCP連接已經建立,A進入ESTABLISHED(已建立連接)。
當B收到A的確認後,也進入建立連接狀態。
序列號和確認號的關系:
第一次握手序列號seq=x;
第二次握手序列號seq=y,確認號ack=x+1;
第三次握手序列號seq=x+1,確認號ack=y+1;
序列號seq是上一次的確認號,而確認號是上一次的序列號+1;這是因為SYN=1的報文段不能攜帶數據,但要消耗掉一個序號,所以下一個報文段要+1;
為了防止已經失效的連接請求報文段突然又傳到服務端,因而產生錯誤」,這種情況是:一端(client)A發出去的第一個連接請求報文並沒有丟失,而是因為某些未知的原因在某個網路節點上發生滯留,導致延遲到連接釋放以後的某個時間才到達另一端(server)B。本來這是一個早已失效的報文段,但是B收到此失效的報文之後,會誤認為是A再次發出的一個新的連接請求,於是B端就向A又發出確認報文,表示同意建立連接。如果不採用「三次握手」,那麼只要B端發出確認報文就會認為新的連接已經建立了,但是A端並沒有發出建立連接的請求,因此不會去向B端發送數據,B端沒有收到數據就會一直等待,這樣B端就會白白浪費掉很多資源。如果採用「三次握手」的話就不會出現這種情況,B端收到一個過時失效的報文段之後,向A端發出確認,此時A並沒有要求建立連接,所以就不會向B端發送確認,這個時候B端也能夠知道連接沒有建立。(知乎上對上面的解釋的評論:這個解答不是問題的本質,這個課本很多知識比較片面。問題的核心在於保證信道數據傳輸的可靠性,避免資源浪費僅僅是一個小的弱原因,不重要。)
從客戶端到服務端釋放連接的過程中,需要四次報文傳輸。
TCP四次揮手過程
1)A的應用進程先向其TCP發出連接釋放報文段(FIN=1,序號seq=u),並停止再發送數據,主動關閉TCP連接,進入FIN-WAIT-1(終止等待1)狀態,等待B的確認。
2)B收到連接釋放報文段後即發出確認報文段,(ACK=1,確認號ack=u+1,序號seq=v),B進入CLOSE-WAIT(關閉等待)狀態,此時的TCP處於半關閉狀態,A到B的連接釋放。
3)A收到B的確認後,進入FIN-WAIT-2(終止等待2)狀態,等待B發出的連接釋放報文段。
4)B沒有要向A發出的數據,B發出連接釋放報文段(FIN=1,ACK=1,序號seq=w,確認號ack=u+1),B進入LAST-ACK(最後確認)狀態,等待A的確認。
5)A收到B的連接釋放報文段後,對此發出確認報文段(ACK=1,seq=u+1,ack=w+1),A進入TIME-WAIT(時間等待)狀態。此時TCP未釋放掉,需要經過時間等待計時器設置的時間2MSL後,A才進入CLOSED狀態。
大概就是A和B:
A:「我不和你說話了」
B:「知道了」
此時A單方面不和B說話,當B也沒有話對A說的時候
B:「我也不和你說話了」
A:「好的」
兩個人互相不說話了
TCP四次揮手總結
客戶端發送FIN後,進入終止等待狀態,伺服器收到客戶端連接釋放報文段後,就立即給客戶端發送確認,伺服器就進入CLOSE_WAIT狀態,此時TCP伺服器進程就通知高層應用進程,因而從客戶端到伺服器的連接就釋放了。此時是「半關閉狀態」,即客戶端不可以發送給伺服器,伺服器可以發送給客戶端。
此時,如果伺服器沒有數據報發送給客戶端,其應用程序就通知TCP釋放連接,然後發送給客戶端連接釋放數據報,並等待確認。客戶端發送確認後,進入TIME_WAIT狀態,但是此時TCP連接還沒有釋放,然後經過等待計時器設置的2MSL後,才進入到CLOSE狀態。
⑹ 在計算機網路中,t c p/l p是一組什麼
TCP/IP是英文Transmission Control Protocol/Internet Protocol的縮寫,意思是「傳輸控制協議/網際協議」。 TCP/IP是Internet使用的一組協議(Protocol)。 就像人類的語言一樣,要使計算機連成的網路能夠互通信息,需要有一組共同遵守的通信標准,這就是網路協議,不同的計算機之間必須使用相同的通訊協議才能進行通信。在Internet中TCP/IP協議是使用最為廣泛的通訊協議。
在Internet上傳輸控制協議和網際協議是配合進行工作的。網際協議(IP)負責將消息從一個主機傳送到另一個主機。為了安全消息在傳送的過程中被分割成一個個的小包。 傳輸控制協議(TCP)負責收集這些信息包,並將其按適當的次序放好傳送,在接收端收到後再將其正確地還原。傳輸協議保證了數據包在傳送中准確無誤。
⑺ 電腦TCP/IPv4怎麼設置
電腦TCP/IPv4設置方法:
工具/原料
win10系統電腦
1、點擊電腦桌面左下角WIN圖標,彈出頁面之後點擊設置按鈕。
⑻ 簡述TCP/IP四層體系結構及每層作用。
應該說是Internet四層體系結構
1.數據鏈路層 2.網路層 3.傳輸層 4.應用層 ,其中IP是在第二層網路層中,TCP是在第3層傳輸層中,Internet體系結構最重要的是TCP/IP協議,是實現互聯網路連接性和互操作性的關鍵,它把許多台的Internet上的各種網路連接起來。Internet的其他網路協議都要用到TCP/IP協議提供的功能,因而稱我們習慣稱整Internet協議族為TCP/IP協議族,簡稱TCP/IP協議也可稱為TCP/IP四層體系結構,
1.數據鏈路層:
數據鏈路層是物理傳輸通道,可使用多種傳輸介質傳輸,可建立在任何物理傳輸網上。比如光纖、雙絞線等
2.網路層:其主要功能是要完成網路中主機間「分組」(Packet)的傳輸。
含有4個協議:
(1)網際協議IP
負責分組數據的傳輸,各個IP數據之間是相互獨立的。
(2)互聯網控制報文協議ICMP
IP層內特殊的報文機制,起控製作用,能發送報告差錯或提供有關意外情況的信息。因為ICMP的數據報通過IP送出因此功能上屬於網路的第3層。
3)地址轉換協議ARP
為了讓差錯或意外情況的信息能在物理網上傳送到目的地,必須知道彼此的物理地址,這樣就存在把互聯網地址(是32位的IP地址來標識,是一種邏輯地址)轉換為物理地址的要求,這就需要在網路層上有一組服務(協議)能將IP地址轉換為相應的網路地址,這組協議就是APP.(可以把互聯網地址看成是外識別地址和物理地址看成是內識別地址)
(4)反向地址轉換協議RARP
RARP用於特殊情況,當只有自己的物理地址沒有IP地址時,可通過RARP獲得IP地址,如果遇到斷電或重啟狀態下,開機後還必需再使用RARP重新獲取IP地址。廣泛用於獲取無盤工作站的IP地址。
3.傳輸層:其主要任務是向上一層提供可靠的端到端(End-to-End)服務,確保「報文」無差錯、有序、不丟失、無重復地傳輸。它向高層屏蔽了下層數據通信的細節,是計算機通信體系結構中最關鍵的一層。包含以下2個重要協議:
(1)TCP :
TCP是TCP/IP體系中的傳輸層協議處於第4層傳輸層,負責數據的可靠傳輸(「三次握手」-建立連接、數據傳送、關閉連接)。
(2)UDP:
和TCP相比,數據傳輸的可靠性低,適合少量的可靠性要求不高的數據傳輸。
4.應用層:應用層確定進程間通信的性質,以滿足用戶的需要。
在應用層提供了多個常用協議。
--Telnet(Remote Login):遠程登錄
FTP(File Transfer Protocol):文件傳輸協議
SMTP(Simple Mail Transfer Protocol):簡單郵件傳輸協議
POP3(Post Office Protocol 3):第三代郵局協議
HTTP(Hyper Text Transfer Protocol):超文本傳輸協議
NNTP(Network News Transfer Protocol):網路新聞傳輸協議
⑼ TCP/IP參考模型將計算機網路協議劃分為4層,以下不屬於這4層的是
TCP/IP參考模型將計算機網路協議劃分為4層,以下不屬於這4層的是物理層。基於TCP/IP的參考模型將協議分成四個層次,它們分別是:網路訪問層、網際互聯層(主機到主機)、傳輸層、和應用層。
網路訪問層是以IP為代表的網路協議, 這是真正的互聯網通信,兩台電腦之間可能鏈路層傳出的數據協議不一樣,但是都轉換成統一的IP數據協議,通過網線進行通信。
鏈路層主要包括設備驅動程序,網卡,以及區域網,將操作系統上的數據以位流形式封裝成幀,往上發送,也將來自上一層的數據幀,拆裝為位流形式的數據轉發到電腦操作系統中。
運輸層是以TCP,UDP協議為主,因為IP協議發送的數據可靠性不高,並且是最多精確到電腦,TCP協議採用超時重傳、發送和接收端到端的確認分組等機制確保數據傳輸的可靠度,並且可以精確到進程,將數據傳遞給進程。
應用層對應於OSI參考模型的高層,為用戶提供所需要的各種服務,例如:FTP、Telnet、DNS、SMTP等。
(9)計算機網路中tcprp4擴展閱讀:
在TCP/TP協族中,網路層IP提供的是一種不可靠的服務。它只是盡可能快地把分組從源節點送到目的節點,但不提供任何可靠性的保證。Tcp在不可靠的ip層上,提供了一個可靠的運輸層,為了提供這種可靠的服務,TCP採用了超時重傳、發送和接收端到端的確認分組等機制。
在7層模型中,每一層都提供一個特殊的網路功能。從網路功能的角度觀察:下面4層(物理層、數據鏈路層、網路層和傳輸層)主要提供數據傳輸和交換功能,即以節點到節點之間的通信為主;第4層作為上下兩部分的橋梁,是整個網路體系結構中最關鍵的部分;
而上3層(會話層、表示層和應用層)則以提供用戶與應用程序之間的信息和數據處理功能為主。簡言之,下4層主要完成通信子網的功能,上3層主要完成資源子網的功能。
⑽ 計算機網路——TCP/UDP協議
計算機網路七層模型中,傳輸層有兩個重要的協議:
(1)用戶數據報協議UDP (User Datagram Protocol)
(2)傳輸控制協議TCP (Transmission Control Protocol)
UDP 在傳送數據之前不需要先建立連接。遠地主機的運輸層在收到UDP 報文後,不需要給出任何確認。雖然UDP 不提供可靠交付,但在某些情況下UDP 卻是一種最有效的工作方式。
TCP 則提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP 不提供廣播或多播服務。由於TCP 要提供可靠的、面向連接的運輸服務,因此不可避免地增加了許多的開銷,如確認、流量控制、計時器以及連接管理等。
UDP 的主要特點是:
首部手段很簡單,只有8 個位元組,由四個欄位組成,每個欄位的長度都是兩個位元組。
前面已經講過,每條TCP 連接有兩個端點,TCP 連接的端點叫做套接字(socket)或插口。套接字格式如下:
套接寧socket= (IP 地址:埠號』)
每一條TCP 連接唯一地被通信兩端的兩個端點(即兩個套接宇)所確定。即:
TCP 連接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
3次握手鏈接
4次握手釋放鏈接
斷開連接請求可以由客戶端發出,也可以由伺服器端發出,在這里我們稱A端向B端請求斷開連接。
各個狀態節點解釋如下:
下面為了討論問題的萬便,我們僅考慮A發送數據而B 接收數據並發送確認。因此A 叫做發送方,而B 叫做接收方。
「停止等待」就是每發送完一個分組就停止發送,等待對方的確認。在收到確認後再發送下一個分組。
使用上述的確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通信。像上述的這種可靠傳輸協議常稱為自動重傳請求ARQ (Automatic Repeat reQuest)。意思是重傳的請求是自動進行的。接收方不需要請求發送方重傳某個出錯的分組。
滑動窗口協議比較復雜,是TCP 協議的精髓所在。這里先給出連續ARQ 協議最基本的概念,但不涉提到許多細節問題。詳細的滑動窗口協議將在後面討論。
下圖表示發送方維持的發送窗口,它的意義是:位於發送窗口內的5 個分組都可連續發送出去,而不需要等待對方的確認。這樣,信道利用率就提高了。
連續ARQ 協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。
接收方一般都是採用 累積確認 的方式。這就是說,接收方不必對收到的分組逐個發送確認,而是可以在收到幾個分組後,對按序到達的最後一個分組發送確認,這樣就表示:到這個分組為止的所有分組都己正確收到了。
累積確認 的優點是容易實現,即使確認丟失也不必重傳。但缺點是不能向發送方反映出接收方己經正確收到的所有分組的信息。
例如,如果發送方發送了前5 個分組,而中間的第3 個分組丟失了。這時接收方只能對前兩個分組發出確認。發送方無法知道後面三個分組的下落,而只好把後面的三個分組都再重傳一次。這就叫做Go-back-N (回退N ),表示需要再退回來重傳己發送過的N 個分組。可見當通信線路質量不好時,連續ARQ 協議會帶來負面的影響。
TCP 的滑動窗口是以位元組為單位的。現假定A 收到了B 發來的確認報文段,其中窗口是20 (位元組),而確認號是31 (這表明B 期望收到的下一個序號是31 ,而序號30 為止的數據己經收到了)。根據這兩個數據, A 就構造出自己的發送窗口,其位置如圖所示。
發送窗口表示:在沒有收到B 的確認的情況下, A可以連續把窗口內的數據都發送出去。凡是己經發送過的數據,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。
發送窗口後沿的後面部分表示己發送且己收到了確認。這些數據顯然不需要再保留了。而發送窗口前沿的前面部分表示不允許發送的,因為接收方都沒有為這部分數據保留臨時存放的緩存空間。
現在假定A 發送了序號為31 ~ 41 的數據。這時發送窗口位置並未改變,但發送窗口內靠後面有11個位元組(灰色小方框表示)表示己發送但未收到確認。而發送窗口內靠前面的9 個位元組( 42 ~ 50 )是允許發送但尚未發送的。】
再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 號為止的數據是已經發送過確認,並且己經交付給主機了。因此在B 可以不再保留這些數據。接收窗口內的序號(31~50)足允許接收的。B 收到了序號為32 和33 的數據,這些數據沒有按序到達,因為序號為31 的數據沒有收到(也許丟失了,也許滯留在網路中的某處)。 請注意, B 只能對按序收到的數據中的最高序號給出確認,因此B 發送的確認報文段中的確認號仍然是31 (即期望收到的序號)。
現在假定B 收到了序號為31 的數據,並把序號為31~33的數據交付給主機,然後B刪除這些數據。接著把接收窗口向前移動3個序號,同時給A 發送確認,其中窗口值仍為20,但確認號是34,這表明B 已經收到了到序號33 為止的數據。我們注意到,B還收到了序號為37, 38 和40 的數據,但這些都沒有按序到達,只能先存在接收窗口。A收到B的確認後,就可以把發送窗口向前滑動3個序號,指針P2 不動。可以看出,現在A 的可用窗口增大了,可發送的序號范圍是42~53。整個過程如下圖:
A 在繼續發送完序號42-53的數據後,指針P2向前移動和P3重合。發送窗口內的序號都已用完,但還沒有再收到確認。由於A 的發送窗口己滿,可用窗口己減小到0,因此必須停止發送。
上面已經講到, TCP 的發送方在規定的時間內沒有收到確認就要重傳已發送的報文段。這種重傳的概念是很簡單的,但重傳時間的選擇卻是TCP 最復雜的問題之一。
TCP採用了一種自適應演算法 ,它記錄一個報文段發出的時間,以及收到相應的確認的時間。這兩個時間之差就是報文段的往返時間RTT,TCP 保留了RTT的一個加權平均往返時間RTTs (這又稱為平滑的往返時間, S 表示Smoothed 。因為進行的是加權平均,因此得出的結果更加平滑)。每當第一次測量到RTT樣本時, RTTs值就取為所測量到的RTT樣本值。但以後每測量到一個新的RTT樣本,就按下式重新計算一次RTTs:
新的RTTs = (1 - α)×(舊的RTTs) + α ×(新的RTT樣本)
α 越大表示新的RTTs受新的RTT樣本的影響越大。推薦的α 值為0.125,用這種方法得出的加權平均往返時間RTTs 就比測量出的RTT值更加平滑。
顯然,超時計時器設置的超時重傳時間RTO (RetransmissionTime-Out)應略大於上面得出的加權平均往返時間RTTs。RFC 2988 建議使用下式計算RTO:
RTO = RTTs + 4 × RTTd
RTTd是RTT 的偏差的加權平均值,它與RTTs和新的RTT樣本之差有關。計算公式如下:
新的RTTd= (1- β)×(舊的RTTd) + β × |RTTs-新的RTT樣本|
發現問題: 如圖所示,發送出一個報文段。設定的重傳時間到了,還沒有收到確認。於是重
傳報文段。經過了一段時間後,收到了確認報文段。現在的問題是:如何判定此確認報文段是對先發送的報文段的確認,還是對後來重傳的報文段的確認?
若收到的確認是對重傳報文段的確認,但卻被源主機當成是對原來的報文段的確認,則這樣計算出的RTTs 和超時重傳時間RTO 就會偏大。若後面再發送的報文段又是經過重傳後才收到確認報文段,則按此方法得出的超時重傳時間RTO 就越來越長。
若收到的確認是對原來的報文段的確認,但被當成是對重傳報文段的確認,則由此計算出的RTTs 和RTO 都會偏小。這就必然導致報文段過多地重傳。這樣就有可能使RTO 越來越短。
Kam 提出了一個演算法:在計算加權平均RTTs 時,只要報文段重傳了就不採用其往返時間樣本。這樣得出的加權平均RTTs 和RTO 就較准確。
新問題: 設想出現這樣的情況:報文段的時延突然增大了很多。因此在原來得出的重傳時間內,不會收到確認報文段。於是就重傳報文段。但根據Kam 演算法,不考慮重傳的報文段的往返時間樣本。這樣,超時重傳時間就無法更新。
解決方案: 對Kam 演算法進行修正,方法是z報文段每重傳一次,就把超時重傳時間RTO 增大一些。典型的做法是取新的重傳時間為2 倍的舊的重傳時間。當不再發生報文段的重傳時,才根據上面給出的公式計算超時重傳時間。
流量控制(flow control)就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
利用滑動窗口機制可以很方便地在TCP 連接上實現對發送方的流量控制。
接收方的主機B 進行了三次流量控制。第一次把窗口減小到rwnd =300,第二次又減到rwnd = 100 ,最後減到rwnd = 0 ,即不允許發送方再發送數據了。這種使發送方暫停發送的狀態將持續到主機B 重新發出一個新的窗口值為止。我們還應注意到,B 向A 發送的三個報文段都設置了ACK=1,只有在ACK=1 時確認號欄位才有意義。
發生死鎖: 現在我們考慮一種情況。上圖中, B 向A 發送了零窗口的報文段後不久, B 的接收緩存又有了一些存儲空間。於是B 向A 發送了rwnd = 400 的報文段。然而這個報文段在傳送過程中丟失了。A 一直等待收到B 發送的非零窗口的通知,而B 也一直等待A 發送的數據。如果沒有其他措施,這種互相等待的死鎖局面將一直延續下去。
解決方案: TCP 為每一個連接設有一個 持續計時器(persistence timer) 。只要TCP 連接的一方收到對方的零窗口通知,就啟動持續計時器。若持續計時器設置的時間到期,就發送一個 零窗口探測報文段 (僅攜帶1 宇節的數據),而對方就在確認這個探測報文段時給出了現在的窗口值。
1 TCP連接時是三次握手,那麼兩次握手可行嗎?
在《計算機網路》中是這樣解釋的:已失效的連接請求報文段」的產生在這樣一種情況下:client發出的第一個連接請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連接釋放以後的某個時間才到達server。本來這是一個早已失效的報文段。但server收到此失效的連接請求報文段後,就誤認為是client再次發出的一個新的連接請求。於是就向client發出確認報文段,同意建立連接。假設不採用「三次握手」,那麼只要server發出確認,新的連接就建立了。由於現在client並沒有發出建立連接的請求,因此不會理睬server的確認,也不會向server發送ACK包。這樣就會白白浪費資源。而經過三次握手,客戶端和伺服器都有應有答,這樣可以確保TCP正確連接。
2 為什麼TCP連接是三次,揮手確是四次?
在TCP連接中,伺服器端的SYN和ACK向客戶端發送是一次性發送的,而在斷開連接的過程中,B端向A端發送的ACK和FIN是是分兩次發送的。因為在B端接收到A端的FIN後,B端可能還有數據要傳輸,所以先發送ACK,等B端處理完自己的事情後就可以發送FIN斷開連接了。
3 為什麼在第四次揮手後會有2個MSL的延時?
MSL是Maximum Segment Lifetime,最大報文段生存時間,2個MSL是報文段發送和接收的最長時間。假定網路不可靠,那麼第四次發送的ACK可能丟失,即B端無法收到這個ACK,如果B端收不到這個確認ACK,B端會定時向A端重復發送FIN,直到B端收到A的確認ACK。所以這個2MSL就是用來處理這個可能丟失的ACK的。
1 文件傳送協議
文件傳送協議FTP (File Transfer Protocol) [RFC 959]是網際網路上使用得最廣泛的文件傳送協議,底層採用TCP協議。
盯P 使用客戶伺服器方式。一個FTP 伺服器進程可同時為多個客戶進程提供服務。FTP的伺服器進程由兩大部分組成:一個主進程,負責接受新的請求:另外有若干個從屬進程,負責處理單個請求。
在進行文件傳輸時,客戶和伺服器之間要建立兩個並行的TCP 連接:「控制連接」(21埠)和「數據連接」(22埠)。控制連接在整個會話期間一直保持打開, FTP 客戶所發出的傳送請求,通過控制連接發送給伺服器端的控制進程,但控制連接並不用來傳送文件。實際用於傳輸文件的是「數據連接」。伺服器端的控制進程在接收到FTP 客戶發送來的文件傳輸請求後就創建「數據傳送進程」和「數據連接」,用來連接客戶端和伺服器端的數據傳送進程。
2 簡單文件傳送協議TFTP
TCP/IP 協議族中還有一個簡單文件傳送協議TFfP (Trivial File Transfer Protocol),它是一個很小且易於實現的文件傳送協議,埠號69。
TFfP 也使用客戶伺服器方式,但它使用UDP 數據報,因此TFfP 需要有自己的差錯改正措施。TFfP 只支持文件傳輸而不支持交耳。
3 TELNET
TELNET 是一個簡單的遠程終端協議,底層採用TCP協議。TELNET 也使用客戶伺服器方式。在本地系統運行TELNET 客戶進程,而在遠地主機則運行TELNET 伺服器進程,佔用埠23。
4 郵件傳輸協議
一個電子郵件系統應具如圖所示的三個主要組成構件,這就是用戶代理、郵件伺服器,以及郵件發送協議(如SMTP )和郵件讀取協議(如POP3), POP3 是郵局協議(Post Office Protocol)的版本3 。
SMTP 和POP3 (或IMAP )都是在TCP 連接的上面傳送郵件,使用TCP 的目的是為了使郵件的傳送成為可靠的。