邢臺地區(qū)網(wǎng)站建設(shè)個人怎么在百度上做推廣
一、網(wǎng)絡(luò)通信基礎(chǔ)
1.IP地址
2.端口號
我們知道一臺主機上可能會有多個程序來同時使用網(wǎng)絡(luò),端口號就是用來區(qū)分一臺主機上的多個程序的。簡單來說:端口號就是用來定位主機上的進程的。
二、認(rèn)識協(xié)議
網(wǎng)絡(luò)協(xié)議就是通信雙方用于發(fā)送/接受數(shù)據(jù)格式的約定。
協(xié)議最終體現(xiàn)在網(wǎng)絡(luò)中傳輸數(shù)據(jù)包的格式。(值得注意的是在網(wǎng)絡(luò)通信中 協(xié)議是非常關(guān)鍵的)
1.五元組
在TCP/IP協(xié)議中,用五元組來表示一個網(wǎng)絡(luò)通信:
1.源IP:標(biāo)識源主機
2.源端口:標(biāo)識源主機中該次通信發(fā)送數(shù)據(jù)的進程
3.目的IP:標(biāo)識目的主機
4.目的端口:標(biāo)識源主機中接收該次通信數(shù)據(jù)的進程
5.協(xié)議類型 :標(biāo)識發(fā)送和接收進程雙方約定的數(shù)據(jù)包格式
2.協(xié)議分層
由于網(wǎng)絡(luò)通信這個過程非常復(fù)雜,如果我們設(shè)計一個協(xié)議,完成網(wǎng)絡(luò)通信中方方面面的問題,勢必會使這個協(xié)議非常復(fù)雜,非常龐大。
所以我們選擇拆分這種做法,把一個大的協(xié)議拆成若干個小的,功能單一協(xié)議,這么做又會導(dǎo)致拆完后的協(xié)議太多了,甚至?xí)袔资习賯€。所以我們將這些小的協(xié)議歸類,引入分層這個概念。
協(xié)議分層:只有相鄰兩層的協(xié)議可以進行交互。上層協(xié)議可以調(diào)用下層協(xié)議。下層協(xié)議可以給上層提供服務(wù)。(協(xié)議之間的交互不能跨層進行)
這樣做的好處在于:
1.上層協(xié)議不需要了解下層協(xié)議的細節(jié)
2.分層之后,靈活的替換其中的某一層,對于整體的工作過程影響很小。
1.OSI七層網(wǎng)絡(luò)模型

但是這一套分層的體系過于復(fù)雜,實際真實的網(wǎng)絡(luò)分層方式是更簡化的。?
2.TCP/IP五層(四層)協(xié)議模型
?應(yīng)用層 | 應(yīng)用程序之間的溝通 |
?傳輸層 | 兩個任意設(shè)備之間的通信(不考慮中間過程,只考慮起點和終點) |
?網(wǎng)絡(luò)層 | 兩個任意設(shè)備直接如何進行通信(這兩個設(shè)備之間可能隔著很多的交換機和路由器) |
數(shù)據(jù)鏈路層 | 完成兩個相鄰的設(shè)備之間如何進行通信的(通過網(wǎng)線把電腦連到交換機|路由器上) |
? 物理層 | 規(guī)定了網(wǎng)絡(luò)通信的一些硬件設(shè)施符合的要求 |
有些資料把物理層和數(shù)據(jù)鏈路層看作一個整體。?
?主機: 工作過程涉及到 從物理層-->應(yīng)用層
?路由器 :? 工作過程涉及到 從物理層--.>網(wǎng)絡(luò)層
?交換機:? 工作過程涉及到 從物理層-->數(shù)據(jù)鏈路層
三、網(wǎng)絡(luò)數(shù)據(jù)通信的基本流程
網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù),本質(zhì)上都是“字符串”或者“二進制的bit流”
例如我們通過 qq 發(fā)送hello給對方
1.應(yīng)用程序獲取到用戶輸入,構(gòu)造一個應(yīng)用層的數(shù)據(jù)包。這個應(yīng)用層數(shù)據(jù)包就會遵守應(yīng)用層協(xié)議(往往是開發(fā)這個程序的程序員自己定義的(此處假設(shè)這樣的協(xié)議格式:發(fā)送者的qq,消息的時間,消息正文))。
2.應(yīng)用程序調(diào)用 傳輸層提供的接口(API),把數(shù)據(jù)交給傳輸層,傳輸層拿到數(shù)據(jù)之后,構(gòu)造出“傳輸層數(shù)據(jù)包”。傳輸層的協(xié)議主要是:TCP UDP
3.傳輸層構(gòu)造好數(shù)據(jù)后,繼續(xù)調(diào)用網(wǎng)絡(luò)層的API,把傳輸層的數(shù)據(jù)包交給網(wǎng)絡(luò)層,網(wǎng)絡(luò)層繼續(xù)進行處理。? ?網(wǎng)絡(luò)層最主要的協(xié)議:IP協(xié)議
4.IP協(xié)議繼續(xù)調(diào)用數(shù)據(jù)鏈路層的API,把IP數(shù)據(jù)包交給數(shù)據(jù)鏈路層。
數(shù)據(jù)鏈路層中核心協(xié)議: “以太網(wǎng)”
5.以太網(wǎng)會繼續(xù)把這樣的數(shù)據(jù)交給硬件設(shè)備(網(wǎng)卡)網(wǎng)卡會把上述二進制數(shù)據(jù),最終以 光信號/電信號/電磁波信號傳播出去。
從上層到下層,數(shù)據(jù)都要進一步加工(添加報頭)這個過程就叫做封裝。
分用,數(shù)據(jù)到達接收方主機,逐層進行解析:
1.數(shù)據(jù)到達接收方網(wǎng)卡,光電信號,網(wǎng)卡把光電信號還原成二進制0101,把二進制數(shù)據(jù)交給上層數(shù)據(jù)鏈路層。
2.數(shù)據(jù)鏈路層按照以太網(wǎng)協(xié)議解析,把報頭和報尾取出來,剩下的載荷往上傳遞給網(wǎng)絡(luò)層。
3.網(wǎng)絡(luò)層拿到這個數(shù)據(jù)之后按照IP協(xié)議的格式解析,再把載荷數(shù)據(jù)交給傳輸層。
4.傳輸層拿到數(shù)據(jù)后按照TCP協(xié)議來解析,取出載荷,交給應(yīng)用層。
5.qq應(yīng)用程序,解析應(yīng)用層數(shù)據(jù),拿到關(guān)鍵信息展示到頁面上。