運輸層(Transport Layer)&&傳輸控制協議TCP

運輸層(Transport Layer)&&傳輸控制協議TCP緩存

 

TCP的字段名稱以及表示意義

源端口和目的端口字段——各佔 2 字節。端口是運輸層與應用層的服務接口。運輸層的複用和分用功能都要經過端口才能實現。  服務器

序號字段——佔 4 字節。TCP 鏈接中傳送的數據流中的每個字節都編上一個序號。‍序號字段的值則指的是本報文段所發送的數據的第一個字節的序號。網絡

確認號字段——佔 4 字節,是指望收到對方的下一個報文段的數據的第一個字節的序號。 socket

數據偏移(即首部長度)——佔 4 位,它指出 TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠。「數據偏移」的單位是 32 位字(以 4 字節爲計算單位)。  spa

保留字段——佔 6 位,保留爲從此使用,但目前應置爲 0。 操作系統

緊急 URG —— 當 URG = 1 時,代表緊急指針字段有效。它告訴系統此報文段中有緊急數據,應儘快傳送(至關於高優先級的數據)。 指針

確認 ACK —— 只有當 ACK = 1 時確認號字段纔有效。當 ACK = 0 時,確認號無效。 接口

推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的報文段,就儘快地交付接收應用進程,而再也不等到整個緩存都填滿了後再向上交付。  進程

復位 RST (ReSeT) —— 當 RST = 1 時,代表 TCP 鏈接中出現嚴重差錯(如因爲主機崩潰或其餘緣由),必須釋放鏈接,而後再從新創建運輸鏈接。 資源

同步 SYN —— 同步 SYN = 1 表示這是一個鏈接請求或鏈接接受報文。 

終止 FIN (FINis) —— 用來釋放一個鏈接。FIN = 1 代表此報文段的發送端的數據已發送完畢,並要求釋放運輸鏈接。 

窗口字段 —— 佔 2 字節,用來讓對方設置發送窗口的依據,單位爲字節。

檢驗和 —— 佔 2 字節。檢驗和字段檢驗的範圍包括首部和數據這兩部分。在計算檢驗和時,要在 TCP 報文段的前面加上 12 字節的僞首部。

緊急指針字段 —— 佔 16 位,指出在本報文段中緊急數據共有多少個字節(緊急數據放在本報文段數據的最前面)。  

選項字段 —— 長度可變。TCP 最初只規定了一種選項,即最大報文段長度 MSS。MSS 告訴對方 TCP:「個人緩存所能接收的報文段的數據字段的最大長度是 MSS 個字節。」 

填充字段 —— 這是爲了使整個首部長度是 4 字節的整數倍。 

 

進程之間的通訊

  • 兩個主機進行通訊實際上就是兩個主機中的應用進程互相通訊。 

  • 應用進程之間的通訊又稱爲端到端的通訊。 

  • 運輸層的一個很重要的功能就是複用和分用。應用層不一樣進程的報文經過不一樣的端口向下交到運輸層,再往下就共用網絡層提供的服務。

  • 「運輸層提供應用進程間的邏輯通訊」。「邏輯通訊」的意思是:運輸層之間的通訊好像是沿水平方向傳送數據。但事實上這兩個運輸層之間並無一條水平方向的物理鏈接。

 

運輸層協議和網絡層協議的主要區別

 

運輸層的主要功能

  • 運輸層爲應用進程之間提供端到端的邏輯通訊(但網絡層是爲主機之間提供邏輯通訊)。

  • 運輸層還要對收到的報文進行差錯檢測。

  • 運輸層須要有兩種不一樣的運輸協議,即面向鏈接的 TCP 和無鏈接的 UDP。

 

兩種不一樣的運輸協議

  • 運輸層向高層用戶屏蔽了下面網絡核心的細節(如網絡拓撲、所採用的路由選擇協議等),它使應用進程看見的就是好像在兩個運輸層實體之間有一條端到端的邏輯通訊信道。

  • 當運輸層採用面向鏈接的 TCP 協議時,儘管下面的網絡是不可靠的(只提供盡最大努力服務),但這種邏輯通訊信道就至關於一條全雙工的可靠信道

  • 當運輸層採用無鏈接的 UDP 協議時,這種邏輯通訊信道是一條不可靠信道。 

TCP&&UDP

  • 兩個對等運輸實體在通訊時傳送的數據單位叫做運輸協議數據單元 TPDU (Transport Protocol Data Unit)。

  • TCP 傳送的數據單位協議是 TCP 報文段(segment)

  • UDP 傳送的數據單位協議是 UDP 報文或用戶數據報。 

  • UDP 在傳送數據以前不須要先創建鏈接。對方的運輸層在收到 UDP 報文後,不須要給出任何確認。雖然 UDP 不提供可靠交付,但在某些狀況下 UDP 是一種最有效的工做方式。

  • TCP 則提供面向鏈接的服務。TCP 不提供廣播或多播服務。因爲 TCP 要提供可靠的、面向鏈接的運輸服務,所以不可避免地增長了許多的開銷。這不只使協議數據單元的首部增大不少,還要佔用許多的處理機資源。  

  • 運輸層的 UDP 用戶數據報與網際層的IP數據報有很大區別。IP 數據報要通過互連網中許多路由器的存儲轉發,但 UDP 用戶數據報是在運輸層的端到端抽象的邏輯信道中傳送的。

  • TCP 報文段是在運輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道殊不知道究竟通過了哪些路由器,而這些路由器也根本不知道上面的運輸層是否創建了 TCP 鏈接。 

 

運輸層的端口

  • 運行在計算機中的進程是用進程標識符來標誌的。

  • 運行在應用層的各類應用進程卻不該當讓計算機操做系統指派它的進程標識符。這是由於在因特網上使用的計算機的操做系統種類不少,而不一樣的操做系統又使用不一樣格式的進程標識符

  • 爲了使運行不一樣操做系統的計算機的應用進程可以互相通訊,就必須用統一的方法對 TCP/IP 體系的應用進程進行標誌。 

端口號(protocol port number)

  • 雖然通訊的終點是應用進程,‍‍但咱們能夠把端口想象是通訊的終點,由於咱們只要把要傳送的報文交到目的主機的某一個合適的目的端口,剩下的工做(即最後交付目的進程)就由 TCP 來完成。‍‍

三類端口

  • 熟知端口,數值通常爲 0~1023。

  • 登記端口號,數值爲1024~49151,爲沒有熟知端口號的應用程序使用的。使用這個範圍的端口號必須在 IANA 登記,以防止重複。

  • 客戶端口號或短暫端口號,數值爲49152~65535,留給客戶進程選擇暫時使用。當服務器進程收到客戶進程的報文時,就知道了客戶進程所使用的動態端口號。通訊結束後,這個端口號可供其餘客戶進程之後使用。 

 

TCP的主要特色:

  • 面向鏈接的

  • 提供可靠的數據傳輸服務

  • 提供流量控制。TCP可以控制進程發送數據的速率,保證另外一端不被大量的數據「淹沒」而出現溢出。

  • 提供擁塞控制。當網絡出現擁塞的時候,TCP可以減少向網絡注入數據的速率和數量,緩解擁塞。

  • 提供全雙工通訊。TCP提供雙向的數據傳輸服務。TCP容許通訊雙方的應用進程在任什麼時候候發送數據TCP鏈接的兩端都設有發送緩存和接收緩存,用來臨時存放雙向通訊的數據。

  • TCP是面向字節流的。TCP中的「流」是指流入到進程或從進程流出的字節序列。

 

TCP協議概述

  • TCP 鏈接是一條虛鏈接而不是一條真正的物理鏈接。

  • TCP 對應用進程一次把多長的報文發送到TCP 的緩存中是不關心的

  • TCP 根據對方給出的窗口值和當前網絡擁塞的程度來決定一個報文段應包含多少個字節(UDP 發送的報文長度是應用進程給出的)。

  • TCP可把太長的數據塊劃分短一些再傳送。TCP 也可等待積累有足夠多的字節後再構成報文段發送出去。 

 

TCP 的鏈接

  • TCP 把鏈接做爲最基本的抽象。

  • 每一條 TCP 鏈接有兩個端點。

  • TCP 鏈接的端點不是主機,不是主機的IP 地址,不是應用進程,也不是運輸層的協議端口。TCP 鏈接的端點叫作套接字(socket)或插口。

  • 端口號拼接到(contatenated with) IP 地址即構成了套接字。   

TCP鏈接的端點——套接字

套接字 socket = (IP地址: 端口號) 

TCP 鏈接 ::= {socket1, socket2}  = {(IP1: port1), (IP2: port2)} 

========================END========================

相關文章
相關標籤/搜索