Linux網絡基礎
@TOC
零、前言
本章將開始對linux網絡編程進行系統的學習,而這篇主要學習網絡的基本知識
一、計算機網絡背景
概念:
網絡本質是一個層狀結構,同時也是操作系統的一部分
示圖:
網絡發展
獨立模式:
計算機之間相互獨立
示圖:
網絡互聯
用戶之間需要交互,在計算機層面即計算機之間數據需要進行交互:多臺計算機連接在一起, 完成數據共享
示圖:
局域網LAN:
計算機數量更多了, 通過交換機和路由器連接在一起
示圖:
廣域網WAN
將遠隔千里的計算機都連在一起
示圖:
注:所謂 “局域網” 和 “廣域網” 只是一個相對的概念, 廣域網也可以看做一個比較大的局域網
二、認識協議
概念:
協議本質上是一種約定
計算機之間的傳輸媒介是光信號和電信號,通過 “頻率” 和 “強弱” 來表示 0 和 1 這樣的信息,要想傳遞各種不同的信息,就需要約定好雙方的數據格式
示圖:
網絡協議:
計算機生產廠商有很多,計算機操作系統也有很多,計算機網絡硬件設備還是有很多,如何讓這些不同廠商之間生產的計算機能夠相互順暢的通信? 就需要有人站出來,約定一個共同的標準大家都來遵守,這就是 網絡協議
1、網絡協議
協議分層:
因為網絡本質就是一個層狀結構,所以對于網絡協議也需要進行分層制定協議,便于進行同層之間的數據交流
示例:打電話
注:實際的網絡通信會更加復雜, 需要分更多的層次,而分層最大的好處在于 “封裝”,每層之間進行解耦,也就是可以很方便的進行替換任何一層協議,提高可維護性
2、OSI七層模型
概念:
OSI(Open System Interconnection,開放系統互連)七層網絡模型稱為開放式系統互聯參考模型,是一個邏輯上的定義和規范,把網絡從邏輯上分為了7層,每一層都有相關、相對應的物理設備,比如路由器,交換機
OSI 七層模型是一種框架性的設計方法,其最主要的功能使就是幫助不同類型的主機實現數據傳輸
它的最大優點是將服務、接口和協議這三個概念明確地區分開來,概念清楚,理論也比較完整;通過七個層次化的結構模型使不同的系統不同的網絡之間實現可靠的通訊,但是它既復雜又不實用,實際中應用的是TCP/IP四層模型
示圖:
3、TCP/IP五層(或四層)模型
概念:
TCP/IP是一組協議的代名詞,它還包括許多協議,組成了TCP/IP協議簇
TCP/IP通訊協議采用了5層的層級結構,每一層都呼叫它的下一層所提供的網絡來完成自己的需求
各層作用:
物理層: 負責光/電信號的傳遞方式. 比如現在以太網通用的網線(雙絞 線)、早期以太網采用的的同軸電纜(現在主要用于有線電視)、光纖, 現在的wifi無線網使用電磁波等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等. 集線器(Hub)工作在物理層
數據鏈路層: 負責設備之間的數據幀的傳送和識別. 例如網卡設備的驅動、幀同步(就是說從網線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到沖突就自動重發)、數據差錯校驗等工作. 有以太網、令牌環網, 無線LAN等標準. 交換機(Switch)工作在數據鏈路層
網絡層: 負責地址管理和路由選擇. 例如在IP協議中, 通過IP地址來標識一臺主機, 并通過路由表的方式規劃出兩臺主機之間的數據傳輸的線路(路由). 路由器(Router)工作在網路層
傳輸層: 負責兩臺主機之間的數據傳輸. 如傳輸控制協議 (TCP), 能夠確保數據可靠的從源主機發送到目標主機
應用層: 負責應用程序間溝通,如簡單電子郵件傳輸(SMTP)、文件傳輸協議(FTP)、網絡遠程訪問協議(Telnet)等. 我們的網絡編程主要就是針對應用層
示圖:
注意:
物理層我們考慮的比較少,因此很多時候也可以稱為 TCP/IP四層模型
一般而言,對于一臺主機,它的操作系統內核實現了從傳輸層到物理層的內容;對于一臺路由器,它實現了從網絡層到物理層;對于一臺交換機,它實現了從數據鏈路層到物理層;對于集線器,它只實現了物理層;但是并不絕對,很多交換機也實現了網絡層的轉發,很多路由器也實現了部分傳輸層的內容(比如端口轉發)
三、網絡傳輸基本流程
同一個網段內的兩臺主機進行文件傳輸
示圖:
跨網段的主機的文件傳輸. 數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器
示圖:
1、數據包封裝和分用
概念:
不同的協議層對數據包有不同的稱謂,在傳輸層叫做段(segment),在網絡層叫做數據報 (datagram),在鏈路層叫做幀(frame)
應用層數據通過協議棧發到網絡上時,每層協議都要加上一個數據首部(header),稱為封裝(Encapsulation)
首部信息中包含了一些類似于首部有多長,載荷(payload)有多長,上層協議是什么等信息
數據封裝成幀后發到傳輸介質上,到達目的主機后每層協議再剝掉相應的首部,根據首部中的 “上層協議字段” 將數據交給對應的上層協議處理
經過封裝和分用的過程,對于網絡交互的接收和發送兩方,每一層所看到的數據都是一樣的
數據和報頭的組合叫做數據包,而數據又被叫做有效載荷
其實在實際封裝的過程中,不僅需要對數據進行添加報頭,還需要解決報頭和有效數據的分界問題,因為當數據包傳送到對方的網卡上時,對方還需要進行解包
下圖為數據封裝的過程:
下圖為數據分用的過程:
2、局域網通信
局域網通信概念及過程:
在局域網中,所有的主機可以直接通訊
在數據鏈路層,有一個mac地址/ 網卡硬件地址/ 或者序列號,是唯一的
根據主機的mac地址確定是那一個主機發送的數據包,因為數據包的報頭里存放了發出方以及接收方的mac地址,而如果其他的主機如果再接受到了該數據包,如果mac地址不匹配就會棄包,如果發到了對應的主機,成功接收后也能知道是誰發的數據
如果再局域網中有多臺主機進行通信,是會發生數據碰撞的,多個主機同時往局域網中塞入數據,而數據之間發生了數據碰撞就會變成垃圾數據,對應的主機檢測碰撞后進行等待再發送,避免再次碰撞
局域網廣播通信:
在局域網中廣播的實現條件是,將目標主機設計為約定好的mac地址在局域網中不存在的,所有主機都約定好這個地址是廣播地址,廣播地址一般是:0xffff,而所有的主機都可以收到由廣播發送的數據包,并對他進行向上層交付
局域網交換機的作用:
會將某一個片區發生碰撞的數據包進行過濾,不再轉發,只轉發合法的數據幀,減低數據碰撞混亂的情況的概率
四、網絡中的地址管理
1、認識IP地址
IP協議有兩個版本, IPv4和IPv6
IP地址是在IP協議中, 用來標識網絡中不同主機的地址
對于IPv4來說,IP地址是一個4字節,32位的整數
我們通常也使用 “點分十進制” 的字符串表示IP地址,例如 192.168.0.1 ; 用點分割的每一個數字表示一個字節, 范圍是 0 - 255
2、認識MAC地址
MAC地址用來識別數據鏈路層中相連的節點
長度為48位, 及6個字節,一般用16進制數字加上冒號的形式來表示(例如: 08:00:27:03:fb:19)
在網卡出廠時就確定了,不能修改,mac地址通常是唯一的
注:虛擬機中的mac地址不是真實的mac地址, 可能會沖突;也有些網卡支持用戶配置mac地址
linux TCP/IP 網絡
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。