【TCP/IP 协议】 TCP/IP 基础
總結 :?
通過學習 TCP/IP 基礎, 并總結相關筆記 和 繪制思維導圖 到博客上, 對 TCP/IP 框架有了大致了解, 之后開始詳細學習數據鏈路層的各種細節協議, 并作出筆記;
博客地址 :?http://blog.csdn.net/shulianghan/article/details/40045487
一. TCP/IP 分層
思維導圖 :?
TCP / IP 四層簡介 :?
-- 應用層 : Telnet, FTP, SMTP, SNMP, DNS, URI, HTML, HTTP 等協議;
-- 運輸層 : TCP, UDP, SCTP, DCCP, UDP-Lite 協議;
-- 網絡層 : IP, ICMP, IGMP, ARP 協議;
-- 鏈路層 : 設備驅動程序 與 網絡接口 (網卡);
1. 鏈路層 (數據鏈路層 / 網絡接口層)
鏈路層 (數據鏈路層 / 網絡接口層) 簡介 :?
-- 驅動程序 : 鏈路層包括 網絡相關的設備?的驅動程序, 驅動程序是操作系統與硬件之間進行交互的軟件, 相當與橋梁; ?
-- 網卡 : 一臺計算機有多個網卡 例如 eth0, wlan0 等; ?
-- 作用 : 該層主要處理與物理傳輸介質 (電纜, 光線, 無線) 相關的 物理接口細節相關問題; ?
-- 鏈路層提供者 : 鏈路層功能一般由 硬件 (網絡設備) 及其 驅動程序 提供;
2. 網絡層 (互聯網層)
(1) 網絡層簡介
網絡層 (互聯網層) 簡介 :?
-- 作用 : 處理分組在網絡中的活動, 如包傳輸的相關活動 分組選路, 通過該層, 傳輸層及以上的層次可以抽象甚至忽略網絡結構細節;
-- 包含的協議 : IP協議 (網際協議), ICMP 協議 (Internet 互聯網控制報文協議), IGMP 協議 (Internet 組管理協議);
-- 網絡層提供者 : 網絡層 和 傳輸層的功能 一般由?操作系統?提供;
網絡層相關設備分析?:?
-- 實現網絡層的設備?: 互聯網 就是 實現了 網絡層 功能的網絡, 互聯網的所有 主機 和 路由器 必須實現 IP 功能,?路由器 必須實現通過互聯網層?轉發分組數據包的功能;
-- 無須實現網絡層設備 : 對于其它的網絡設備 網橋, 中繼器, 集線器 就不用實現 IP 或者 ?TCP 功能;
(2) IP 協議
IP 協議 : 該協議 基于 IP 地址?轉發分包數據;
-- 使用 IP 地址標識 : 該協議 跨網絡傳送數據包, 整個互聯網可以通過 IP 地址作為主機的標識, 能夠發送接收數據;
-- IP 協議隱含功能 : IP 協議對上層透明, 該協議隱含 數據鏈路層 功能, 相互通信的主機 不管經過了 什么種類的數據鏈路層, 都可以進行通信;
-- 協議可靠性 : IP 協議是分組交換協議, 但是不具備重發機制, 分組數據包未打到目的主機也不會重發, 該協議屬于非可靠性傳輸協議;
(3) ICMP 協議
ICMP 協議 : IP 協議附屬協議, 用于主機 和 路由器間交換錯誤報文 和 其它重要信息;
-- 作用 : 當 IP 數據包在發送過程中無法到達目標主機時, 需要給發送端發一個異常通知, 就是 ICMP 數據包;
-- 使用場景 : 診斷網絡的健康狀況;
(4) ARP 協議 和 RARP 協議
ARP 協議 :?
-- 作用 : 從分組數據包 IP 地址解析物理地址 (MAC 地址) 協議;
RARP 協議 : 逆地址解析協議;
(5) IGMP 協議
IGMP 協議 (Internet 組網管理協議) : 把一個 UDP 數據報多播到多個主機;
3. 運輸層
(1) 運輸層簡介
運輸層簡介 :?
-- 作用 : 為兩臺主機上的應用程序提供端到端的通信, 通過 端口號 識別兩臺主機上哪些程序在跟哪些程序進行通信;?
-- 包含的協議 : TCP 協議 (傳輸控制協議), UDP 協議 (用戶數據報協議);?
(2) TCP 協議
TCP 協議 (傳輸控制協議) : 面向鏈接協議, 該協議為兩臺主機提供可靠的數據通信;?
-- 分塊傳網絡層 : 在 運輸層 中將 應用層 傳下來的數據分成數據塊;?
-- 確認分組 : 確認接收到數據的分組;?
-- 設置超時時間 : 為數據塊設置超時時間, 一旦超過超時時間就重新發送;?
TCP 協議優點 和 局限性 :?
-- 優點 : 保證兩個主機間通信可達, 能正確處理在傳輸過程中丟包, 亂序等異常情況, 其能夠有效利用帶寬, 緩解網絡擁堵;
-- 局限 : TCP 連接建立 和 斷開 至少需要 7次發包 和 收包, 導致流量浪費, TCP 中定義的各種為了提高網絡效率的規范 不理于視頻, 音頻傳輸;
(3) UDP 協議
UDP 協議 (用戶數據報協議) : 無連接協議;
-- 作用 : 提供服務簡單, 只將數據報分組發送到另一臺主機, 不關心數據報能否到達;?
-- 使用場景 : 分組數據較少, 多播, 廣播, 多媒體領域;
(4) TCP 與 UDP 比較
TCP 和 UDP 比較 :?
-- TCP :?TCP 協議提供了高可靠性的數據通信, 應用層可以忽略數據傳輸可靠性的細節;?
-- UDP : 使用該協議 必須在應用層考慮數據可靠性;?
4. 應用層
(1) 應用層簡介
應用層簡介 :?
-- 作用 : 處理應用程序中的細節;?
-- 包含的協議 : Telnet 遠程登錄, FTP 文件傳輸協議, SMTP 簡單郵件傳輸協議, SNMP 簡單網絡管理協議;?
(2) HTTP 協議?
HTTP 協議 : 該協議是 WEB 通信中的 瀏覽器 與 服務器 端通信所用的協議, 傳輸數據的格式是 HTML;
-- 協議所在層 : HTTP 屬于 WWW 協議中的一種, HTTP 協議對應 OSI 七層協議中的 表示層協議, 在 TCP/IP 協議中屬于 應用層協議;
(3) FTP 協議 (文件傳輸協議)
FTP 協議簡介 :?
-- 傳輸過程 : FTP 協議文件傳輸會建立兩個 TCP 連接, 一個是 傳輸請求時需要的控制連接, 一個是傳輸實際文件數據用的數據連接;
(4) TELNET 和 SSH 協議 (遠程登錄協議)
TELNET 協議 和 SSH 協議 : 這兩種協議是 TCP/IP 網絡中常用的兩種遠程登錄協議;
(5) SNMP 協議 (網絡管理協議)
SNMP 協議介紹 :?
-- 具體的管理過程 : 通過 網絡管理終端 (SNMP 管理器) 管理 服務器, 路由器 交換機等, 管理內容有 信息通知, 故障通知, 通知設置, 操作檢查, 配置變化 等;
-- 主要作用 : SNMP 協議可以對網絡上的設備進行遠程修改配置, 可以對大范圍復雜網絡進行有效管理, 檢查 SNMP 代理 是否正常運行,?可以讓管理員及時發現故障;
SNMP 協議組成 :?
-- SNMP 代理 (Agent) : SNMP 管理的 路由器, 服務器, 交換機, PC機?等設備叫做 SNMP 代理;
-- 管理器 (Manager) : SNMP 中進行管理的那部分, 即網絡管理終端;
MIB 協議 (Manager Infomation Base) : SNMP 代理端 (即 主機, 路由器, 交換機) 保存 網絡接口信息, 通信數據量, 異常數據量 以及 設備溫度 等信息, 訪問這些數據的協議是 MIB 協議;
5. 每層之間的關系
示例 : 網頁瀏覽, 在瀏覽器端瀏覽網頁;
-- 應用層 : 使用 HTTP 協議;
-- 運輸層 : 使用 TCP 協議;
-- 網絡層 : 使用 IP 協議;
-- 鏈路層 : 網絡設備驅動程序, 和網卡物理接口;
協議執行位置 :?
-- 用戶空間 : 應用層協議 一般是在用戶進行中處理, 運行在用戶空間;
-- 內核空間 : 運輸層 網絡層 鏈路層 一般運行在內核空間中;
下層協議對上層透明 : 高層的協議不關心 也不處理 低層協議 相關數據, 對下層協議一無所知;
5. 網絡層 和 運輸層的區別
TCP/IP 四層協議的作用 和 區別 :?
-- 鏈路層 和 應用層 的明顯作用 :?鏈路層處理物理介質相關的傳輸媒介 以及物理設備相關的細節, 應用層?處理與應用程序相關的數據;
-- 網絡層 和 運輸層 區別不明顯 : 兩層主要是網絡傳輸相關, 這兩層區分并不是很明確;
不同類型網絡連接 : 以太網, 令牌環網, FDDI (光線分布式數據接口), 點對點鏈接, 這些網絡中的主機互相都可以通信;
-- 路由器 : 路由器可以將多個不同類型的網絡連接起來;
-- 路由器接口 : 路由器必須有多個網絡接口,?
網橋與路由器區別 :?
-- 網橋?:?網橋 在鏈路層 連接網絡;?
-- 路由器 : 路由器 是在網絡層連接網絡;
端系統 和 中間系統 : 網絡層是個中間系統, 傳輸層是個端系統;
-- 端系統 (End System) : 應用層 和 傳輸層 使用端到端 (End-to-end) 協議;
-- 中間系統 (Intermediate System) : 網絡層 使用逐跳 (Hop-by-hop) 協議;
網絡層 和 運輸層作用 : 傳輸層 和 網絡層負責的功能不同;
-- 網絡層 : IP 協議提供不可靠服務, 將分組從源節點 送到 目的節點;
-- 傳輸層 : TCP 協議采用超時重傳 和 端到端分組確認等機制, 保證可靠性;
二. TCP / IP 相關網絡知識
1. 互聯網地址
(1) 按照 IP 地址格式分類
IP 地址分類 : IP 地址長度 32bit, 4 個字節, 每個 IP 地址都由 標識位, 網絡號, 和 主機號三部分組成;
-- 點分十進制 : 32 位二進制數, 每個十進制整數對應一個字節;
-- 網絡區分 : 第一個十進制整數即可區分 IP 地址類型, 0 ~ 127 A類, 128 ~ 191 B類, 192 ~ 223 C類, 224 ~ 239 D類, 240 ~ 225 E類;?
A類地址 :?
-- 組成 : 標識位 0, 網絡號 7 位, 主機號 24 位,?
-- 十進制取值范圍 : 0.0.0.0 ~ 127.255.255.255;?
-- 二進制取值范圍 : 0(標識位) 0000000(網絡號) 00000000 00000000 00000000(主機號) ~ 0(標識位) 1111111(網絡號) 11111111 11111111 11111111(主機號);
B類地址 :?
-- 組成 : 標識位 10, 網絡號 14 位, 主機號 16 位;
-- 十進制取值范圍 : 128.0.0.0 ~ 191.255.255.255;
-- 二進制取值范圍 : 10(標識位) 000000 00000000(網絡號) 00000000 00000000(主機號) ~ 10(標識位) 111111(網絡號) 11111111 11111111 11111111(主機號);
C類地址 :?
-- 組成 : 標識位 110, 網絡號 21位, 主機號 8位;
-- 十進制取值范圍 : 192.0.0.0 ~ 223.255.255.255;
-- 二進制取值范圍 : 110(標識位) 00000 00000000 00000000(網絡號) 00000000(主機號) ~ 110(標識位) 11111 11111111 11111111(網絡號) 11111111(主機號)
D類地址 :?
-- 組成 : 標識位 1110, 多播組號 28 位;
-- 十進制取值范圍 : 224.0.0.0 ~ 239.255.255.255;
-- 二進制取值范圍 : 1110(標識位) 0000 00000000 00000000 00000000 00000000(多播組號) ~ 1110(標識位) 1111 11111111 11111111 11111111(多播組號);
E類地址 :?
-- 組成 : 標識位 11110, 保留 27 位;
-- 十進制取值范圍 : 240.0.0.0 ~ 255.255.255.255;
-- 二進制取值范圍 : 11110(標識位) 000 00000000 00000000 00000000(保留位) ~ 11110(標識位) 111 11111111 11111111 11111111(保留位);
(2) 按照 目的地址 分類
按目的地址分類 IP 地址 :?
-- 單播地址 : 目的端為單個主機;
-- 廣播地址 : 目的端是給定網絡的所有主機;
-- 多播地址 : 目的端是同一組的所有主機;
(3) IP 地址管理機構
互聯網絡信息中心 (Internet Network Information Center) 簡稱 InterNIC, 職責是 分配網絡號;
2. 域名
DNS (域名系統) : DNS 是一個分布式數據庫, 提供 IP 地址 和 主機名之間的映射;
地址解析函數 :?
-- 正函數 : 給定主機名, 查詢主機 IP 地址;
-- 逆函數 : 給定主機 IP 地址, 查詢主機名;
3. 端口號
端口號簡介 : 端口號是 TCP UDP 協議識別主機上的應用程序用的;
-- 端口號位數 : 端口號是 16 bit 的數字, 取值范圍 1 ~ 65535;
-- 端口號所在層 : 端口號是?運輸層?使用的, 主要配合 TCP UDP 使用, 脫離這兩個協議端口號將毫無用處;
客戶端口號 (臨時端口號) : TCP/IP 提供給客戶端的臨時端口號是 1024 ~ 5000;
-- 臨時端口不重要 : 客戶端對臨時端口號不關心, 保證端口號唯一即可;
服務端口號 :?
-- 端口號定義位置 : 在 UNIX 系統的文件的 /etc/services 包含了系統服務的端口號, 使用 sudo vim /etc/services 命令查看 Ubuntu 系統的端口號;
--?服務端口號規律 : TCP/IP 提供的服務端口號都使用的 知名端口號, 即 1 ~ 1023 之間;
-- 服務端口號示例 : ?FTP 服務 TCP 端口號 : 21, Telnet 服務 TCP 端口號 : 23, TFTP 服務 UDP 端口號 : 69;
tcpmux 1/tcp # TCP port service multiplexer echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users daytime 13/tcp daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/tcp # message send protocol msp 18/udp chargen 19/tcp ttytst source chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp fsp 21/udp fspd ssh 22/tcp # SSH Remote Login Protocol ssh 22/udp telnet 23/tcp smtp 25/tcp mail
三. TCP/IP 分層通信處理過程
1. 數據包首部信息
(1) 首部信息結構
首部信息結構 : TCP/IP 中每個分層都會對數據附加一個首部, 首部包含了該層的相關信息;
-- 傳輸層 : (TCP 包首部)(TCP 中的數據) ;
-- 網絡層 : (IP 包首部)( IP 數據 :?(TCP 包首部)(TCP 中的數據)) ;
-- 鏈路層 : (以太網 包首部) ( 以太網數據 :?(IP 包首部)(?IP 數據?:?(TCP 包首部)(TCP 中的數據))) ;
(2) TCP/IP 數據相關概念
包 : TCP / IP 協議中, 每一層的數據都可以成為包, 是一個全能術語;
幀 (以太網數據幀) : 鏈路層包的單位;
數據包 (IP數據報) : 網絡層以上包的單位, IP 給 鏈路層的數據包稱為 IP 數據報 (IP datagram);
段 (TCP 報文段) : TCP 數據包, TCP 傳遞給 IP 的數據包成為 TCP 報文段 (TCP segment);
消息 : 應用層的數據包;
2. 封裝 和 分用
(1) 封裝
以太網數據幀 : 鏈路層的 數據幀長度在 46 ~ 1500 字節之間;
每個首部的大小 : 以太網首部 | IP 首部 | TCP 首部 | 應用數據(Appl | 用戶數據) | 以太網尾部 ;
-- 以太網首部 : 14字節, 需要發送 接收 IP ARP RARP 數據, 上面三種數據包需要標識;
-- IP 首部 : 20字節, 該首部 有一個 8bit 的數值, 用于標識 TCP(標識6) UDP(標識17) ICMP(標識1) IGMP(標識2) 協議;?
-- TCP 首部 : 20字節, 這里也可以是 UDP 首部, 由于 UDP 首部是不可靠的, 數據量比較少, 只有 8字節, TCP 和 UDP 需要 16bit 的端口號標識應用程序;
(2) 分用
分用定義 : 主機在鏈路層接收到 以太網數據幀, 該數據會逐層上升, 在每層都去掉該層的首部信息, 并校驗首部信息是否正確, 該過程就是分用;
(3) 封裝 和 分用 總結
封裝分用總結 : 發送數據 從應用層到鏈路層 逐層加數據包 是封裝, 接收數據 從鏈路層到應用層 逐層解包 是分用;
四. TCP / IP 通信示例
1. 數據包發送過程
(1) 應用層處理
準備數據 : 應用層經過用戶應用程序處理, 準備要發送的信息;
(2) 傳輸層處理 (TCP模塊)
TCP 連接管理 : 應用層發送數據時, TCP 模塊建立連接, 使用這個連接發送數據, 發送完畢之后斷開連接;
封裝 TCP 首部 : 為了實現可靠的 TCP 傳輸, 需要在應用層的信息的前端附加一個 TCP 首部;
-- TCP 首部組成 : 源端口號, 目的端口號, 序號, 校驗和;
(3) 網絡層處理 (IP 模塊)
封裝 IP 首部 : TCP 模塊將 TCP首部 和 TCP 數據合成 TCP 報文段, 傳入到 IP 模塊, IP 模塊在 TCP 報文段前端加上 IP 首部;
-- IP 首部組成 : 接收端 IP 地址, 發送端 IP 地址, 緊隨其后的是 UDP/TCP 協議識別標識;
送到鏈路層 :?
-- 查找路徑 : IP 數據報 生成后, 參考路由控制表決定該 IP 數據報的 路由 或 主機 路徑;
-- 查詢 MAC 地址 : 利用 ARP 查找 MAC 地址;
-- 提交到鏈路層 : IP 數據報提交給鏈路層 需要將 MAC 地址 和 IP 地址一起提交到下一層;
(4) 鏈路層處理
封裝 以太網 首部 : 網絡層傳遞 IP 數據報到鏈路層, 在該層給 IP 數據報附加 以太網首部 并發送出去;
-- 以太網首部組成 : 發送端 MAC 地址, 接收端 MAC 地址, 標識以太網類型(PPP, 令牌環等)的以太網數據協議;
封裝 以太網 尾部 : 封裝完首部之后, 還需要加上一個 FCS 尾部, 該 FCS 由硬件計算生成, 判斷是否因為物理介質干擾而導致數據被破壞;
(5) 包首部添加流程
添加流程 : 應用層信息 -> TCP (UDP) 包首部 -> IP 包首部 -> 以太網包首部 -> 以太網包尾部;
包首部信息規律 : 每層添加的包首部 一般都包含 發送 和 接收 地址信息, 上一層的協議類型;
-- 鏈路層 : 使用 發送端 和 接收端的 MAC 地址;
-- 網絡層 : 使用 發送段 和 接收端的 IP 地址, 該層還需要一個 協議類型, 說明在傳輸層使用的是 TCP 還是 UDP 協議;
-- 傳輸層 : 使用 發送段 和 接收端的 端口號;
2. 數據包接收過程
(1) 鏈路層處理
鏈路層處理流程 : 判定地址有效行 -> 確定上層協議類型 -> 傳遞給上層對應協議處理模塊;
-- 判定地址有效性 : 主機收到 以太網數據幀后, 解析以太網包頭, 查看 目的端 MAC 地址是否為本機地址, 如果不是丟棄該 幀;
-- 判定協議類型 : 查找 以太網數據包首部中的 類型域, 確定該數據包是 IP 數據報, 還是 ARP 協議, 如果無法識別協議類型, 丟棄;
-- 傳遞給對應模塊處理 : 如果是 IP 數據報, 傳遞給 IP 模塊處理, 如果是 ARP 協議, 就傳遞給 ARP 模塊處理;
(2) 網絡層處理 (IP 模塊)
IP 模塊處理流程 (沒有路由器的情況) : 判定 IP 地址 -> 判定協議;
-- 判定 IP : 分析 IP 包首部的 目的 IP 地址, 如果 IP 地址是本機地址, 就進行下面的操作;
-- 判定協議 : 判定 上層協議是 TCP 還是 UDP, ?交給對應模塊處理;
有路由器的情況 : 如果有路由器, 接收端地址一般是 路由器的 IP 地址, 需要查詢路由表, 查詢到 目的主機 或 路由器 后在轉發數據包;
(3) 傳輸層處理 (TCP 模塊)
傳輸層處理流程 : 校驗數據完整性 -> 校驗數據次序 -> 校驗程序端口 -> 發送回執 -> 送到應用層;
-- 校驗完整性 : TCP 模塊接收到數據包后, 首先計算校驗和, 判斷數據是否被破壞;
-- 校驗次序 : 檢查數據包的序號, 查看是否在按照次序接收數據;
-- 校驗端口號 : 通過端口號獲取具體的應用程序;
-- 發送回執 : 數據接收完畢后, 發送一個回執給發送端, 如果發送端未收到回執, 發送端會一直發送數據給接收端;
-- 傳遞給應用層 : 數據被接收以后, 會根據端口號識別應用程序, 將數據傳遞給那個應用程序;
博客地址?:?http://blog.csdn.net/shulianghan/article/details/40045487
總結
以上是生活随笔為你收集整理的【TCP/IP 协议】 TCP/IP 基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 应用开发】 Actio
- 下一篇: 【Android 应用开发】 自定义 圆