1. 程式人生 > >計算機網路知識回顧 ---運輸層

計算機網路知識回顧 ---運輸層

 記得自己在人生的低潮階段,高四補習的時候遇到的傳奇班主任小馬哥曾經說過:學不可以已。意思是,學習,不因該以任何時間,任何地點,任何境遇,任何理由而停滯。   因此,儘管這段時間心情很壓抑,還是希望能堅持學習。

    今天整理的是計算機網路物理層的知識,前面已經比較系統的回顧了一下物理層,資料鏈路層,網路層。  比起第一次學習來說,不敢說醍醐灌頂,但是至少收穫要比最開始學的時候好很多。

 運輸層的重要概念:

        運輸層為相互通訊的應用程序提供邏輯通訊。

        埠和套接字。

        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的亮點:  基於滑動視窗的流量控制;  基於鏈路狀態的擁塞控制;基於連線的運輸管理。