計算機網路知識回顧 ---運輸層
記得自己在人生的低潮階段,高四補習的時候遇到的傳奇班主任小馬哥曾經說過:學不可以已。意思是,學習,不因該以任何時間,任何地點,任何境遇,任何理由而停滯。 因此,儘管這段時間心情很壓抑,還是希望能堅持學習。
今天整理的是計算機網路物理層的知識,前面已經比較系統的回顧了一下物理層,資料鏈路層,網路層。 比起第一次學習來說,不敢說醍醐灌頂,但是至少收穫要比最開始學的時候好很多。
運輸層的重要概念:
運輸層為相互通訊的應用程序提供邏輯通訊。
埠和套接字。
UDP與TCP。
在不可靠的網路上實現可靠傳輸的工作原理,停止等待協議和ARQ協議。
TCP的滑動視窗,流量控制,擁塞控制,連線管理。
運輸層協議概述:
對於運輸層來說,端對端的通訊並不是主機,而是主機中的程序。 網路層為資訊的互動提供了邏輯通訊,而運輸層為應用程序之間提供端到端(程序到程序) 的邏輯通訊。 是屬於通訊部分的最高層,同時也是使用者功能的最底層。
運輸層協議主要包括面向連線的TCP以及無連線的UDP。 我們知道網路世界也是基於客觀物質而存在的,所以它是一個有機整體。 它的發展經歷了確確實實的一個時代進行完善。 現如今普遍(所謂普遍,是針對普通人的全部)使用的是TCP/IP協議。 也就是說,在進行通訊時,我們對使用運輸層的協議(TCP,和UDP)不應當產生任何疑問。 換言之,所有的基於網際網路的通訊都是要使用TCP或UDP協議的。
看一看長用的各種應用和應用層協議使用的運輸層協議吧:
運輸層的通訊概要:
運輸層具有複用和分用的功能。 應用層多有的應用程式都可以通過運輸層傳送到IP層,便是複用。 運輸層從IP 層收到資料後必須互動給指定的應用程序,這就是分用。 我們知道運輸層解決的是端到端的通訊,也就是程序間通訊。 但是我們要明白不同的作業系統使用不同格式的程序識別符號,因此,要在因特網的主機間進行程序間通訊,必須採用統一的方法(這種方法必須是與特定的作業系統無關)對TCP/IP體系的應用程序進行標誌。。 然而,這個思路任然行不通。 因為程序的建立和撤銷都是動態的,通訊的一方無法識別對方機器上的程序。 因此,一個抽象的協議埠號就產生了。
常見的埠號有:
應用程式 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(trap) |
埠號 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 |
UDP:
在IP資料報的基礎上增加了複用分用,以及差錯檢測的功能。
UDP組成舉例:
TCP:
每一條TCP連線只能有兩個端點,每一條TCP連線必須是點對點的。 它把連線作為最基本的抽象。TCP連線的端點叫套接字或插口。
同一個IP地址可以有多個不同的TCP連線,同一個埠也可以出現在多個不同的TCP連線中。
TCP傳送的報文段是交給IP層傳送的,但是IP層只能提供盡最大努力的服務,也就是說,TCP下面的網路所提供的是不可靠的傳輸。
TCP使用停止等待協議。 在傳送完一個分組後,必須暫時儲存已經發送的分組的副本,當收到確認後才清除。 所有的分組和確認分組都採用編號進行互動。 通過確認和重傳機制,TCP可以實現在不可靠的傳輸網路上可靠通訊。
停止等待協議很簡單,但是效率太低! ARQ:automatic repeat request,自動重傳請求。
我的理解: 為何會存在效率問題一說??? 我認為產生這個原因有兩個前提,第一通訊是全雙工通訊,它在物理層的表現是,具有兩條物理線路,一條線路只用於傳送或者只用於接收。 第二,基於電子的資訊通訊足夠快,快到哪怕眨眼一瞬對它來說也是天文數字的地步!!
針對效率問題解決的思路是採用流水線傳輸,具體的實現包括了 連續ARQ協議 和滑動視窗協議。
TCP可靠傳輸的實現:
一,以位元組為單位的滑動視窗傳輸;
二,選擇確認SACK,使得TCP可以能夠設法只傳送缺少的資料,而不是重傳已經正確到達接收方的資料。
TCP的亮點: 基於滑動視窗的流量控制; 基於鏈路狀態的擁塞控制;基於連線的運輸管理。