《網路是怎樣連線的》讀書筆記 2

2021-10-05 08:07:15 字數 1169 閱讀 7632

怎麼確定超時重發的時間?

首先傳送方傳送了乙個資料報,但遲遲收不到接收方的已收訊息(ack號),那麼就會判定這個包丟失了,那麼就需要重發這個包。這裡的「遲遲收不到」,即超時重發的判定時間是根據什麼設定的呢?不同於一般會將超時時間設為固定值,tcp協議是根據網路包的平均往返時間去調整ack號等待時間的。

資料報一發一響應的效率問題

**解決:**就是使用滑動視窗模式,在傳送乙個包後會繼續傳送一系列的包。

**問題:**雖然傳送的效率提高了,但帶來了新的問題,接收方受不住傳送方這麼短時間傳送這麼多包怎麼辦?

**解決:**接收方提前告知傳送方我這邊當前能接收的最大資料量(視窗大小),然後傳送方按這個大小來決定傳送的資料量。

**問題:**傳送方與接收方的這些控制資訊很雜很多,如果都是用單獨的包去傳送,也會造成資源的浪費。另一方面,這些控制資訊的更新並不是同步的,如確認接收的ack號和上面提到的最新視窗大小就是兩個不同的控制資訊,常常是ack號已經可以返回了,但視窗大小的更新資訊(應用程式還沒取走緩衝區資料)還沒有更新,所以直接放一起作為乙個包傳送不能解決問題,再者如果是一系列連續的ack號,其實返回中間的ack號與返回最後乙個ack號相比,也會造成一些資源浪費。

解決:接收方在返回ack號和視窗更新時,會等待一段時間,這段時間內的控制訊號資料合併,然後再返回給傳送發,這裡也是類似資料緩衝區的思維。

斷開連線

完成資料收發後,要開始斷開過程,一般由伺服器先開始,當然也可以客戶端開始。伺服器傳送控制位fin為1,告訴客戶端我這邊要斷開了,客戶端協議棧會返回ack號告知伺服器我知道了,然後通知應用程式連線關閉了,如果接收緩衝區還有資料會喊應用程式過來拿資料(read),然後執行客戶端的斷開連線操作(close),這時和上面一樣,也向伺服器傳送fin為1的訊號,伺服器收到後也返回乙個ack號。

刪除套接字

這裡的注意點是:為了防止套接字對應的埠刪除後被其他套接字(設為b)立刻占用,而之前連線的伺服器又想這個埠傳送了乙個斷開連線的訊號,造成b以為服務端要斷開連線,就造成了錯誤的處理。為了避免這些,所以套接字在連線關閉後不會立刻刪除,而是等待一段時間,這個時間一般是等待幾分鐘,防止服務端超時重發這個包。

讀書筆記 網路是怎樣連線的

一 電訊號傳輸tcp ip資料 三 接入網 1 adsl 不對稱數字使用者線,上行速率和下行速率不同 2 ftth 光纖到戶 3 pppoe 乙太網的點對點協議,將ppp訊息裝入乙太網包的方式進行傳輸的方式 4 bas 寬頻接入伺服器 5 網際網路接入路由器通過pppoe的發現機制查詢bas的mac...

《網路是如何連線的》讀書筆記

瀏覽器是集合了多種客戶端功能的乙個綜合性客戶端軟體,cgi是web伺服器程度呼叫其他程度的規則所做的定義 沒有檔名,伺服器是怎麼知道訪問哪個檔案的呢?預設檔案 我們會在server上設定好,檔名省略時預設返回的檔名。該名稱根據伺服器不同而不同,大多數是 index.html default.html...

《Mysql是怎樣執行的》讀書筆記三

將字元對映成二進位制的過程叫做編碼,將二進位制對映成字元的過程叫做解碼。我們看一下常用字符集的情況 ascii字符集 共收錄128個字元,包括空格 標點符號 數字 大小寫字母和一些不可見字元。iso 8859 1字符集 共收錄256個字元,它在ascii字符集的基礎上有擴充了128個西歐常用字元。g...