第十三章 運輸層簡介

2021-05-28 07:52:27 字數 3235 閱讀 3197

1:運輸層提供程序到程序的通訊,程序通過ip+埠號標識自己,埠號16位,取值0~65535之間

2:0~1023為熟知埠號,1024~49151為註冊埠號,49152~65535為動態埠號

3:源點運輸層執行復用,將不同程序資料放入運輸層,終點運輸層執行分用,將運輸層資料交付到不同程序

4:資料的推送和拉取:

(1):推送是生產者資料一生產就傳送出去,不需要消費者請求,推送需要反向流量控制,讓消費者告訴生產者放慢傳送速度

(2):拉取是消費者主動請求生產者傳送資料,拉取不需要流量控制

1:傳送方應用層產生資料,報文被推送至運輸層,這裡需要運輸層進行反向流量控制,傳送方運輸層分組被推送到接收方運輸層,這裡接收方運輸層同樣要進行流量控制,最後,接收方應用層從接收方運輸層拉取資料

2:在傳送方運輸層和接收方運輸層都設定乙個快取,當傳送方快取滿時,通知應用層停止傳送資料,當接收方運輸層快取滿時,通知傳送方運輸層停止傳送資料

1:同流量控制一樣,接收方反向進行差錯控制

2:採用給分組加序號方式實現差錯控制,接收方通過確認號(ack)通知傳送方正確收到了乙個分組,傳送方通過使用計時器設定傳送分組後的倒計時,如果超時還沒有收到ack則重發分組

流量控制需要設定快取,差錯控制需要設定序號和確認號,一種巧妙的實現方法是將快取分成小格仔並編號,編號便成為序號和確認號的基礎,滑動視窗便由此實現,書上的圖很詳細

1:擁塞的原因是路由器和交換機上的佇列溢位

2:擁塞控制分為擁塞發生之前的預防措施:開環擁塞控制,擁塞發生後的消除措施:閉環擁塞控制

3:開環擁塞控制:可由源點也可有終點來處理

(1):重傳策略:重傳是不可避免的,一般來講重傳會加重擁塞,但好的重傳策略能夠預防擁塞

(2):視窗策略:

(3):確認策略:

4:閉環擁塞控制:運輸層傳送視窗會在產生擁塞時減小,在擁塞消除時變大,這種動態調節有利於消除擁塞

1:網路層的無連線和面向連線

網路層的無連線是指多個資料報經過不同的路由到達目的主機,面向連線指先建立一條確定的鏈路,然後傳輸資料

2:傳輸層的無連線和面向連線

1:傳輸層是端到端,它不關心網路層是無連線還是面向連線

2:傳輸層無連線時沒有流量控制,差錯控制,擁塞控制,有連線時有這些控制

3:傳輸層無連線資料可能會失序,錯誤,丟失

1:頻寬

1: 頻寬是資料率不規範的叫法

2:頻寬的單位是b/s,kb/s,mb/s,gb/s,tb/s;相同的寫法是bps,mps;b是二進位制的意思,計算機資料的b是8個二進位制位,和這裡不同,並且進製是1000而不是1024

3:頻寬表示每秒傳送多少個二進位制位,如果只傳送乙個二進位制位,1b/s和1m/s頻寬此位會同時到達目的主機,頻寬是表示數碼訊號在時間軸上的寬度,頻寬越大,寬度越窄,能容納的資料也就越多

4;頻寬也就是吞吐量

2:時延

1:時延包括傳送時延,傳播時延,處理時延,其中傳播時延基本相同

2:傳送時延=資料塊長度(二進位制位)/頻寬

3:提高頻寬只是提高了傳送時延,很難提高傳播時延(也就是光速)

3:時延頻寬積

1:時延頻寬積=傳播時延*頻寬

2:時延頻寬積表示整條管道能容納多少資料,可用於計算管道利用率

1:此協議面向連線,能提供流量控制和差錯控制,差錯控制要求傳送方在沒有收到ack時應該儲存傳送出去的副本

2:此協議使用大小為1的滑動視窗

3:傳送方使用序號表示當前傳送出去的分組,接收方用確認號表示想要收到的下乙個分組,對於停止等待協議,由於滑動視窗大小為1,則序號和確認號為1,0,1,0,1,0...

4:對於傳送方:傳送方傳送乙個分組,加上檢驗和和序號a,並啟動乙個計時器:

(1):收到確認ack,檢驗和錯誤,丟棄

(2):收到ack,確認號!=a+1,丟棄

(3):收到ack,確認號==a+1,傳送序號為a+1的分組

(4);超時,重發序號a的分組

5:對於接收方:

(1):收到分組校驗和錯誤,丟棄

(2):序號不是自己想要的分組,分組丟棄,傳送ack=a

(2):收到a,傳送確認號為a+1的ack

6:停止等待協議管道利用率很低

7:以下兩種採用流水線方式進行傳輸,效率更高,流水線方式就是前乙個任務還沒完成就開始下乙個任務

1:該協議序號必須是2的m次方,傳送視窗大小2的m次方-1,接收視窗1

2:傳送方傳送視窗大小個分組並等待確認,並設定乙個計時器,也就是第乙個傳送出去的分組的計時,因為它會最先超時,如果超時,傳送方重發所有未被確認的分組,每收到乙個確認,滑動視窗會滑動到確認處

3:此協議ack的確認號是累計的,表示確認號之前的分組已經完全收到

5:此協議的特點是如果超時,傳送方之前傳送的所有分組都會重傳,這也是"返回n"的由來

6:此協議詳情參見書上,對於傳送視窗的大小設定有詳細的解釋

1:傳送視窗和接受視窗一樣大,最大2的(m-1)次方

2:確認號a只表示接收方正確收到序號為a的分組

3:傳送方只使用乙個計時器,當計時器超時,重傳所有未收到確認號的分組

4:具體流程圖參見書上,由於此協議是實際tcp實現,下面簡單介紹下,一些我已經知道的就不說明了

5:傳送方:

(1):應用層給運輸層傳遞來的資料,如果滑動視窗還有空位,則放到滑動視窗中,傳送此資料,如果計時器沒計時,則啟動計時器

(2):收到正確的ack,則標記,並檢查視窗是否能向前滑動,如果還有等待ack的分組,則重置計時器,沒有則關閉計時器

(3):計時器超時,重發所有等待ack的分組,重置計時器

6:接收方:

(1):收到乙個在滑動視窗的分組,傳送ack,並檢查視窗能否滑動,如果能滑動則提交資料給應用層(這裡我的理解和書上有點出入,我認為應該是應用層主動拉取資料,導致滑動視窗滑動),

(2):收到乙個在滑動視窗之前的分組,傳送此分組的ack,這種特殊做法的目的是幫助傳送方滑動它的視窗

前面討論的情況都是單向的,但實際情況是雙向通訊,這就能夠使用捎帶,a向b傳送資料的同時捎帶a想傳送給b的確認號

第十三章 併發

13.1 動機 13.2 基本執行緒 如果必須要控制現成的執行順序,最好是根本不用執行緒,而是自己編寫特定順序彼此控制的協作子程式。繼承thread類或者實現runnable介面。內部類實現。13.3 共享受限資源 1 如果要對類中的某個方法進行同步控制,最好同步所有方法。如果忽略了其中乙個,通常很...

第十三章 類

1.類簡單地說是乙個性的資料型別。類當中有資料成員,和成員函式。類的基本思想就是體現出資料的抽象和封裝。2.這裡只需要說明乙個問題即可 就是類成員函式的const型別 class screen public const int get const int i const int j const 這裡...

第十三章 事件

1 事件的作用 事件是對委託的封裝,如同屬性對字段的封裝。封裝後可以在委託上實現更複雜的邏輯。1.1 封裝訂閱 委託允許使用 對其進行賦值,但向乙個委託例項賦值多個委託時,使用 會造成覆蓋之前的委託。事件只支援 或 對事件進行賦值 1.2 封裝發布 委託可以在其他類進行訪問,而事件可以確保只有包容類...