導航:首頁 > 網路連接 > 計算機網路實驗tcp和udp

計算機網路實驗tcp和udp

發布時間:2023-03-10 06:16:12

『壹』 TCP和UDP的區別

首先TCP是面向連接的,UDP是無需連接的,TCP有著三握四揮,並且三次握手和四次揮手是對TCP建立的連接有著重要意義的兩步,並且TCP是對IP無可靠性提供可靠性的源頭,UDP繼承了IP的特性,不保證不丟失包,不保證按順序到達

TCP面向位元組流,發送的時候是一個流,沒有頭尾,IP包不是一個流,而是一個個的IP包,UDP也是如此

TCP是有擁塞控制的,但是UDP沒有

MAC層去掉之後,IP層首部會有一個8位的協議,這里會存放著數據里到底是TCP還是UDP,當然這里是UDP,如果我們知道UDP格式就可以解析出來了

下一步就通過UDP包中的目標埠號,將這個包交給應用程序處理

源埠和目標埠不可少,包的序號是為了解決亂序問題,為了解決包的先後順序,還有就是確認序號,發出去的包要有確認,不然無法知道是否收到,若沒有收到就要重新發送,直到送達,這就是TCP的不丟包的實質

對於TCP來說,IP層丟不丟包管不著,但是在TCP層,會努力保證可靠性

一開始,客戶端和服務端都處於CLOSED狀態,先是服務端主動監聽某個埠,處於LISTEN狀態,然後客戶端主動發起連接SYN,之後處於SYN-SENT狀態,服務端收到發起的連接,返回SYN,並且ACK客戶端的SYN,之後處於SYN-RCVD狀態。客戶端收到服務端發送的SYN和ACK之後,發送ACK的ACK,之後處於ESTABLISHED狀態,因為它一發一收成功了,服務端收到ACK的ACK之後,處於ESTABLISHED,因為它也一發一收了

所以三次握手就能確認雙發收發功能都正常,缺一不可。

最後客戶端A的TIME-WAIT狀態時間要足夠長,長到如果B沒有收到ACK的話,B會再次發送FIN關閉連接,A會重新發送一個ACK並且時間足夠長到這個包到B

A如果直接跑路的話,它的埠就空出來了,但是B不知道,原來發的包如果在路上,但是這時突然另一個應用開啟在了這個埠上,那不就混亂了,所以A也需要等待足夠時間,等到B發送的包在網路中掛掉之後再空出埠來

等待時間設置為2MSL,報文最大的生存時間,協議規定MSL為2分鍾,實際應用中常用的是30s,1分鍾和2分鍾等

為了記錄所有發送的包和接收的包,TCP也需要發送端和接收端分別都有緩存來保存這些記錄,發送端的緩存里是按照包的ID一個個排列,根據處理情況分為下面四個部分

在TCP里,接收端會給發送端報一個窗口的大小,叫做Advertised window,這個 窗口大小 應該等於上面說的第二部分加上第三部分也就是 已經發送了但是沒有得到確認的加上還沒有發送,並且正在准備發送的 ,超過這個窗口的,接收端忙不過來,就不能發送了

第二部分的窗口有多大?

NextByteExpected 和 LastByteRead的差其實是還沒有被應用層讀取的部分佔用調MaxRcvBuffer的量,定義為A, 窗口大小其實是MaxRcvBuffer減去A

其中第二部分裡面,由於收到的包可能不是順序的,會出現空檔, 只有和第一部分連續的,可以馬上進行回復 ,中間空著的部分需要等待,哪怕後面的已經來了(可以看到接收端的窗口出現了虛線和實線的區別)

發送端

接收端

發送端 看來,1、2、3都已經發送並且確認的;4、5、6、7、8、9都是發送了還沒有確認;10、11、12是還沒有發出的;13、14、15是接收方沒有空間不準備發送的

接收端 看來,1、2、3、4、5都是已經完成ACK的,但是是沒有被應用層讀取的;6、7是等待接收的;8、9是已經接收,但是還沒有ACK的

當前的狀態

假設4的ACK到了,不幸的是5的ACK丟了,6、7的數據包丟失了,這應該怎麼做?

對每一個發送了,但是沒有ACK的包,都設有一個定時器,超過了一定的時間就重新嘗試,但是這個超時的時間如何進行評估呢,這個時間不宜過短,時間必須大於往返時間RTT,否則將會引起不必要的重傳,也不宜過長,這樣的超時時間變長,訪問就變慢了

RTT(Round-Trip Time): 往返時延。在計算機網路中它是一個重要的性能指標,表示從發送端發送數據開始,到發送端收到來自接收端的確認(接收端收到數據後便立即發送確認),總共經歷的時延。

估計往返時間需要TCP通過 采樣RTT的時間,然後進行加權平均 ,計算出來一個值,並且這個值還是隨著網路的狀況 不斷變化 的,我們成為 自適應重傳演算法

如果過一段時間,5、6、7都超時了,就會重新發送,接收方發現5原來接受過,於是丟棄5;6收到了,發送ACK,要求下一個是7,7不幸又丟了,當7再次超時的時候,有需要重傳的時候, TCP的策略是超時間隔加倍,每當遇到一次超時重傳的時候,都會將下一次超時時間間隔設為先前的兩倍,兩次超時就說明網路環境差,不適合頻繁反復發送

超時觸發重傳存在的問題是,超時周期可能相對較長

有一個 快速重傳的機制 ,當接收方收到一個序號大於下一個所期望的報文段時,就檢測到了數據流中的一個間隔,於是發送三個冗餘的ACK,客戶端收到後,在定時器過期之前,重傳丟失的報文段

例如,接收方發現6、8、9都已經接收了,7還沒來,那肯定是丟了,於是發送三個6的ACK要求下一個是7,客戶端收到3個ACK就會發現7的包確實又丟了,不再等待超時,馬上重發

SACK ,這種方式需要在TCP頭加一個SACK的東西,可以將緩存的地圖發送給發送方,例如有了ACK6、ACK8、ACK9就會知道7丟了

在對於包的確認中,同時會攜帶一個窗口的大小

假設窗口不變,始終為9,4的確認來的時候,會右移一個,這個時候第13個包也可以發送了

這個時候,假設發送端發送過猛,會將第三部分的10、11、12、13全部發送完畢,之後就停止發送了,未發送可發送部分為0

當對於包5的確認到達的時候,在客戶端相當於窗口滑動了一格,這個時候才可以有更多的包可以發送了,接下來14可以被發送

如果接收方實在處理太慢,導致緩存中沒有了空間,可以通過確認信息修改窗口的大小,甚至可以設置為0,讓發送端暫時停止發送

假設接收端應用一直不讀取緩存中的數據,當數據包6被確認後,窗口大小就會減小一個變為8

這個時候可以看到,接收端的窗口並沒有向右移動,只是簡單地將左邊的標記右移一格,窗口大小變為8

如果接收端一直不處理數據,則隨著確認包越來越多,窗口越來越小直到為0

如果情況變成這樣, 發送方會定時發送窗口探測數據包,看看是否有機會調整窗口的大小 ,當接收方比較慢的時候,要防止低能窗口綜合征, 不要空出一個位元組就告訴發送方 ,然後立馬被填滿,可以當窗口太小的時候,不更新窗口,直到達到一定大小,或者緩沖區一般為空的時候再更新窗口

擁塞控制同樣通過窗口的大小來控制,滑動窗口是為了防止發送方把接收方緩存塞滿,而擁塞窗口是為了不把網路填滿

LastByteSent - LastByteAcked <= min{滑動窗口, 擁塞窗口}

TCP協議是不知道真個網路路徑都是什麼,TCP包常被比喻為往一個誰管理灌水TCP擁塞控制就是在不堵塞,不丟包的情況下,盡量發揮帶寬

網路通道的容量 = 帶寬 x 往返延遲

假設往返時間為8s,發送的過程4s,返回的時間4s,每個包1024byte,過了8s,8個包都發出去了,其中4個已經到達了接收端,但是ACK還在路上,不能算是發送成功了,5-8後四個包還在路上沒被接收,這個時候,整個管道剛好被撐滿

如果我們在這個基礎上再將窗口調大一點,會出現什麼現象?

如果從發送端到接收端會經過四個設備,每個設備處理包的時間需要1s,所以4個包的話,總共的處理時間為4s,如果窗口調大,也就有可能增加發送速度,單位時間內,會有更多的包到達這些中間設備,那麼處理中的設備會丟棄到多餘的包,這是我們不想看到的

這個時候,我們可以為這四台設備增加緩存,處理不過來的包在隊列里等待,這樣就不會丟失了,但是缺點是會增加時間,在之前我們分析過只需要4s一個包即可到達發送端,但是進入緩存中多餘的包肯定到達的時間是要超過4s的,如果這個時候發送方還是沒有收到ACK那麼就會觸發超時重傳, TCP的擁塞控制就是為了處理包的丟失和超時重傳

一條TCP連接的開始,cwnd設置為一個報文段,一次只能發送一個,當收到這個確認的時候,cwnd +1,於是一次能夠發送2個,當這兩個的確認到來的時候,每個確認的cwnd + 1 ,兩個確認的cwnd就可以 +2,現在可以發送4個, 這是指數級別的增長,但是有一個值sshthresh為65535位元組,當超過這個值的時候不要增長得這么快了,可能快滿了,再慢下來

於是,每收到一個確認後,cwnd增長1/cwnd,一共發送8個的話,當8個確認到來的時候,每個確認增加1/8,八個確認一共cwnd + 1,於是一次能夠發送9個,變成了 線性增長 ,但是肯定有一天會滿,這個時候就會出現擁堵,就需要慢慢等待包的處理

擁塞的一種形式是丟包,需要超時重傳 ,這個時候

重新開始慢啟動,這樣的話,只要超時重傳就感覺會回到解放前

快速重傳 ,當接收端發現丟了一個中間包的時候,發送三次前一個包的ACK,於是發送端就會快速重傳,不必等待超時再重傳,TCP認為這種情況不嚴重,因為大部分沒丟,只丟了一小部分

正是這種知道該快還是慢的情況下,使得時延很重要的情況下,反而降低了速度,但是 擁塞控制還是存在問題

為了優化這兩個問題,有了TCP BBR擁塞演算法,它企圖找到一個平衡點,通過不斷的加快發送速度,將管道填滿,但是不會填滿中間設備的緩存,因為這樣時延會增加,這個平衡的時點可以很好的達到高帶寬和低時延的平衡

『貳』 計算機網路基礎:TCP、UDP協議的簡單介紹及區別

TCP(Transmission Control Protocol,傳輸控制協議),屬於TCP/IP協議模型中的 傳輸層 ,是 基於連接 的協議。
TCP協議通過序列化應答和必要時重發數據包,為應用程序提供了可靠的傳輸流和虛擬連接服務。

面向連接 指的是在發送數據之前,必須與對方建立可靠的連接,就像打電話一樣,你得先撥號,然後保證線路通暢,對方接聽了電話,這時才能互相通話。這個建立連接的過程被稱作「三次握手」。

妹子:在嗎?
(你沒有回應……)
GG,你將永遠失去她。

妹子:在嗎?
(一個小時過去了)
你:在
這時候妹子的問題已經解決了,而你卻激動地等待著她的回復。
(她什麼時候才能回我啊.jpg)
當然這不是我們想看到的結果

妹子:在嗎?(第一次握手)
你:在(第二次握手)
妹子:問你一個問題(第三次握手)
這時,她確定你在,所以會准備問問題,你也確定她在,所以激動緊張的等待沒有白費
接下來你們開始愉快地聊天(數據傳輸)

終止連接的過程稱之為「四次揮手」或者「四次分手」(感覺後者不太吉利,以下就用揮手)
繼續用剛才的微信發消息來舉例:

你:我講完了, 你懂了嗎?(第一次揮手)
妹子:懂了,我也問完了(第二次揮手)
妹子:謝謝謝,那我下了(第三次揮手)
你:好,我也下了(第四次揮手)

如果只有一、二、三次揮手的話,結果很容易自己想到。

建立連接的三次握手,和終止連接的四次揮手,都是為了保證雙方應答有效,避免讓某一方持續等待接受數據而造成的資源浪費。在例子中體現為,開始聊天時不會咕咕咕,結束時不會突然去世。

UDP(User Datagram Protocol,用戶數據報協議),屬於TCP/IP模型中的傳輸層,它是一種 無連接 的傳輸層協議,提供面向事務的 簡單不可靠 信息傳送服務。

註:傳輸可靠指的是,通過擁塞控制、流量控制、超時重發、丟棄重復數據等等可靠性檢測手段,保證數據無差錯、不丟失、不重復且按序到達。

『叄』 UDP和TCP有什麼區別

1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接

2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付

Tcp通過校驗和,重傳控制,序號標識,滑動窗口、確認應答實現可靠傳輸。如丟包時的重發控制,還可以對次序亂掉的分包進行順序控制。

3、UDP具有較好的實時性,工作效率比TCP高,適用於對高速傳輸和實時性有較高的通信或廣播通信。

4.每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信

5、TCP對系統資源要求較多,UDP對系統資源要求較少。

『肆』 計算機網路——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 的目的是為了使郵件的傳送成為可靠的。

『伍』 tcp和udp區別是什麼

如下:

TCP向上層提供面向連接的可靠服務 ,UDP向上層提供無連接不可靠服務。

TCP簡介:

傳輸控制協議(TCP,Transmission Control Protocol)是一種面向連接的、可靠的、基於位元組流的傳輸層通信協議,由IETF的RFC 793定義。

TCP旨在適應支持多網路應用的分層協議層次結構。 連接到不同但互連的計算機通信網路的主計算機中的成對進程之間依靠TCP提供可靠的通信服務。TCP假設它可以從較低級別的協議獲得簡單的,可能不可靠的數據報服務。 原則上,TCP應該能夠在從硬線連接到分組交換或電路交換網路的各種通信系統之上操作。

閱讀全文

與計算機網路實驗tcp和udp相關的資料

熱點內容
xp怎麼安裝回環型網路 瀏覽:592
什麼叫虛擬私密網路 瀏覽:345
網路敲詐勒索打哪個電話 瀏覽:374
歐美的手機網路 瀏覽:370
無網路如何安裝監控 瀏覽:451
什麼網路可以吸引人群 瀏覽:124
汽車手機互聯和4g網路 瀏覽:921
建成網路資源共享課程 瀏覽:510
信號滿格網路很差是為什麼 瀏覽:642
怎麼找出共享網路設備 瀏覽:191
鴻蒙系統升級後怎麼共享網路 瀏覽:175
數據交換屬於計算機網路主要功能 瀏覽:900
計算機網路發現的第三個階段 瀏覽:624
網路提現沒了怎麼辦 瀏覽:647
網路營銷筆記統計 瀏覽:770
網路安全讀研選擇地方推薦 瀏覽:425
官兵網路安全 瀏覽:572
電話和網路信號同時傳輸 瀏覽:923
網路安全尖兵部隊定位 瀏覽:119
管理無線網路空了 瀏覽:715

友情鏈接