❶ 1結合計算機網路各層次的工作原理簡述一數據從計算機A傳到B的過程。2試比較擁塞和流量控制的區別和聯系
OSI模型的7個層次分別是物理層、數據鏈路層、網路層、傳輸層、會話層、表示層、應用層!為了和方便講解數據傳輸的過程,我就從最上層應用層開始(第一層是物理層,千萬別搞反了,這是初學者很容易犯的錯誤)。
應用層:為用戶訪問網路提供一個應用程序介面(API)。數據就是從這里開始產生的。
表示層:既規定數據的表示方式(如ASCII碼、JPEG編碼、一些加密演算法等)。當數據產生後,會從應用層傳給表示層,然後表示層規定數據的表示方式,在傳遞給下一層,也就是會話層。
會話層:他的主要作用就是建立、管理、區分會話!主要體現在區分會話,確保數據傳輸的方向,而不會讓原本發給B的數據,卻發到C那裡的情況。
傳輸層:他的作用就是規定傳輸的方式,如可靠的、面向連接的TCP。不可靠、無連接的UDP。數據到了這里開始會對數據進行封裝,在頭部加上該層協議的控制信息!這里我們通過具體分析TCP和UDP數據格式來說明。
TCP報文格式:首先是TCP報文格式:第一段包括源埠號和目的埠號。源埠號主要是用來說明數據是用哪個埠發送過來的,一般是隨機生成的1024以上的埠號!而目的埠主要是用來指明對方需要通過什麼協議來處理該數據(協議對應都有埠號,如FTP-21、Telnet-23、DNS-53等)。第二、三段是序列號和確認序列號,他們是一起起作用的!這里就涉及到了一個計算機之間建立連接時的「三次握手過程」。首先當計算機A要與計算機B通信時,首先會與對方建立一個會話。而建立會話的過程被稱為「三次握手」的過程。接下來詳細說明「三次握手」的過程。計算機A會發送一個請求建立會話的數據,數據格式為發送序號(隨機產生的,假如這里是序號=200),數據類型為SYN(即請求類型)。當計算機B收到這個數據後,他會讀取數據裡面的信息,來確認這是一個請求的數據。然後他會回復一個確認序列號為201的ACK(即確認類型),同時在這個數據里還會發送一個發送序號SYN=500(隨機產生的),數據類型為SYN(即請求類型)的數據,來請求與計算機建立連接!當計算機A收到計算機B回復過來的信息後,就會回復一個ACK=501的數據,然後雙方就建立起連接,開始互相通信!這就是一個完整的「三次握手」的過程。
傳輸層:之所以說TCP是面向連接的、可靠的協議,就是因為每次與對方通信之前都必須先建立起連接!
接下來分析第4段,該段包括頭部長度、保留位、代碼位、窗口位。頭部長度是指明該數據頭部的長度,這樣上層就可以根據這個判斷出有效的數據(即DATA)是從哪開始的。(數據總長度-頭部長度=DATA的起始位置)。而保留位、代碼位我們不需要了解,這里就跳過了!而窗口位是個重點!他的主要作用是進行提高數據傳輸效率,並且能夠控制數據流量。窗口位利用的技術是滑動窗口技術,計算機一次性發送多個數據(規定數量)。理想情況是當最後一個數據剛好發送完畢,就收到了對方的確認第一個數據的信息,這樣就會繼續發送數據,大大提高了效率。
網路層:主要功能就是邏輯定址(尋IP地址)和路由了!當傳輸層對數據進行封裝以後,傳給網路層,這時網路層也會做相同的事情,對數據進行封裝,只不過加入的控制信息不同罷了!
我們還是根據IP數據包格式來分析。如圖:可以看到數據第1段包含了版本、報頭長度、服務類型、總長度。這里的版本是指IP協議的版本,即IPv4和IPv6。IPv6由於互聯網的高速發展,IP地址已經出現緊缺,為了解決這個問題,開發出了IPv6協議,不過IPv6現在只是在一部分進行實驗和應用,要IPv6完全取代IPv4還是會有一段很長的時間的!報頭長度、總長度主要是用來確認數據的位置。服務類型欄位聲明了數據報被網路系統傳輸時可以被怎樣處理。
第二段包含標識、標記以及段偏移欄位。他們的主要作用是用來進行數據重組的。比如你在傳送一部幾百M的電影的時候,不可能是電影整個的一下全部傳過去,而是先將電影分成許多細小的數據段,並對數據段進行標記,然後在傳輸,當對方接受完這些數據段後,就需要通過這些數據標記來進行數據重組,組成原來的數據!就好象拼圖一樣。
數據鏈路層:他的作用主要是物理定址(即MAC地址)。當網路層對數據封裝完畢以後,傳給數據鏈路層。而數據鏈路層同樣會數據楨進行封裝!同樣我們也通過數據報文格式來分析。
這個報文格式比較清晰,我們可以清楚的看到包含目的MAC地址、源MAC地址、總長度、數據、FCS。目的MAC地址、源MAC地址明顯是指明數據楨的來源及目的,總長度是為了確認數據的位置,而FCS是散列值,也是用來保證數據的完整性。
物理層:是所有層次的最底層,也是第一層。他的主要功能就是透明的傳送比特流!當數據鏈路層封裝完畢後,傳給物理層,而物理層則將數據轉化為比特流傳輸(也就是01010111....00)。當比特流傳到對方的機器的物理層,對方的物理層將比特流接受下來,然後傳給上層(數據鏈路層),數據鏈路層將數據組合成楨,並對數據進行解封裝,然後繼續傳遞給上層,這是一個逆向的過程,直到傳到應用層,顯示出信息。
以上就是一個數據一個傳輸的完整過程!
❷ tcp報文和udp報文都是封裝在IP包中的么
是的,TCP和UDP是在第三層傳輸層。而IP在第二層網際層。數據從上層封裝到下層。所以TCP和UDP被封裝在IP包里。
相關介紹:
應用層向TCP層發送用於網間傳輸的、用8位位元組表示的數據流,然後TCP把數據流分區成適當長度的報文段(通常受該計算機連接的網路的數據鏈路層的最大傳輸單元(MTU)的限制)。之後TCP把結果包傳給IP層,由它來通過網路將包傳送給接收端實體的TCP層。
UDP它除了給應用程序發送數據包功能並允許它們在所需的層次上架構自己的協議之外,幾乎沒有做什麼特別的事情。面向連接的是TCP,該協議幾乎做了所有的事情。
(2)應用層數據流向哪裡擴展閱讀
UDP協議與TCP協議一樣用於處理數據包,在OSI模型中,兩者都位於傳輸層,處於IP協議的上一層。UDP有不提供數據包分組、組裝和不能對數據包進行排序的缺點,也就是說,當報文發送之後,是無法得知其是否安全完整到達的。
UDP用來支持那些需要在計算機之間傳輸數據的網路應用。包括網路視頻會議系統在內的眾多的客戶/伺服器模式的網路應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但即使在今天UDP仍然不失為一項非常實用和可行的網路傳輸層協議。