1. 程式人生 > >對網路傳輸層的理解

對網路傳輸層的理解

從這篇部落格起來總結計算機網路中傳輸層的部分。

傳輸層服務和協議概述

傳輸層協議為執行在不同host上的程序也就是應用程序提供了一種邏輯通訊機制。什麼叫邏輯通訊機制呢?指的就是兩個程序之間彷彿是直接連線的,它不需要關心這期間有多遠的物理距離,經過了多少路由器,使用了哪些物理層等等。端系統執行傳輸層協議,其中傳送方將應用遞交的訊息分成一個或多個的報文段,並向下傳給網路層。接收方將接收到的報文段組裝成訊息並向上交給應用層。

傳輸層協議

可靠、按序的交付服務(TCP)

  • 擁塞控制
  • 流量控制
  • 連線建立

不可靠的交付服務(UDP)

基於“盡力而為”的網路層,沒有做擴充套件。

這裡寫圖片描述

複用和分用

複用:從多個報文段接收資料,為每塊資料封裝上頭部資訊,生成報文段,交給網路層。

分用:傳輸層依據頭部資訊將收到的報文段交給正確的socket,即不同的程序。如下圖所示:

這裡寫圖片描述

主機2上面執行著兩個程序,分別是P1和P2,主機1的P3程序會給主機2的P1程序發報文段,主機3的P4程序會給主機2的P2程序發報文段,那麼主機2的傳輸層作為接收端就要進行多路分用,就是要將報文段正確的交給對應的程序。主機收到報文段之後,傳輸層協議提取IP地址和埠號資訊,將報文段導向相應的socket。

UDP

User Datagram Protocol使用者資料報協議,基於IP協議,進行多路複用/分用和錯誤校驗的工作。UDP提供一種盡力而為的服務模型,這是因為IP就是一種盡力而為的機制,而UDP在IP的基礎上沒有附加太多的東西所以就造成了這種不可靠的特性。UDP傳送方和接收方之間不需要握手,每個UDP段的處理獨立於其他段。

UDP為什麼存在?

1.UDP無需建立連線,所以就會減少延遲的時間,這也就是為什麼DNS用的是UDP而不是TCP。

2.實現簡單,無需維護連線狀態。

3.頭部開銷少。

4.沒有擁塞控制,應用可以更好的控制傳送時間和速率。

UDP的用途

常用於流媒體應用,容忍流失,速率敏感。還用於DNS,SNMP協議等。

在UDP上實現可靠性傳輸?

  • 在應用層增加可靠性機制
  • 應用特定的錯誤恢復機制

TCP

Transmission Control Protocol傳輸控制協議,是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。有以下幾個特點:

  • 點對點
  • 可靠的,按序的位元組流
  • 採用流水線機制
  • 能夠對傳送方/接收方進行快取

通訊雙方在傳送資料之前必須建立連線,連線狀態只在連線的兩端中維護,在沿途節點中並不維護狀態。TCP連線包括:兩臺主機上的快取、連線狀態變數、socket等。

下圖是TCP的段結構

這裡寫圖片描述

其中介紹一下這幾個標誌位

  • ACK——確認連線
  • RST——復位
  • SYN——請求建立連線
  • FIN——終止連線

seq序列號——報文段中的一個位元組的編號

ack——希望接收到的下一個位元組的序列號

TCP三次握手

這裡寫圖片描述

如上圖所示簡述一下tcp三次握手的過程:客戶機發起建立連線的請求,傳送報文段SYN=1,seq為初始的序列號。伺服器端如果同意建立連線會返回一個報文段,SYN=1,ACK=1,選擇自己的初始序列號,ack=上一個報文段seq+1,表示上一段的訊息收到,下一次希望從這個位置開始接收資料。客戶端收到來自服務端的反饋時,ACK=1,seq=上一個報文段ack+1剛好就是客戶機所希望的,然後設定ack=上一個報文段seq+1。

為什麼要三次握手?

我所瞭解的原因有兩個。

第一,防止已經失效的連線請求突然傳送到了客戶端,也就是說當客戶端傳送連線請求後,伺服器一直沒有進行及時響應,後來突然進行這條請求的響應傳到了客戶端(我相信這時候客戶端是懵逼的),很顯然這時候這條響應已經失效了,但如果是兩次握手那麼這種情況就會造成一系列錯誤。

第二,假定客戶機給伺服器傳送連線請求,伺服器收到,傳送確認應答表示已經成功的建立連線並開始傳送資料。可是,客戶端在伺服器的應答在傳輸中丟失,客戶端不知道伺服器是否準備好,甚至懷疑是否收到連線請求。在這種情況下,客戶端認為伺服器連線未建立成功,將忽略服務端發來的資料,只能等待連結確認訊號,而服務端在發出超時後,重複傳送,形成死鎖。

TCP四次揮手

這裡寫圖片描述

客戶端向伺服器傳送FIN控制 報文段,表示我已經沒有資料向你傳送了,請求斷開。服務端收到FIN後,回覆ACK,表示我收到你的關閉請求,進入等待關閉狀態。當服務端也沒有資料向客戶端傳送時,向客戶端傳送FIN表示我也沒有資料向你傳送。客戶端收到FIN後,回覆ACK,表示我收到你的關閉請求,進入最終確認狀態。傳送到服務端後,連線關閉。

為什麼要四次揮手?

這是由於TCP的半關閉造成的,因為在客戶端給服務端傳送關閉請求服務端也給予迴應後,服務端給客戶端資料是流動的,也就是說服務端是可以向客戶端傳送資料的。所以,必須要再進行一次確認關閉,才能完全結束這個過程。

TCP流量控制

這裡寫圖片描述

接收方為TCP連線分配buffer,左邊是IP傳遞來的資料,右邊傳遞給上層的應用程序。上層應用可能處理buffer中的資料的速度較慢,但是傳輸的速度又比較快,可能會導致buffer溢位,所以就要利用流量控制來控制傳輸的速度和數量,避免buffer溢位淹沒接收方。

相關推薦

網路傳輸理解

從這篇部落格起來總結計算機網路中傳輸層的部分。 傳輸層服務和協議概述 傳輸層協議為執行在不同host上的程序也就是應用程序提供了一種邏輯通訊機制。什麼叫邏輯通訊機制呢?指的就是兩個程序之間彷彿是直接連線的,它不需要關心這期間有多遠的物理距離,經過了多少路由器

網路應用理解(三)

這篇部落格來進行應用層模組的最後一部分總結,內容是socket程式設計。 socket程式設計 socket程式設計,也叫做應用程式設計介面(API),先來簡單介紹一下什麼叫做應用程式設計介面(API)。下圖是兩主機之間的網路通訊,在功能上都可以看做有這麼五

計算機網路——傳輸

UDP(User Datagram Protocol): 基於Intenet IP協議(複用/分用、簡單的錯誤校驗) 儘可能的服務(可能丟失、亂序到達) 無連線(不需要握手、每個UDP段獨立於其他) 常用於流媒體應用(容忍丟失、速率敏感) UDP用於DNS、SNMP UDP上實現可靠資料傳輸:

網路基礎筆記_網路傳輸協議(TCP/UDP)知識點

  網路層負責把分組傳送到目的主機,但是真正通訊的並不是主機而是主機中的程序。傳輸層提供了程序間的邏輯通訊,傳輸層向高層使用者遮蔽了下面網路層的核心細節,使應用程式看起來像是在兩個傳輸層實體之間有一條端到端的邏輯通訊通道。 一.傳輸層中的兩種協議UDP / TCP 

計算機網路——傳輸(三)

TCP協議 傳送端應用程式通過套接字介面將資料傳向傳輸層之後,這些資料就歸傳輸層管了,這裡就是TCP協議。TCP協議會管理一個傳送快取,所有通過套接字介面的資料會被放到這個傳送快取中去,然後TCP每次從這個快取中拿出資料,將資料傳遞到網路層。其實這個過程就是多路複用。 我們可以這麼理

計算機網路——傳輸(二)

傳輸層位於端系統中,也就是位於‘網路邊緣’。傳輸層也有很多協議,但目前用的比較多的是UDP協議和TCP協議。 在認識UDP協議和TCP協議之前,先介紹兩個概念——多路複用與多路分解。 多路複用與多路分解 先對傳輸層有個基本瞭解,應用層通過套接字介面向傳輸層傳遞資料,傳輸層再通過網

計算機網路——傳輸(一)

可靠資料傳輸原理(reliable data transfer protocol, rdt) rdt 1.0 rdt1.0比較簡單,上層應用呼叫rdt_send(data)向傳送端傳入資料,傳送端呼叫packet = make_pkt(data)方法產生分組,然後再通過udt_send(

計算機網路傳輸-計網(3)

前言 接著複習計算機網路的有關知識,我的小白文章。 正文 運輸層處在網路層和應用層之間,提供程序之間的邏輯通訊。 運輸層中的協議有tcp,udp。 運輸層協議 網路定址 計算機中有四種地址: 域名地址 埠地址 IP地址

記錄下我加密傳輸理解

很多網站在傳輸過程中需要做到加密傳輸,為了防止資訊被洩露不能明文傳輸。有2種方式可以對傳輸資料進行加密:1、採用https方式傳輸,這樣就可以不用在程式碼裡面做資料的加解密處理了。但是有時候為了安全性更高還會再使用安全控制元件。2、對稱加密+非對稱加密:(1)首先採用非對稱加

網路傳輸過濾(TDI,傳輸介面過濾)

TDI(傳輸層介面),至少是支援windows7之前的系統,自vista之後,微軟使用了新技術來取代TDI,被稱為WFP(Windows Filtering Platform)。但是在天朝winXp的使用率不必多說,所以,直接搞起TDI這種復古傳輸層的介面! 從大的方面來

計算機網路-傳輸詳解

一、傳輸層的服務基本原理 1.多路複用和解複用(分路)技術 複用是指:傳送方的不同的應用程序都可以使用同一個傳輸層協議傳送資料; 分路技術是指:接收方的傳輸層剝去報文首部之後能把這些資料正確的傳輸到正確的應用程序上。 2.可靠資料傳輸 3.流量控制和擁塞控制 二、傳輸層提

淺談"網路傳輸"

應用層 一個應用層協議都是為了解決某一類應用問題,而問題的解決又必須通過位於不同主機中的多個應用程序之間的通訊和協同工作來完成的。 應用層負責的內容: (1)應用程序交換的報文型別,如請求報文和相應報文 (2)各種報文型別的語法,如報文中的各個欄位以及詳

網路傳輸網路中的地位

Internet 是基於TCP/IP網路協議棧實現的。 在應用層,有眾多的應用程序,分別使用不同的應用層協議;在網路介面層,有多種資料鏈路層協議,可以和眾多的物理網連線;在網路層,只有一個IP實體。 在傳送端所有的應用程序的資訊都要匯聚到ip層,;在接收端,

java面試-計算機網路傳輸知識點全覆蓋

傳輸層概述作用:傳輸層為它上面的應用層提供通訊服務。在OSI七層參考模型中,傳輸層是面向通訊的最高層,也是使用者功能的最底層。傳輸層兩大重要的功能:複用 和 分用。 複用:在傳送端,多個應用程序公用一個傳輸層;分用:在接收端,傳輸層會根據埠號將資料分派給不同的應用程序。和網路

計算機網路傳輸的功能

1).傳輸層提供程序之間的邏輯通訊(即端到端的通訊)。 2).複用和分用。複用是指傳送方不同的應用程序都可以使用同一個傳輸層協議傳輸資料; 分用是指接收方的傳輸層在接收到報文將其報頭剝去之後能將資料正

傳輸_計算機網路原理第三章_自考本科段

概要:計算機網路原理第三章傳輸層知識點小結 1、傳輸層基本服務     識記:傳輸層基本服務     (1)傳輸層基本服務:為網路應用程序提供端到端的邏輯通訊服務;提供的服務可分為無連結服務和麵向連線服務。

計算機網路3——傳輸(下)

目錄 六、面向連線傳輸協議TCP         1、TCP可靠資料傳輸        2、TCP流量控制        3、TCP連線管

HIT 計算機網路 自頂向下 複習提要 傳輸

傳輸層 為不同host上的不同程序提供 邏輯通訊 機制 多路複用&多路分解 UDP 可靠資料傳輸協議 GBN SR TCP 流量管理 擁塞控制        

6.CCNA第六天-理解傳輸TCP/IP

網際網路層(網路層) 邏輯地址 私有地址 A類 10.0.0.0 到10.225.255.255 B類 172.16.0.0到172.31.255.255 C類 192.168.0.0到192.168.255.255 私有地址是不

網路程式設計--基礎---網路協議的通俗理解

轉自:https://www.cnblogs.com/carlos-mm/p/6297197.html OSI七層模式簡單通俗理解   這個模型學了好多次,總是記不住。今天又看了一遍,發現用歷史推演的角度去看問題會更有邏輯,更好記。本文不一定嚴謹,可能有錯漏,主要是拋磚引玉