一、網(wǎng)絡(luò)協(xié)議與協(xié)議分層
“協(xié)議” 是一種約定
1.1 為什么要分層
- 軟件設(shè)計方面的優(yōu)勢—低耦合
- 分層依據(jù):功能比較集中,耦合度較高的模塊—高內(nèi)聚
- 每一層都要解決特定的問題
每一層都有自己匹配的協(xié)議,每一層協(xié)議都解決自己的問題
1.2 OSI七層模型
OSI(Open System Interconnection,開放系統(tǒng)互連)七層網(wǎng)絡(luò)模型稱為開放式系統(tǒng)互聯(lián)參考模型,是一個邏輯上的定義和規(guī)范;把網(wǎng)絡(luò)從邏輯上分為了7層. 每一層都有相關(guān)、相對應(yīng)的物理設(shè)備,比如路由器,交換機(jī);
但是, 它既復(fù)雜又不實用; 所以我們按照TCP/IP四層模型來講解
1.3 TCP/IP五層(或四層)模型
物理層: 負(fù)責(zé)光/電信號的傳遞方式. 比如現(xiàn)在以太網(wǎng)通用的網(wǎng)線(雙絞 線)、早期以太網(wǎng)采用的的同軸電纜(現(xiàn)在主要用于有線電視)、光纖, 現(xiàn)在的wifi無線網(wǎng)使用電磁波等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等. 集線器(Hub)工作在物理層.
數(shù)據(jù)鏈路層: 負(fù)責(zé)設(shè)備之間的數(shù)據(jù)幀的傳送和識別. 例如網(wǎng)卡設(shè)備的驅(qū)動、幀同步(就是說從網(wǎng)線上檢測到什么信號算作新幀的開始)、沖突檢測(如果檢測到?jīng)_突就自動重發(fā))、數(shù)據(jù)差錯校驗等工作. 有以太網(wǎng)、令牌環(huán)網(wǎng), 無線LAN等標(biāo)準(zhǔn). 交換機(jī)(Switch)工作在數(shù)據(jù)鏈路層.
網(wǎng)絡(luò)層: 負(fù)責(zé)地址管理和路由選擇. 例如在IP協(xié)議中, 通過IP地址來標(biāo)識一臺主機(jī), 并通過路由表的方式規(guī)劃出兩臺主機(jī)之間的數(shù)據(jù)傳輸?shù)木€路(路由). 路由器(Router)工作在網(wǎng)路層.
傳輸層: 負(fù)責(zé)兩臺主機(jī)之間的數(shù)據(jù)傳輸. 如傳輸控制協(xié)議 (TCP), 能夠確保數(shù)據(jù)可靠的從源主機(jī)發(fā)送到目標(biāo)主機(jī).
應(yīng)用層: 負(fù)責(zé)應(yīng)用程序間溝通,如簡單電子郵件傳輸(SMTP)、文件傳輸協(xié)議(FTP)、網(wǎng)絡(luò)遠(yuǎn)程訪問協(xié)議(Telnet)等. 我們的網(wǎng)絡(luò)編程主要就是針對應(yīng)用層
二、網(wǎng)絡(luò)傳輸流程
2.1 了解局域網(wǎng)
一、協(xié)議報頭
- 協(xié)議每一層都有,每一個協(xié)議的最終表現(xiàn)就是協(xié)議都要有報頭(快遞盒上的快遞單)
- 協(xié)議通常是通過協(xié)議報頭來表達(dá)的
- 每一份數(shù)據(jù)最終在被發(fā)送或者在不同的協(xié)議層中,都要有報頭
二、局域網(wǎng)
- 兩臺局域網(wǎng)的主機(jī)能夠直接通信
- 通信原理:每一臺主機(jī)都有網(wǎng)卡,每一張網(wǎng)卡都有自己的MAC地址 ,全球唯一。
2.2 同一網(wǎng)段內(nèi)的兩臺主機(jī)進(jìn)行文件傳輸
封裝:有效載荷+各層報頭(用誰的協(xié)議加誰的報頭)
解包:將報頭和有效載荷分離的過程
分用:將有效載荷交給指定協(xié)議解包的過程
報文=報頭+有效載荷
以上我們可以認(rèn)為:同層協(xié)議在直接通信,也可以理解成向下交付。
2.3 跨網(wǎng)段的主機(jī)的文件傳輸
同層協(xié)議看到的報文都是一樣的
最后一層與IP層通過路由器,經(jīng)過解包與重新封包之后,再去解包分用
在上圖中,路由器橫跨兩個網(wǎng)絡(luò),則有兩個網(wǎng)絡(luò)接口:路由器和以太網(wǎng)屬于同一個局域網(wǎng);路由器也和令牌環(huán)網(wǎng)屬于同一個局域網(wǎng),這樣兩個不同的局域網(wǎng)下的主機(jī)就能通過路由器實現(xiàn)數(shù)據(jù)包轉(zhuǎn)發(fā)
IP層及IP協(xié)議存在的意義之一:屏蔽底層網(wǎng)絡(luò)的差異,如上圖中的網(wǎng)卡層。
三、數(shù)據(jù)包封裝和分用
- 不同的協(xié)議層對數(shù)據(jù)包有不同的稱謂,在傳輸層叫做段(segment),在網(wǎng)絡(luò)層叫做數(shù)據(jù)報 (datagram),在鏈路層叫做幀(frame).
- 應(yīng)用層數(shù)據(jù)通過協(xié)議棧發(fā)到網(wǎng)絡(luò)上時,每層協(xié)議都要加上一個數(shù)據(jù)首部,稱為封裝
- 首部信息中包含了一些類似于首部有多長, 載荷(payload)有多長, 上層協(xié)議是什么等信息.
- 數(shù)據(jù)封裝成幀后發(fā)到傳輸介質(zhì)上,到達(dá)目的主機(jī)后每層協(xié)議再剝掉相應(yīng)的首部, 根據(jù)首部中的 “上層協(xié)議字段” 將數(shù)據(jù)交給對應(yīng)的上層協(xié)議處理
四、網(wǎng)絡(luò)中的地址管理
4.1 IP地址
- IP地址是在IP協(xié)議中, 用來標(biāo)識網(wǎng)絡(luò)中不同主機(jī)的地址,通常使用于廣域網(wǎng)中,局域網(wǎng)中也能使用;
- 對于IPv4來說, IP地址是一個4字節(jié), 32位的整數(shù);對于IPv6來說, IP地址是一個16字節(jié), 128位的整數(shù),暫時不需要關(guān)注IPv6
- 我們通常也使用 “點分十進(jìn)制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用點分割的每一個數(shù)字表示一個字節(jié), 范圍是 0 - 255;
IP地址可以理解為某個路途的起點和終點(源IP和目的IP);在網(wǎng)絡(luò)傳輸中提供方向文章來源:http://www.zghlxwxcb.cn/news/detail-442738.html
4.2 MAC地址
MAC地址用來識別數(shù)據(jù)鏈路層中相連的節(jié)點;在網(wǎng)卡出廠時就確定了,不能更改!
MAC地址可以理解為某個路途中,中間相鄰的節(jié)點(源MAC地址和目的MAC地址);在網(wǎng)絡(luò)傳輸中提供可行性文章來源地址http://www.zghlxwxcb.cn/news/detail-442738.html
到了這里,關(guān)于linux【網(wǎng)絡(luò)編程】之網(wǎng)絡(luò)基礎(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!