伺服器中傳輸的數據包如何表示
⑴ 關於網路傳輸過程的數據封裝
數據封裝(Data Encapsulation)是指將協議數據單元(PDU)封裝在一組協議頭和尾中的過程。在OSI七層參考模型中,每層主要負責與其它機器上的對等層進行通信。該過程是在協議數據單元(PDU)中實現的,其中每層的PDU一般由本層的協議頭、協議尾和數據封裝構成本文選自WireShark數據包分析實戰詳解清華大學出版社。
為了幫助用戶更清楚的理解數據封裝過程,下面通過一個實例來說明這個過程。假設某個公司區域網使用乙太網,當員工從區域網的FTP伺服器下載一個文件時,該文件從FTP伺服器到員工主機的傳輸過程如圖1.17所示本文選自WireShark數據包分析實戰詳解清華大學出版社。
在圖1.17中,FTP伺服器作為數據的發送端,員工主機作為數據的接收端。下面分別介紹數據發送和接收處理過程。
1.數據發送處理過程數據封裝協議數據單元封裝WireShark數據包分析
(1)應用層將數據交給傳輸層,傳輸層添加上TCP的控制信息(稱為TCP頭部),這個數據單元稱為段(Segment),加入控制信息的過程稱為封裝。然後,將段交給網路層。
(2)網路層接收到段,再添加上IP頭部,這個數據單元稱為包(Packet)。然後,將包交給數據鏈路層。
(3)數據鏈路層接收到包,再添加上MAC頭部和尾部,這個數據單元稱為幀(Frame)。然後,將幀交給物理層。
(4)物理層將接收到的數據轉化為比特流,然後在網線中傳送。
2.數據接收處理過程數據封裝協議數據單元封裝WireShark數據包分析
(1)物理層接收到比特流,經過處理後將數據交給數據鏈路層。
(2)數據鏈路層將接收到的數據轉化為數據幀,再除去MAC頭部和尾部,這個除去控制信息的過程稱為解封裝,然後將包交給網路層。
(3)網路層接收到包,再除去IP頭部,然後將段交給傳輸層。
(4)傳輸層接收到段,再除去TCP頭部,然後將數據交給應用層。
從以上傳輸過程中,可以總結出以下幾點。如下所示:
(1)發送方數據處理的方式是從高層到底層,逐層進行數據封裝。
(2)接收方數據處理的方式是從底層到高層,逐層進行數據解封裝。
(3)接收方的每一層只把對該層有意義的數據拿走,或者說每一層只能處理發送方同等層的數據,然後把其餘的部分傳遞給上一層,這就是對等層通信的概念本文選自WireShark數據包分析實戰詳解清華大學出版社數據封裝協議數據單元封裝WireShark數據包分析。
⑵ 電腦寬頻里的數據包中已發送和已接受底下的數字是什麼意思,以什麼為單位
以位元組為單位.
已發送:從您的電腦發送至遠程伺服器的數據量.
已接受:從遠程伺服器至您的電腦的傳輸量.
單位:
1024位元組=1B
1024B=1KB
1024KB=1M
1024M=1G
⑶ 數據包在傳輸過程中是什麼形式
「包」(Packet)是TCP/IP協議通信傳輸中的數據單位,一般也稱「數據包」。有人說,區域網中傳輸的不是「幀」(Frame)嗎?沒錯,但是TCP/IP協議是工作在OSI模型第三層(網路層)、第四層(傳輸層)上的,而幀是工作在第二層(數據鏈路層)。上一層的內容由下一層的內容來傳輸,所以在區域網中,「包」是包含在「幀」里的。 名詞解釋:OSI(Open System Interconnection,開放系統互聯)模型是由國際標准化組織(ISO)定義的標准,它定義了一種分層體系結構,在其中的每一層定義了針對不同通信級別的協議。OSI模型有7層,1 7層分別是:物理層、數據鏈路層、網路層、傳輸層、會話層、表示層、應用層。OSI模型在邏輯上可分為兩個部分:低層的1 4層關注的是原始數據的傳輸;高層的5 7層關注的是網路下的應用程序。 我們可以用一個形象一些的例子對數據包的概念加以說明:我們在郵局郵寄產品時,雖然產品本身帶有自己的包裝盒,但是在郵寄的時候只用產品原包裝盒來包裝顯然是不行的。必須把內裝產品的包裝盒放到一個郵局指定的專用紙箱里,這樣才能夠郵寄。這里,產品包裝盒相當於數據包,裡面放著的產品相當於可用的數據,而專用紙箱就相當於幀,且一個幀中只有一個數據包。 「包」聽起來非常抽象,那麼是不是不可見的呢?通過一定技術手段,是可以感知到數據包的存在的。比如在Windows 2000 Server中,把滑鼠移動到任務欄右下角的網卡圖標上(網卡需要接好雙絞線、連入網路),就可以看到「發送:××包,收到:××包」的提示。通過數據包捕獲軟體,也可以將數據包捕獲並加以分析。 就是用數據包捕獲軟體Iris捕獲到的數據包的界面圖,在此,大家可以很清楚地看到捕獲到的數據包的MAC地址、IP地址、協議類型埠號等細節。通過分析這些數據,網管員就可以知道網路中到底有什麼樣的數據包在活動了。 附: 數據包的結構 數據包的結構非常復雜,不是三言兩語能夠說清的,在這里主要了解一下它的關鍵構成就可以了,這對於理解TCP/IP協議的通信原理是非常重要的。數據包主要由「目的IP地址」、「源IP地址」、「凈載數據」等部分構成。 數據包的結構與我們平常寫信非常類似,目的IP地址是說明這個數據包是要發給誰的,相當於收信人地址;源IP地址是說明這個數據包是發自哪裡的,相當於發信人地址;而凈載數據相當於信件的內容。 正是因為數據包具有這樣的結構,安裝了TCP/IP協議的計算機之間才能相互通信。我們在使用基於TCP/IP協議的網路時,網路中其實傳遞的就是數據包。理解數據包,對於網路管理的網路安全具有至關重要的意義 這部分簡要介紹一下TCP/IP的內部結構,為討論與互聯網有關的安全問題打下基礎。TCP/IP協議組之所以流行,部分原因是因為它可以用在各種各樣的信道和底層協議(例如T1和X.25、乙太網以及RS-232串列介面)之上。確切地說,TCP/IP協議是一組包括TCP協議和IP協議,UDP(User Datagram Protocol)協議、ICMP(Internet Control Message Protocol)協議和其他一些協議的協議組。 TCP/IP整體構架概述 TCP/IP協議並不完全符合OSI的七層參考模型。傳統的開放式系統互連參考模型,是一種通信協議的7層抽象的參考模型,其中每一層執行某一特定任務。該模型的目的是使各種硬體在相同的層次上相互通信。這7層是:物理層、數據鏈路層、網路層、傳輸層、話路層、表示層和應用層。而TCP/IP通訊協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的網路來完成自己的需求。這4層分別為: 應用層:應用程序間溝通的層,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網路遠程訪問協議(Telnet)等。 傳輸層:在此層中,它提供了節點間的數據傳送服務,如傳輸控制協議(TCP)、用戶數據報協議(UDP)等,TCP和UDP給數據包加入傳輸數據並把它傳輸到下一層中,這一層負責傳送數據,並且確定數據已被送達並接收。 互連網路層:負責提供基本的數據封包傳送功能,讓每一塊數據包都能夠到達目的主機(但不檢查是否被正確接收),如網際協議(IP)。 網路介面層:對實際的網路媒體的管理,定義如何使用實際網路(如Ethernet、Serial Line等)來傳送數據。 TCP/IP中的協議 以下簡單介紹TCP/IP中的協議都具備什麼樣的功能,都是如何工作的: 1. IP 網際協議IP是TCP/IP的心臟,也是網路層中最重要的協議。 IP層接收由更低層(網路介面層例如乙太網設備驅動程序)發來的數據包,並把該數據包發送到更高層---TCP或UDP層;相反,IP層也把從TCP或UDP層接收來的數據包傳送到更低層。IP數據包是不可靠的,因為IP並沒有做任何事情來確認數據包是按順序發送的或者沒有被破壞。IP數據包中含有發送它的主機的地址(源地址)和接收它的主機的地址(目的地址)。 高層的TCP和UDP服務在接收數據包時,通常假設包中的源地址是有效的。也可以這樣說,IP地址形成了許多服務的認證基礎,這些服務相信數據包是從一個有效的主機發送來的。IP確認包含一個選項,叫作IP source routing,可以用來指定一條源地址和目的地址之間的直接路徑。對於一些TCP和UDP的服務來說,使用了該選項的IP包好象是從路徑上的最後一個系統傳遞過來的,而不是來自於它的真實地點。這個選項是為了測試而存在的,說明了它可以被用來欺騙系統來進行平常是被禁止的連接。那麼,許多依靠IP源地址做確認的服務將產生問題並且會被非法入侵。 2. TCP 如果IP數據包中有已經封好的TCP數據包,那麼IP將把它們向『上』傳送到TCP層。TCP將包排序並進行錯誤檢查,同時實現虛電路間的連接。TCP數據包中包括序號和確認,所以未按照順序收到的包可以被排序,而損壞的包可以被重傳。 TCP將它的信息送到更高層的應用程序,例如Telnet的服務程序和客戶程序。應用程序輪流將信息送回TCP層,TCP層便將它們向下傳送到IP層,設備驅動程序和物理介質,最後到接收方。 面向連接的服務(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它們使用了TCP。DNS在某些情況下使用TCP(發送和接收域名資料庫),但使用UDP傳送有關單個主機的信息。 3.UDP UDP與TCP位於同一層,但對於數據包的順序錯誤或重發。因此,UDP不被應用於那些使用虛電路的面向連接的服務,UDP主要用於那些面向查詢---應答的服務,例如NFS。相對於FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網落時間協議)和DNS(DNS也使用TCP)。 欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化連接(也可以稱為握手)(因為在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨著更大的危險。 4.ICMP ICMP與IP位於同一層,它被用來傳送IP的的控制信息。它主要是用來提供有關通向目的地址的路徑信息。ICMP的『Redirect』信息通知主機通向其他系統的更准確的路徑,而『Unreachable』信息則指出路徑有問題。另外,如果路徑不可用了,ICMP可以使TCP連接『體面地』終止。PING是最常用的基於ICMP的服務。 5. TCP和UDP的埠結構 TCP和UDP服務通常有一個客戶/伺服器的關系,例如,一個Telnet服務進程開始在系統上處於空閑狀態,等待著連接。用戶使用Telnet客戶程序與服務進程建立一個連接。客戶程序向服務進程寫入信息,服務進程讀出信息並發出響應,客戶程序讀出響應並向用戶報告。因而,這個連接是雙工的,可以用來進行讀寫。 兩個系統間的多重Telnet連接是如何相互確認並協調一致呢?TCP或UDP連接唯一地使用每個信息中的如下四項進行確認: 源IP地址 發送包的IP地址。 目的IP地址 接收包的IP地址。 源埠 源系統上的連接的埠。 目的埠 目的系統上的連接的埠。 埠是一個軟體結構,被客戶程序或服務進程用來發送和接收信息。一個埠對應一個16比特的數。服務進程通常使用一個固定的埠,例如,SMTP使用25、Xwindows使用6000。這些埠號是『廣為人知』的,因為在建立與特定的主機或服務的連接時,需要這些地址和目的地址進行通訊
⑷ 三.傳輸層
傳輸層的 核心任務 : 應用進程 之間提供 端到端 的 邏輯通信 服務
回顧:只有 主機 才有傳輸層,網路核心中的路由器、交換機、集線器等只用到 下三層 的功能
記:分復流擁尋差錯-可靠
一台計算機中,不同應用進程用 進程標識符(進程ID) 來區分
網路環境下:
TCP/IP 體系結構網路的解決方法:
在傳輸層使用協議埠號,通常簡稱為埠(port), 在全網范圍內利用 IP地址+埠號 唯一標識一個通信端點
傳輸層埠號為16位整數,可以編號65536個(2的16次方)
常用埠: 埠號小於256的埠
傳輸層埠號:
1、伺服器端使用的埠號:熟知埠號和登記埠號
2、客戶端使用的埠號臨時性,在客戶進程運行時由操作系統隨機選取唯一的未被使用的埠號:
多路復用 :在源主機,傳輸層協議從不同的套接字收集應用進程發送的數據塊,並為每個數據塊封裝上首部信息(包括用於分解的信息)構成報文段,然後將報文段傳遞給網路層
多路分解 : 在目的主機,傳輸層協議讀取報文段中的欄位,標識出接收套接字,進而通過該套接字,將傳輸層報文段中的數據交付給正確的套接字
多路復用與多路分解(復用與分解/復用與分用): 支持眾多 應用進程共用 同一個傳輸層協議,並能夠將接收到的數據准確交付給 不同的應用進程
用戶數據報協議(User Datagram Protocol, UDP):Internet提供無連接服務的傳輸層協議
UDP套接字二元組:<目的IP地址,目的埠號>
傳輸控制協議(Transmission Control Protocol, TCP): Internet提供面向連接服務的傳輸層協議
TCP套接字四元組: <源IP地址,源埠號,目的IP地址,目的埠號>
基於不可靠信道實現可靠數據傳輸採取的措施
差錯檢測:利用編碼實現數據報傳輸過程中的比特差錯檢測
確認: 接收方向發送方反饋接收狀態。 ACK(肯定確認) ;NAK(否定確認)
重傳:發送發 重新 發送接收方沒有正確接收的數據
序號:確保數據按序提交(對數據進行編號,即便不按序到達,可以按序提交)
計時器: 解決 數據丟失問題
TCP提供可靠數據傳輸服務
UDP不提供可靠數據傳輸服務
最簡單的自動重傳請求協議是停等協議
流水線協議:管道協議,允許發送方在沒有收到確認前連續發送 多個 分組
最典型的流水線協議: 滑動窗口協議
1、 增加分組序號
2、發送方和接收方可以緩存多個分組
發送方的發送窗口:發送方可以發送未被確認分組的最大數量
接收方的接收窗口: 接收方可以緩存到正確到達的分組的最大數量
發送:
接收:
滑動窗口協議:根據窗口的大小,可以具體分為:
回退N步協議:GBN協議(Go-Back-N)
選擇重傳協議:SR協議(Selective Repeat)
GBN協議: 發送窗口>=1; 接收窗口=1 ;
發送端 緩存能力高,可以在沒有得到確認前發送多個分組
接收端 緩存能力很低,只能接收一個按序到達的分組,不能緩存未按序到達的分組
GBN發送方響應的3類事件:
SR協議: 發送窗口>1 接收窗口>1
發送端緩存能力高
接收端緩存能力高
SR發送方響應事件:
用戶數據協議(User Datagram Protocal, UDP): Internet 傳輸層 協議,提供 無連接 、不可靠、數據報盡力傳輸服務
0-15-31: 32位二進制
UDP首部四個欄位: 每個欄位長度都是2位元組,共8個位元組
源埠號和目的埠號:UDP實現復用和分解
長度:指示UDP報文段中的位元組數(首部和數據的總和)
校驗和:接收方使用檢測數據報是否出現差錯
應用數據欄位:應用層數據佔用
UDP校驗和:提供差錯檢測功能
UDP的校驗和用於檢測UDP報文段從源到目的地傳送過程中,其中的數據是否發生了改變
UDP校驗和計算規則
1、所有參與運算的內容按16位對齊求和
UDP校驗和計算的內容包括3部分:UDP偽首部、應用數據
傳輸控制協議(Transmission Control Protocol ,TCP): Internet 傳輸層協議
提供面向連接、可靠、有序、位元組流傳輸服務
第一:應用進程 先建立連接
第二:每一條TCP連接只有 兩個 端點
第三: 可靠交付 :無差錯、不丟失、不重復、按序到達
第四: 全雙工 通信
第五:面向 位元組流
流:位元組序列,應用程序和TCP的交互是一個個數據塊,TCP把他們看做是無結構位元組流
1、源埠號欄位、目的埠號欄位:佔16位、復用和分解上層應用的數據
2、序號欄位、確認序號欄位:佔32位
序號欄位:TCP序號是對每個應用層數據的每個位元組進行編號
確認序號欄位:期望從對方接受數據的位元組序號,即該序號對應的位元組尚未收到
9.選項欄位長度可變,最短為0位元組,最長為40位元組
TCP連接管理:連接建立與連接拆除
以客戶端上的一個應用進程與伺服器上的一個應用進程建立一條TCP連接為例
一、建立連接
第一次握手:
客戶向伺服器發送連接請求段:(SYN=1, seq=x)
SYN = 1; 建立連接請求控制段
seq=x; 表示傳輸的報文段第1個數據位元組的序列號是x,此序列號代表整個報文段的序號
客戶端進入SYN_SEND (同步發送)
第二次握手:
服務端發回確認報文段:(SYN=1, ACK=1,seq=y,ack_seq=x+1)
SYN=1 同意建立新連接的確認段
ack_seq = x + 1; 表示已經收到序列號為x的報文段,准備接受序列號為x+1的報文段
seq=y : 伺服器告訴客戶確認報文段的序列號是y
伺服器由LISTEN進入SYN_RCVD(同步收到)
第三次握手
客戶端對伺服器的同意連接報文段進行確認:(ACK=1,seq=x+1, ack_seq=y+1)
seq=x+1 : 客戶端此次的報文段的序列號是x+1;
ack_seq = y+1 : 客戶端期望接收伺服器序列號y+1的報文段
當客戶端發送ACK時,客戶端進入ESTABLISHED狀態
當服務端收到ACK後,也進入ESTABLISHED狀態
第三次 握手可攜帶數據
二、連接拆除:四次揮手
第一次揮手
客戶端向伺服器發送釋放連接報文段:(FIN=1, seq=u)
FIN=1.發送端數據發送完畢,請求釋放連接
seq=u 傳輸的第一個數據位元組的序號是u
客戶端狀態由ESTABLISHED進入FIN_WAIT_1(終止等待1狀態)
第二次揮手
伺服器向客戶發送確認段:(ACK=1, seq=v, ack_seq=u+1)
ACK=1; 確認字型大小段有效
ack_seq=u+1 : 伺服器期望接受客戶數據序號為u+1
seq=v: 伺服器傳輸的數據序號是v
伺服器狀態由ESTABLISHED進入CLOSE_WAIT(關閉等待)
客戶端收到ACK段後,由FIN_WAIT_!進入FIN_WAIT_2
第三次揮手
伺服器向客戶發送釋放連接報文段:(FIN=1, ACK=1, seq=v+1, ack_seq=u+1)
FIN =1: 請求釋放連接
ACK = 1:確認字型大小段有效
ack_seq=u+1: 表示伺服器期望接受客戶數據序列號為1
seq=v+1 表示自己傳輸的第一個數據位元組的序號是v+1
伺服器狀態由CLOSE_WAIT進入LAST_ACK(最後確認狀態)
第四次揮手:
客戶向伺服器發送確認段:(ACK=1,seq=u+1,ack_seq=w+1)
ACK=1: 確認字型大小段有效
ack_seq=v+1+1 : 表示客戶期望接受伺服器數據序號為v+1+1
seq=u+1 表示客戶傳輸的數據的序號是u+1
客戶端狀態由FIN_WAIT_2進入TIME_WAIT 等待2MSL時間,進入CLOSED狀態
伺服器再收到最後一次ACK後,由LAST_ACK進入CLOSED
一、可靠:保證接收方應用進程從緩沖區讀出的位元組流與發送發發出的位元組流是完全一樣的
二、TCP實現可靠數據傳輸服務的工作機制
1、應用層數據被 分割 成TCP認為最適合發送的數據塊
2、序號,發送方對發送的數據包進行編號,確保數據按序提交給接收方 採用累積確認
3、確認,接收方向發送方反饋接收狀態,確認是否正確接收數據
4、差錯檢測,利用差錯編碼實現數據包傳輸過程中的比特差錯檢測(甚至糾正)
5、重傳,發送方重新發送接收方沒有正確接收的數據
6、計時器,在發送方引入計時器,解決數據丟失問題
最大報文段長度:1500位元組
報文段中封裝的應用層數據的最大長度:1480位元組 = 1500 - 最短的首部長度
TCP生成ACK的策略
流量控制:協調發送方與接收方的數據發送與接收 速度
在通信過程中,接收方設置報文段的 接收窗口欄位 來將窗口大小通知給發送方
一、網路擁塞: 太多的主機``以太快的速度 向網路中發送 太多的數據 ,超出了網路處理能力,導致大量數據分組擁擠在中間設備隊列中等待轉發, 網路性能 顯著下降的現象
二、擁塞控制:通過合理調度、規范、調整向網路中發送數據的主機數量、發送速率、數據量、以 避免 擁塞或 消除 已發生的擁塞
三、概念補充介紹
四、TCP擁塞控制演算法
閾值之前:慢啟動階段
閾值之後:擁塞避免階段
l例如: 發生計時器超時,當前擁塞窗口24MSS,當前閾值為16MSS
新的閾值:為當前擁塞窗口的一半,新的閾值=24/2=12MSS
新的擁塞窗口:直接調整為1MSS 新的擁塞窗口=1MSS
調整好新的閾值和新的擁塞窗口之後,使用 慢啟動。擁塞避免 演算法增加擁塞窗口大小
例如:發送3次重復確認時,當前擁塞窗口為24MSS,當前閾值為16MSS
新的閾值:為當前擁塞窗口的一半
新的擁塞窗口:調整為新的閾值
調整好新的閾值和新的擁塞窗口後,使用 擁塞避免 演算法增加擁塞窗口大小
五、窗口調整的基本策略(Additive Increase,Multiplicative Decrease, AIMD):
網路未發生擁塞時:逐漸"加性"增大窗口
網路擁塞時「乘性」減小窗口
六、擁塞預防策略:流量整型技術:規范主機向網路發送數據的流量
⑸ 什麼是伺服器發包
伺服器發包是指在網路通信中,伺服器向客戶端發送數據包的過程。這一過程通常發生在客戶端向伺服器發送請求後,伺服器根據請求內容處理數據,並將結果以數據包的形式發送回客戶端。
在網路通信中,數據包是信息傳輸的基本單位。當客戶端向伺服器發送請求時,客戶端會構建一個請求數據包,並將其發送到伺服器。伺服器接收到請求數據包後,會對其進行解析,並執行相應的操作,如查詢資料庫、處理數據等。完成處理後,伺服器會將結果數據封裝成一個或多個響應數據包,並通過網路發送回客戶端。
伺服器發包的過程涉及多個關鍵步驟。首先,伺服器需要構建響應數據包。這包括確定要發送的數據內容、設置數據包頭信息(如源IP地址、目標IP地址、協議類型等)、選擇適當的傳輸層協議(如TCP或UDP)等。接下來,伺服器會將構建好的數據包發送到網路層,由網路層負責將數據包傳輸到目標客戶端。
以Web伺服器為例,當用戶在瀏覽器中輸入網址並按下回車鍵時,瀏覽器會向Web伺服器發送一個HTTP請求數據包。Web伺服器接收到請求後,會處理請求並生成一個HTML頁面作為響應。然後,Web伺服器會將這個HTML頁面封裝成一個或多個HTTP響應數據包,並通過網路發送回瀏覽器。瀏覽器接收到響應數據包後,會對其進行解析並展示給用戶。
總之,伺服器發包是網路通信中的重要環節,它實現了伺服器與客戶端之間的數據交互。通過構建和發送響應數據包,伺服器能夠向客戶端提供所需的數據和服務。