Linux網絡編程——網絡基礎
- 1. 網絡結構模式
- 1.1 C/S 結構
- 1.2 B/S 結構
- 2. MAC 地址
- 3. IP地址
- 3.1 簡介
- 3.2 IP 地址編址方式
- 4. 端口
- 4.1 簡介
- 4.2 端口類型
- 5. 網絡模型
- 5.1 OSI 七層參考模型
- 5.2 TCP/IP 四層模型
- 6. 協議
- 6.1 簡介
- 6.2 常見協議
- 6.3 UDP 協議
- 6.4 TCP 協議
- 6.5 IP 協議
- 6.6 以太網幀協議
- 6.7 ARP 協議
- 6.8 封裝
- 6.9 分用 / 解封裝
- 7. 網絡通信的過程
1. 網絡結構模式
1.1 C/S 結構
(1)簡介
????客戶機 - 服務器 ,即 Client - Server
(C/S)結構。C/S 結構通常采取 兩層結構。服務器負責數據的管理,客戶機負責完成與用戶的交互任務。客戶機是因特網上訪問別人信息的機器,服務器則是提供信息供人訪問的計算機。
????客戶機 通過 局域網 與 服務器 相連,接受 用戶 的請求,并通過網絡向服務器提出請求,對數據庫進行操作。服務器接受客戶機的請求,將數據提交給客戶機,客戶機 將數據進行計算 并將結果呈現給 用戶 。服務器還要提供完善安全保護及對數據完整性的處理等操作,并允許多個客戶機同時訪問服務器,這就對服務器的硬件處理數據能力提出了很高的要求。
????在C/S結構中,應用程序分為兩部分:服務器部分 和 客戶機部分。服務器部分是多個用戶共享的信息與功能,執行后臺服務,如控制共享數據庫的操作等;客戶機部分為用戶所專有,負責執行前臺功能,在出錯提示、在線幫助等方面都有強大的功能,并且可以在子程序間自由切換。
(2)優點
- 能充分發揮客戶端 PC 的處理能力,很多工作可以在 客戶端處理 后再提交給服務器,所以 C/S 結構客戶端響應速度快;
- 操作界面漂亮、形式多樣,可以充分滿足客戶自身的個性化要求;
- C/S 結構的管理信息系統具有較強的事務處理能力,能實現復雜的業務流程;
- 安全性較高,C/S 一般面向相對固定的用戶群,程序更加注重流程,它可以對權限進行多層次校驗,提供了更安全的存取模式,對信息安全的控制能力很強,一般 高度機密 的信息系統 采用 C/S 結構適宜。
(3)缺點
- 客戶端需要安裝專用的客戶端軟件。首先涉及到安裝的工作量,其次任何一臺電腦出問題,如病毒、硬件損壞,都需要進行安裝或維護。系統軟件升級時,每一臺客戶機需要重新安裝,其維護和升級成本非常高;
- 對客戶端的操作系統一般也會有限制,不能夠跨平臺。
1.2 B/S 結構
(1)簡介
????B/S 結構(Browser/Server
,瀏覽器/服務器模式),是 WEB 興起后的一種 網絡結構模式,WEB瀏覽器是客戶端最主要的應用軟件。這種模式 統一了客戶端,將系統 功能實現的核心 部分集中到 服務器上,簡化了系統的開發、維護和使用。客戶機上只要安裝一個瀏覽器,如 Firefox
或 Internet Explorer
,服務器安裝 SQL Server
、Oracle
、MySQL
等數據庫。瀏覽器通過 Web Server
同 數據庫 進行 數據交互。
(2)優點
????B/S 架構最大的優點是總體 擁有成本低、維護方便、 分布性強、開發簡單,可以不用安裝任何專門的軟件就能實現在任何地方進行操作,客戶端零維護,系統的擴展非常容易,只要有一臺能上網的電腦就能使用。
(3)缺點
- 通信開銷大、系統和數據的安全性較難保障;
- 個性特點明顯降低,無法實現具有個性化的功能要求;
- 協議一般是固定的:
http/https
(無法傳輸大數量的數據) - 客戶端服務器端的交互是 請求-響應模式,通常動態刷新頁面,響應速度明顯降低。
2. MAC 地址
????網卡是一塊被設計用來允許計算機在計算機網絡上進行通訊的計算機硬件,又稱為網絡適配器 或 網絡接口卡NIC。其擁有 MAC 地址,屬于 OSI 模型的 第 2 層,它使得用戶可以通過 電纜 或 無線 相互連接。每一個網卡都有一個被稱為 MAC 地址 的獨一無二的 48 位串行號。網卡的主要功能:
- 數據的封裝與解封裝、
- 鏈路管理、
- 數據編碼與譯碼。
????MAC 地址(Media Access Control Address
),直譯為 媒體存取控制位址,也稱為 局域網地址、以太網地址、物理地址 或 硬件地址,它是一個用來確認網絡設備位置的位址,由網絡設備制造商生產時燒錄在網卡中。在 OSI 模型中,第三層網絡層負責 IP 地址
,第二層數據鏈路層則負責 MAC 位址
。MAC 地址 用于在網絡中唯一標識一個網卡,一臺設備若有一或多個網卡,則每個網卡都需要并會有一個唯一的 MAC 地址。
????MAC 地址的長度為 48 位(6個字節),通常表示為
12
個 16 進制數,如:00-16-EA-AE-3C-40
就是一個 MAC 地址,其中 前 3 個字節,16 進制數00-16-EA
代表 網絡硬件制造商的編號,它由IEEE(電氣與電子工程師協會)分配,而 后 3 個字節,16進制數AE-3C-40
代表 該制造商 所制造的某個 網絡產品(如網卡)的系列號。只要不更改自己的 MAC 地址,MAC 地址在世界是唯一的。形象地說,MAC 地址就如同身份證上的身份證號碼,具有 唯一性。
3. IP地址
3.1 簡介
????IP 協議是為計算機網絡相互連接進行通信而設計的協議。在因特網中,它是能使連接到網上的所有計算機網絡實現相互通信的一套規則,規定了計算機在因特網上進行通信時應當遵守的規則。任何廠家生產的計算機系統,只要遵守 IP 協議就可以 與因特網互連互通。各個廠家生產的網絡系統和設備,如以太網、分組交換網等,它們 相互之間不能互通,不能互通的主要原因是因為它們所傳送數據的基本單元(技術上稱之為 “幀
” )的格式不同。IP 協議實際上是一套由軟件程序組成的協議軟件,它把各種不同“幀
” 統一轉換成 “ IP 數據報
”格式,這種轉換是因特網的一個最重要的特點,使所有各種計算機都能在因特網上實現互通,即具有“開放性”的特點。正是因為有了 IP 協議,因特網才得以迅速發展成為世界上最大的、開放的計算機通信網絡。因此,IP 協議 也可以叫做“ 因特網協議 ”。
????IP 地址(Internet Protocol Address
)是指 互聯網協議地址,又譯為 網際協議地址。IP 地址是 IP協議 提供的一種統一的地址格式,它為互聯網上的每一個網絡和每一臺主機分配一個 邏輯地址,以此來屏蔽物理地址的差異。
????IP 地址是一個 32 位 的二進制數,通常被分割為 4 個“ 8 位二進制數”(也就是 4 個字節)。IP 地址通常用“ 點分十進制 ”表示成(a.b.c.d
)的形式,其中,a,b,c,d
都是 0~255
之間的 十進制整數 。
- 例:點分十進IP地址(
100.4.5.6
),實際上是 32 位二進制數(01100100.00000100.00000101.00000110
)。
3.2 IP 地址編址方式
????最初設計互聯網絡時,為了便于尋址以及層次化構造網絡,每個 IP 地址包括兩個標識碼(ID),即 網絡ID
和 主機 ID
。同一個物理網絡上的所有主機都使用同一個 網絡 ID,網絡上的一個主機(包括網絡上工作站,服務器 和 路由器等)有一個 主機 ID 與其對應。Internet 委員會定義了 5 種 IP 地址類型以適合不
同容量的網絡,即 A 類~ E 類
。其中 A
、B
、C
3類(如下表格)由 InternetNIC 在全球范圍內統一分配,D
、E
類為特殊地址。
(1)A類IP地址
????一個 A 類 IP 地址是指, 在 IP 地址的四段號碼中,第一段號碼 為 網絡號碼,剩下的三段號碼為 本地計算機的號碼。如果用二進制表示 IP 地址的話,A 類 IP 地址 就由 1 字節的網絡地址
和 3 字節主機地址
組成,網絡地址的 最高位 必須是 “0
”。A 類 IP 地址中網絡的標識長度為 8
位,主機標識的長度為 24
位,A類網絡地址數量較少,有 126
個網絡,每個網絡可以容納主機數達 1600
多萬臺。
- A 類 IP 地址 地址范圍
1.0.0.1
-126.255.255.254
(二進制表示為:00000001 00000000 00000000 00000001
-01111110 11111111 11111111 11111110
)。最后一個(*.255.255.255
)是廣播地址。 - A 類 IP 地址 的 子網掩碼 為
255.0.0.0
,每個網絡支持的最大主機數為: 256 3 ? 2 = 16777214 臺 {256}^3 - 2 = 16777214 臺 2563?2=16777214臺
(2)B類IP地址
????一個 B 類 IP 地址 是指,在 IP 地址的四段號碼中,前兩段號碼 為 網絡號碼。如果用二進制表示 IP 地址的話,B 類 IP 地址就由 2 字節的網絡地址
和 2 字節主機地址
組成,網絡地址的 最高位 必須是“ 10
”。B 類 IP地址 中網絡的標識長度為 16
位,主機標識的長度為 16
位,B 類網絡地址 適用于中等規模的網絡,有 16384
個網絡,每個網絡所能容納的計算機數為 6 萬多臺
。
- B 類 IP 地址 地址范圍
128.0.0.1
-191.255.255.254
(二進制表示為:10000000 00000000 00000000 00000001
-10111111 11111111 11111111 11111110
)。 最后一個(*.*.255.255
)是廣播地址。 - B 類 IP 地址 的子網掩碼為
255.255.0.0
,每個網絡 支持的 最大主機數 為: 256 2 ? 2 = 65534 臺 {256}^2 - 2 = 65534 臺 2562?2=65534臺
(3)C類IP地址
????一個 C 類 IP 地址是指,在 IP 地址的四段號碼中,前三段號碼 為 網絡號碼,剩下的一段號碼為 本地計算機的號碼。如果用二進制表示 IP 地址的話,C 類 IP 地址就由 3 字節的網絡地址
和 1 字節主機地址
組成,網絡地址的 最高位 必須是“110
”。C 類 IP 地址 中 網絡的標識長度為 24
位,主機標識的長度為 8
位,C 類網絡地址數量較多,有 209 萬余個網絡。適用于小規模的局域網絡,每個網絡最多只能包含254
臺計算機。
- C 類 IP 地址 范圍
192.0.0.1
-223.255.255.254
(二進制表示為:11000000 00000000 00000000 00000001
-11011111 11111111 11111111 11111110
)。 - C類IP地址的子網掩碼為
255.255.255.0
,每個網絡 支持的 最大主機數 為: 256 ? 2 = 254 臺 256 - 2 = 254 臺 256?2=254臺
(4)D類IP地址
????D 類 IP 地址 在歷史上被叫做 多播地址(multicast address
),即 組播地址。在 以太網中,多播地址命名了一組應該在這個網絡中應用接收到一個分組的站點。多播地址的 最高位 必須是 “1110
”,范圍從224.0.0.0
- 239.255.255.255
。
(5)特殊的網址
????每一個字節都為 0
的地址( “0.0.0.0
” )對應于 當前主機;
????IP 地址中的每一個字節都為 1
的 IP 地址( “255.255.255.255
” )是 當前子網 的廣播地址;
????IP 地址中凡是以 “11110
” 開頭的 E 類 IP 地址 都 保留 用于將來和實驗使用。
????IP地址中不能以十進制 “127
” 作為開頭,該類地址中數字 127.0.0.1
到 127.255.255.255
用于回路測試,如:127.0.0.1
可以代表 本機IP地址。
子網掩碼
- 子網掩碼(
subnet mask
)又叫網絡掩碼、地址掩碼、子網絡遮罩,它是一種用來指明一個 IP 地址 的 哪些位 標識的是 主機所在的子網,以及 哪些位 標識的是主機的 位掩碼。子網掩碼不能單獨存在,它必須結合 IP 地址一起使用。子網掩碼只有一個作用,就是將某個 IP 地址 劃分成 網絡地址 和 主機地址 兩部分。 - 子網掩碼是一個 32 位地址,用于屏蔽 IP 地址的一部分以區別 網絡標識 和 主機標識 ,并說明該 IP地址是在局域網上,還是在 廣域網 上。
????子網掩碼是在 IPv4
地址資源緊缺的背景下為了解決 lP 地址分配而產生的 虛擬 lP 技術,通過子網掩碼 將 A
、B
、C
三類地址劃分為若干子網,從而顯著提高了 IP 地址的分配效率,有效解決了 IP 地址資源緊張的局面。另一方面,在企業內網中為了更好地管理網絡,網管人員也利用子網掩碼的作用,人為地將一個較大的企業內部網絡劃分為更多個小規模的子網,再利用 三層交換機 的 路由功能實現子網互聯,從而有效解決了網絡廣播風暴和網絡病毒等諸多網絡管理方面的問題。
????在大多數的網絡教科書中,一般都將子網掩碼的作用描述為通過邏輯運算,將 IP 地址劃分為網絡標識(Net.ID
) 和主機標識(Host.ID
),只有網絡標識相同的兩臺主機在無路由的情況下才能相互通信。
????根據 RFC950 定義,子網掩碼 是一個 32 位的 2 進制數, 其對應 網絡地址 的所有位都置為 1
,對應于 主機地址 的所有位置都為 0
。子網掩碼 告知 路由器,地址的哪一部分是網絡地址,哪一部分是主機地址,使路由器正確判斷任意 IP 地址是否是本網段的,從而正確地進行路由。網絡上,數據從一個地方傳到另外一個地方,是依靠 IP 尋址。從邏輯上來講,是兩步的。
- 第一步,從 IP 中找到所屬的網絡,好比是去找這個人是哪個小區的;
- 第二步,再從 IP 中找到主機在這個網絡中的位置,好比是在小區里面找到這個人。
????子網掩碼的設定必須遵循一定的規則。與二進制 IP 地址相同,子網掩碼由
1
和0
組成,且1
和0
分別連續。子網掩碼的長度也是32
位,左邊是網絡位,用二進制數字 “1
” 表示,1
的數目等于網絡位的長度;右邊是主機位,用二進制數字 “0
” 表示,0
的數目等于主機位的長度。這樣做的目的是為了讓掩碼與 IP 地址做 按位與運算 時用0
遮住原主機數,而不改變原網絡段數字,而且很容易通過0
的位數確定子網的主機數(2 的主機位數次方 - 2
,因為主機號全為1
時表示該網絡廣播地址,全為0
時表示該網絡的網絡號,這是兩個特殊地址)。通過子網掩碼,才能表明一臺主機所在的子網與其他子網的關系,使網絡正常工作。
4. 端口
4.1 簡介
????“端口” 是英文 port
的意譯,可以認為是 設備 與 外界通訊 交流的出口。端口可分為 虛擬端口 和 物理端口:
- 虛擬端口 指 計算機內部 或 交換機路由器內 的端口,不可見,是特指 TCP/IP協議中的端口,是 邏輯意義 上的端口。例如計算機中的
80
端口、21
端口、23
端口等。(也可以理解為:內存緩沖區) - 物理端口 又稱為 接口,是 可見端口,計算機背板的 RJ45 網口,交換機、路由器、集線器 等
RJ45
端口。電話使用RJ11
插口也屬于 物理端口 的范疇。
????如果把 IP 地址 比作一間房子,端口 就是出入這間房子的 門。真正的房子只有幾個門,但是一個 IP 地址的端口可以有
65536
(即: 2 16 2^{16} 216)個之多!端口是通過 端口號 來標記的,端口號只有整數,范圍是從0
到65535
( 2 16 ? 1 2^{16} - 1 216?1)。
4.2 端口類型
(1)周知端口(Well Known Ports)
????周知端口是眾所周知的端口號,也叫知名端口、公認端口 或者 常用端口,范圍從 0
到 1023
,它們緊密綁定于一些特定的服務。
- 例如
80
端口分配給WWW
服務,21
端口分配給FTP
服務,23
端口分配給Telnet
服務等等。 - 我們在 IE 的地址欄里輸入一個網址的時候是不必指定端口號的,因為在默認情況下
WWW
服務的端口是 “80
”。
????網絡服務 是可以使用其他端口號的,如果不是默認的端口號則應該在地址欄上指定端口號,方法是在地址后面加上冒號“
:
”(半角),再加上 端口號。比如使用 “8080
” 作為WWW
服務的端口,則需要在地址欄里輸入“網址:8080
”。但是有些系統協議使用固定的端口號,它是不能被改變的,比如139
端口專門用于NetBIOS
與TCP/IP
之間的通信,不能手動改變。
(2)注冊端口(Registered Ports)
????端口號從 1024
到 49151
,它們松散地綁定于一些服務,分配給 用戶進程
或 應用程序
,這些進程主要是用戶選擇安裝的一些應用程序,而不是已經分配好了公認端口的常用程序。這些端口在沒有被服務器資源占用的時候,可以用用戶端 動態選用為源端口。
(3)動態端口 / 私有端口(Dynamic Ports / Private Ports)
????動態端口 的范圍是從 49152
到 65535
。之所以稱為 動態端口,是因為它 一般不固定分配某種服務,而是動態分配。
5. 網絡模型
5.1 OSI 七層參考模型
????七層模型,亦稱 OSI(
Open System Interconnection
)參考模型,即 開放式系統互聯。參考模型是 國際標準化組織(ISO)制定的一個用于 計算機 或 通信系統間互聯 的 標準體系,一般稱為 OSI 參考模型 或 七層模型。它是一個七層的、抽象的模型體,不僅包括一系列抽象的術語或概念,也包括具體的協議。
記憶:物數網傳會表應。
- 應用層:網絡服務 與 最終用戶 的 一個接口 。這一層為用戶的應用程序(例如電子郵件、文件傳輸和終端仿真)提供網絡服務。
- 表示層:數據的表示、安全、壓縮。主要是進行對接收的數據進行解釋、加密與解密、壓縮與解壓縮等(也就是把計算機能夠識別的東西轉換成人能夠能識別的東西(如圖片、聲音等))。
- 會話層:通過傳輸層(端口號:
傳輸端口
與接收端口
)建立數據傳輸的通路。主要在你的系統之間 發起會話 或者 接受會話請求。 - 傳輸層:定義了一些傳輸數據的 協議 和 端口號(
WWW
端口80
等),如:TCP
(傳輸控制協議,傳輸效率低,可靠性強,用于傳輸可靠性要求高,數據量大的數據),UDP
(用戶數據報協議,與TCP
特性恰恰相反,用于傳輸可靠性要求不高,數據量小的數據,如 QQ 聊天數據就是通過這種方式傳輸的)。 主要是將從下層接收的數據進行 分段 和 傳輸,到達目的地址后再進行 重組。常常把這一層數據叫做段
。 - 網絡層:進行 邏輯地址尋址,在位于不同地理位置的網絡中的兩個主機系統之間 提供連接 和 路徑選擇。Internet 的發展使得從世界各站點訪問信息的用戶數大大增加,而網絡層正是管理這種連接的層。
- 數據鏈路層:建立邏輯連接、進行 硬件地址尋址、差錯校驗 等功能。定義了如何讓 格式化數據 以
幀
為單位進行傳輸,以及如何讓控制對物理介質的訪問。網卡將比特
組合成字節
進而組合成幀
,用MAC地址訪問介質。 - 物理層:主要定義 物理設備標準,如網線的接口類型、光纖的接口類型、各種傳輸介質的傳輸速率等。它的主要作用是傳輸比特流(就是由
1
、0
轉化為 電流強弱 來進行傳輸,到達目的地后再轉化為1
、0
,也就是我們常說的 數模轉換 與 模數轉換)。這一層的數據叫做比特
。
5.2 TCP/IP 四層模型
簡介
????現在 Internet(因特網)使用的主流協議族是 TCP/IP
協議族,它是一個分層、多協議的通信體系。 TCP/IP協議族 是一個 四層協議系統,自底而上 分別是 數據鏈路層、 網絡層、 傳輸層 和 應用層。每一層完成不同的功能,且通過若干協議來實現,上層協議 使用 下層協議提供的服務。
????TCP/IP 協議 在一定程度上參考了 OSI 的體系結構。OSI 模型共有七層,從下到上分別是 物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層 和 應用層。但是這顯然是有些復雜的,所以在 TCP/IP 協議中,它們被簡化為了四個層次。
(1)應用層、表示層、會話層 三個層次提供的服務相差不是很大,所以在 TCP/IP 協議中,它們被合并為 應用層 一個層次。
(2)由于 傳輸層 和 網絡層 在網絡協議中的地位十分重要,所以在 TCP/IP 協議中它們被作為獨立的兩個層次。
(3)因為 數據鏈路層 和 物理層 的內容相差不多,所以在 TCP/IP 協議中它們被歸并在 網絡接口層 / 數據鏈路層 一個層次里。只有四層體系結構的 TCP/IP 協議,與有七層體系結構的 OSI 相比要簡單了不少,也正是這樣,TCP/IP 協議在實際的應用中效率更高,成本更低。
- 應用層:應用層是 TCP/IP 協議的第一層,是直接為應用進程提供服務的。
(1)對不同種類的應用程序它們會根據自己的需要來使用應用層的不同協議,郵件傳輸 應用使用了SMTP
協議、萬維網 應用使用了HTTP
協議、遠程登錄服務 應用使用了有TELNET
協議。
(2)應用層還能 加密、解密、格式化數據。
(3)應用層可以 建立 或 解除 與 其他節點的聯系,這樣可以充分節省網絡資源。 - 傳輸層:作為 TCP/IP 協議的第二層,運輸層在整個 TCP/IP 協議中起到了中流砥柱的作用。且在運輸層中,
TCP
和UDP
也同樣起到了 中流砥柱 的作用。 - 網絡層:網絡層在 TCP/IP 協議中的位于第三層。在 TCP/IP 協議中網絡層可以進行 網絡連接的建立 和 終止 以及
IP
地址的尋找 等功能。 - 網絡接口層:在 TCP/IP 協議中,網絡接口層位于第四層。由于網絡接口層兼并了 物理層 和 數據鏈路層 所以,網絡接口層既是傳輸數據的物理媒介,也可以為網絡層提供一條準確無誤的線路。
6. 協議
6.1 簡介
????協議,網絡協議 的簡稱,網絡協議是通信計算機雙方必須 共同遵從的一組約定。如怎么樣建立連接、怎么樣互相識別等。只有遵守這個約定,計算機之間才能相互通信交流。它的三要素是:語法
、語義
、時序
。
????為了使數據在網絡上從源到達目的,網絡通信的參與方必須 遵循相同的規則,這套規則稱為 協議(protocol
),它最終體現為在網絡上傳輸的 數據包的格式。協議往往分成幾個層次進行定義,分層定義是為了使某一層協議的改變不影響其他層次的協議。
6.2 常見協議
????應用層 常見的協議有:FTP
協議(File Transfer Protocol
文件傳輸協議)、HTTP
協議(Hyper Text Transfer Protocol
超文本傳輸協議)、NFS
(Network File System
網絡文件系統)。
????傳輸層 常見協議有:TCP
協議(Transmission Control Protocol
傳輸控制協議)、UDP
協議(User Datagram Protocol
用戶數據報協議)。
????網絡層 常見協議有:IP
協議(Internet Protocol
因特網互聯協議)、ICMP
協議(Internet Control Message Protocol
因特網控制報文協議)、IGMP
協議(Internet Group Management Protocol
因特網組管理議)。
????網絡接口層 常見協議有:ARP
協議(Address Resolution Protocol
地址解析協議)(ip
-> mac
)、RARP
協議(Reverse Address Resolution Protocol
反向地址解析協議)(mac
-> ip
)。
6.3 UDP 協議
- 源端口號:發送方端口號
- 目的端口號:接收方端口號
- 長度:
UDP
用戶數據報的長度,最小值是8
字節(僅有首部) - 校驗和:檢測
UDP
用戶數據報 在傳輸中是否有錯,有錯就丟棄
6.4 TCP 協議
- 源端口號:發送方端口號
- 目的端口號:接收方端口號
- 序列號:本報文段的數據 的 第一個字節的序號
- 確認序號:期望收到 對方下一個報文段 的 第一個數據字節的序號
- 首部長度(數據偏移):TCP 報文段的數據起始處距離 TCP 報文段的起始處有多遠,即首部長
度。單位:32位
,即以4 字節
為 計算單位 - 保留:占
6 位
,保留為今后使用,目前應置為0
- 緊急 URG :此位置
1
,表明緊急指針字段有效,它告訴系統此報文段中 有緊急數據,應 盡快傳送 - 確認 ACK:僅當
ACK=1
時 確認號字段才有效,TCP 規定,在連接建立后所有傳達的報文段都 必須把ACK
置1
- 推送 PSH:當兩個應用進程進行交互式的通信時,有時在一端的應用進程希望在鍵入一個命令后 立即 就能夠 收到 對方的響應。在這種情況下,
TCP
就可以使用 推送(push
)操作,這時,發送方TCP 把PSH
置1
,并立即創建一個報文段發送出去,接收方收到PSH = 1
的報文段,就盡快地(即“推送
” 向前)交付給接收應用進程,而不再等到整個緩存都填滿后再向上交付 - 復位 RST:用于 復位相應的 TCP 連接
- 同步 SYN:僅在 三次握手 建立 TCP 連接時 有效。當
SYN = 1
而ACK = 0
時,表明這是一個連接請求報文段,對方若同意建立連接,則應在相應的報文段中使用SYN = 1
和ACK = 1
。因此,SYN
置1
就表示這是一個連接請求 或 連接接受報文 - 終止 FIN:用來釋放一個連接。當
FIN = 1
時,表明此報文段的發送方的數據已經發送完畢,并要求釋放運輸連接 - 窗口:指發送本報文段的一方的 接收窗口 (而 不是 自己的 發送窗口)
- 校驗和:校驗和字段檢驗的范圍包括 首部 和 數據 兩部分,在 計算校驗和時需要加上
12 字節
的 偽頭部 - 緊急指針:僅在
URG = 1
時才有意義,它指出本報文段中的 緊急數據的字節數(緊急數據結束后就是普通數據),即指出了緊急數據的末尾在報文中的位置,注意:即使窗口為零時也可發送緊急數據 - 選項:長度可變,最長可達
40 字節
,當沒有使用選項時,TCP
首部長度是20 字節
6.5 IP 協議
- 版本:IP 協議的版本。通信雙方使用過的 IP 協議的版本必須一致,目前最廣泛使用的 IP 協議版本號為
4
(即IPv4
) - 首部長度:單位是
32 位
(4 字節
) - 服務類型:一般不適用,取值為
0
- 總長度:指 首部 加上 數據 的總長度,單位為
字節
- 標識(
identification
):IP 軟件在存儲器中維持一個計數器,每產生一個數據報,計數器就加1
,并將此值賦給標識字段 - 標志(
flag
):目前只有兩位有意義。- 標志字段中的 最低位 記為
MF
。MF = 1
即表示后面 “ 還有分片 ” 的數據報。MF = 0
表示這已是若干數據報片中的最后一個。 - 標志字段 中間的一位 記為
DF
,意思是“不能分片 ”,只有當DF = 0
時 才允許分片
- 標志字段中的 最低位 記為
- 片偏移:指出較長的分組在分片后,某片在源分組中的相對位置,也就是說,相對于用戶數據段的起點,該片從何處開始。片偏移以
8 字節
為 偏移單位。 - 生存時間:
TTL
,(大部分為 64 / 128) 表明是數據報在網絡中的壽命,即為“ 跳數限制 ”,由發出數據報的源點設置這個字段。路由器 在 轉發數據 之前就把TTL
值減一
,當TTL
值減為零
時,就 丟棄這個數據報。 - 協議:指出此數據報攜帶的數據時使用何種協議,以便使 目的主機 的 IP 層知道應將數據部分 上交給哪個處理過程,常用的
ICMP
(1
),IGMP
(2
),TCP
(6
),UDP
(17
),IPv6
(41
) - 首部校驗和: 只校驗 數據報的 首部,不包括數據部分。
- 源地址:發送方 IP 地址
- 目的地址:接收方 IP 地址
6.6 以太網幀協議
- 類型:使 目的主機 的 數據鏈路層 知道應將數據部分 上交給哪個處理。
0x800
表示IP
、0x806
表示ARP
、0x835
表示RARP
6.7 ARP 協議
- ARP協議:通過 IP 地址查找 MAC 地址;
- RARP協議:通過 MAC 地址查找 IP 地址;
- 硬件類型:
1
表示MAC 地址
- 協議類型:
0x800
表示IP 地址
- 硬件地址長度:
6
字節 - 協議地址長度:
4
字節(ip) - 操作:
1
表示ARP 請求
,2
表示ARP 應答
,3
表示RARP 請求
,4
表示RARP 應答
例如:在win 的 cmd
輸入: arp -a
6.8 封裝
????上層協議 是 如何使用 下層協議提供的服務的呢?
- 其實這是通過封裝(
encapsulation
)實現的。應用程序數據在發送到物理網絡上之前,將沿著 協議棧 從上往下 依次傳遞。每層協議都將在上層數據的基礎上加上自己的頭部信息(有時還包括尾部信息),以實現該層的功能,這個過程就稱為封裝。
6.9 分用 / 解封裝
????當 幀
到達目的主機時,將沿著 協議棧 自底向上 依次傳遞。各層協議依次處理 幀
中 本層負責 的 頭部數據,以獲取所需的信息,并最終將處理后的 幀
交給 目標應用程序。這個過程稱為 分用(demultiplexing
)。分用是依靠頭部信息中的類型字段實現的。
7. 網絡通信的過程
????舉例:QQ 聊天,發送:nihao
注:僅供學習參考,如有不足,歡迎指正!