計算機網路,傳輸層

2021-10-05 23:18:52 字數 2882 閱讀 2488

不僅是記錄我的半吊子基礎知識,也是一次再學習,不敢保證都對

前邊我們已經大概了解了網路層的知識,現在我們來了解傳輸層的知識。

我們知道tcp/ip體系的每一層有每一層的作用,那我們傳輸層是幹什麼的呢?學完網路層的時候我們就發現,實際上網路層ip協議已經實現了計算機與計算機之間的通訊,ip資料報的頭部明確標誌了源位址和目的位址,那為什麼還要傳輸層呢?

這時候就需要通過幾個例子來說明,比如我們訪問遠端mysql的時候,僅僅連線mysql就行了,伺服器上的其他服務跟我們沒有關係;又或者我們訪問**的時候,通過乙個**,訪問nginx或者tomcat,但是其他服務,就跟我們沒有關係了。

mysql是乙個程序;nginx是乙個程序;tomcat是乙個程序;你用的軟體與瀏覽器也是乙個程序。我們發現,事實上使用者能夠感受到的是兩個應用程序之間的通訊。而傳輸層的作用就是提供兩個應用程序之間的通訊

根據應用程式的不同需求,傳輸層有兩個不同的協議,即tcp協議udp協議

連線無連線:舉個常見的例子,我們要打**,肯定要先撥通號碼,對方接聽之後才能對話,撥通**的過程就是雙方在建立連線。那麼發簡訊就不一樣了,不用管他能不能收到,直接發就行。對方因為欠費啊,沒訊號啊等等原因沒收到就不管我們的事情了,我們想發就發。連線與無連線就好比是打**與發簡訊。

udp就是無連線協議,不管對方能不能收到,只負責傳送過去就行了。就這麼簡單,但是不可靠。

報文,資料鏈路層傳輸的資料叫做幀,網路層傳輸的資料叫做資料報,而傳輸層傳輸的資料叫做報文。

幀有頭部和尾部,ip資料報有ip首部,udp報文也有首部。ip資料報首部有源ip位址和目的ip位址,udp首部有源埠號和目的埠號

該協議就比udp複雜多了,它是面向連線的協議。就像打**一樣,有乙個撥通建立連線的過程,通話結束再結束通話的過程。它是可靠的傳輸協議,它的首部要複雜的多。

可靠傳輸,如何保證可靠傳輸呢?我們來模擬一下,現在有接收方a和傳送方b,b傳送乙個資料,a接收到了之後會給b傳送乙個確認訊息,b收到確認訊息之後才會繼續傳送資料,這個過程中,b等待a的確認訊息,a等待b的資料。但是如果b傳送資料之後,因為一些原因,a沒有收到資料,或者a傳送了確認但是b沒有收到確認,b不能一直等待下去,所以等待一段時間之後b就會重新傳送資料,這個過程叫做超時重傳。這樣就保證了資料的可靠傳輸。

但是乙個位元組乙個位元組的傳送資料效率太低,那我們一次就多發幾個位元組,比如這裡有十個位元組的資料,我們規定一次傳送五個位元組,這樣一次就把傳送過去,如果收到了確認資訊,表示五個位元組我都收到了,那就接著把後邊的五個也傳送過去。但是因為網路環境太複雜,中間出了差錯,我只收到了0,1,2的確認訊息怎麼辦呢?那就只能從3開始傳送,把這五個位元組傳送過去。這個過程叫做滑動視窗。有乙個問題,比如我只收到了1,3的確認訊息怎麼辦,0,2,4沒收到確認訊息,全部重傳就感覺效率低下,於是大佬們就發明了選擇重傳,就是哪個沒傳過去就重新傳哪個。

流量控制。接收方收到資料之後,會傳送乙個確認訊息,這個訊息裡其實也包含了下一次想讓傳送方給我傳送多少位元組的資料,通過這樣的方式接收方就可以控制傳送方傳送資料的大小,達+到流量控制的效果。

擁塞控制。道路會堵車,通道當然也會堵車,資料量太大,處理不過來就導致了擁塞,擁塞自然就觸發了超時重傳。那麼怎麼進行擁塞控制呢?就是控制資料的傳送量,比如第一次我傳送2個位元組,收到確認訊息,說明網路狀況良好,下一次我就傳送4個位元組,再下一次就傳送8個位元組,成指數遞增,當然它不可能無限的指數遞增,總有乙個閾值的。到了這個閾值的時候就不是指數遞增了,而是乙個乙個的遞增,每次傳送的資料量增加1,試探性的遞增。等發生了超時就立馬再從2個位元組開始指數遞增,重複上述步驟。指數遞增的過程叫做慢開始,達到閾值之後試探性遞增叫做擁塞避免

tcp建立連線的過程稱作三次握手。假設現在有傳送方a和接收方b,a先傳送乙個要建立連線的訊息給b,這是第一次握手,b收到訊息之後再給a傳送乙個確認訊息,這是第二次握手,a收到確認訊息之後就會再給b傳送乙個訊息表示我收到了你的確認訊息,這是第三次握手,這樣a和b就建立了連線。接下來就是互相傳遞資料了。

那麼為什麼要三次握手而不是兩次握手呢?書上說是為了防止已失效的連線突然又傳送到了b,因而產生錯誤。這是什麼意思呢,就是說a傳送乙個連線請求,由於這個請求在網路中迷路了,導致a覺得超時了需要重傳,b收到了重傳的請求之後跟a建立連線,這時候上乙個迷路的請求又突然找到路了發給了b,b就會跟a再次建立乙個連線,要知道建立一次連線是要耗費資源的。所以兩次握手容易造成建立多個連線導致資源的浪費甚至引發錯誤。

三次握手就能避免上述問題,迷路的連線請求突然給了b,b傳送乙個確認資訊給a,a就會發現這條資訊已經失效了,不理會它,那b收不到a的確認訊息就不會跟a再建立連線。

還有一種說法:第一次握手是a給b傳送訊息,b收到訊息之後就知道a傳送能力是正常的;二次握手a收到了b的確認資訊,a就知道b收到了訊息並且還給我傳送了確認表明b的接收能力和傳送能力是正常的。這時候a只證明了自己的傳送能力正常,b還不知道a的接收能力是不是正常,所以a需要再傳送乙個收到確認的訊息來證明自己的接收能力是正常的,這樣a、b雙方都證明了自己的接收能力與傳送能力是正常的,連線就能建立了。

這是關閉tcp連線的過程,a先給b傳送乙個關閉連線的請求,這是第一次揮手,b傳送乙個確認訊息,表示我收到了這個請求,這是第二次揮手,隨後b也傳送乙個關閉連線的請求,這是第三次揮手,a收到b關閉連線的請求之後就給b傳送乙個訊息表示你關閉吧,這是第四次揮手。b關閉連線,a等半天沒有響應就知道了b已經關閉了連線,於是就把自己的連線也關閉了。

計算機網路 傳輸層

為什麼要劃分傳輸層?既然網路層已經能把源主機上發出的資料傳送給目的主機,那麼為什麼還需要加上乙個傳輸層呢?這就需要我們理解主機使用者應用層通訊的主體,位於兩台網路主機中真正的資料通訊主體並不是這兩台主機,而是兩台主機中的各種網路應用程序.同一時間一台主機上可能有多個程序同時執行,這時候就需要為應用程...

計算機網路(傳輸層)

網路層提供了主機之間的邏輯通訊,運輸層為運輸在不同主機上的程序之間提供了邏輯通訊。運輸層協議是在端系統中而不是在路由器中實現的。運輸協議能夠提供的服務常常受制於底層網路層協議的服務模型。底層無法提供時延或頻寬保證,運輸層協議也無法提供。但是即使底層網路協議不可靠,運輸協議也可以提供可靠的資料傳輸服務...

計算機網路 傳輸層

運輸層最重要的兩種協議 tcp協議,udp協議 真正的通訊 兩個主機之間應用程序的通訊 運輸層的重要功能 1 復用 傳送方的不同應用程序使用同乙個運輸層協議傳輸資料 應用層 運輸層 2 分用 接收方的運輸層在剝去報文首部後把資料真正交付到目的應用程序 運輸層 應用層 網路層和運輸層的區別 網路層說明...