pos機cdma網(wǎng)線,前端需要了解的計算機網(wǎng)絡(luò)知識

 新聞資訊2  |   2023-06-26 09:10  |  投稿人:pos機之家

網(wǎng)上有很多關(guān)于pos機cdma網(wǎng)線,前端需要了解的計算機網(wǎng)絡(luò)知識的知識,也有很多人為大家解答關(guān)于pos機cdma網(wǎng)線的問題,今天pos機之家(m.afbey.com)為大家整理了關(guān)于這方面的知識,讓我們一起來看下吧!

本文目錄一覽:

1、pos機cdma網(wǎng)線

pos機cdma網(wǎng)線

本文主要目的也是為了非科班前端補充計算機科班基礎(chǔ)知識,比如你要做node開發(fā),不熟悉數(shù)據(jù)如何在網(wǎng)絡(luò)中傳輸?shù)脑?,理解很多API會比較疑惑,那接下來,來看看這篇為你精心準備的文章吧!

這些內(nèi)容其實比較枯燥,但我采取圖文并茂的形式,并且對于不重要的知識會標(biāo)注,盡量減少閱讀的枯燥感。啥也不說了,喝口水,開擼!

1、計算機網(wǎng)絡(luò)概念(簡單掃一眼即可)

計算機網(wǎng)絡(luò):是一個將分散的、具有獨立功能的計算機系統(tǒng),通過通信設(shè)備與線路連接起來,由功能完善的軟件實現(xiàn)資源共享和信息傳遞的系統(tǒng)。

這里需要注意的是,按分布范圍,計算機網(wǎng)絡(luò)里有局域網(wǎng)LAN和廣域網(wǎng)WAN, 其中局域網(wǎng)的代表以太網(wǎng),以及這兩種網(wǎng)絡(luò)最重要的區(qū)分點,局域網(wǎng)基于廣播技術(shù),廣域網(wǎng)基于分組交換技術(shù)。(這些概念聽一下就行,后面會詳細介紹,因為理解廣播和分組交換技術(shù),大體上就理解了局域網(wǎng)和廣域網(wǎng))

2、衡量計算機網(wǎng)絡(luò)的性能的指標(biāo)

這些內(nèi)容主要是為了學(xué)習(xí)后面具體的協(xié)議,以及分析這些協(xié)議的報文時,需要掌握的基本概念。

2.1 速率

速率就是數(shù)據(jù)傳輸(數(shù)據(jù)是指0和1)的速率,比如你用迅雷下載,1兆每秒,來衡量目前數(shù)據(jù)傳輸?shù)目炻K怯嬎銠C網(wǎng)絡(luò)中最重要的一個性能指標(biāo)。

2.2 帶寬

在計算機網(wǎng)絡(luò)中,網(wǎng)絡(luò)帶寬是指在單位時間(一般指的是1秒鐘)內(nèi)能傳輸?shù)臄?shù)據(jù)量,比如說你家的電信網(wǎng)絡(luò)是100兆比特,意思是,一秒內(nèi)最大的傳輸速率是100兆比特。

2.3 吞吐量

吞吐量表示在單位時間內(nèi)通過某個網(wǎng)絡(luò)(或信道、接口)的數(shù)據(jù)量。

以上三點,我們舉個案例

一條路每秒最多能過100輛車(寬帶就相當(dāng)于100輛/秒)。而并不是每秒都會有100輛車過,假如第一秒有0輛,第二秒有10輛...,(但是最多不能超過100輛)。所以有第1秒0輛/秒,第2秒10輛/秒,第3秒30輛/秒,這不能說帶寬多少吧,于是就用吞吐量表示具體時間通過的量有多少(也有可能等于帶寬的量)。由此可知帶寬是說的是最大值速率,吞吐量說的是某時刻速率。但吞吐量不能超過最大速率。2.4 時延

時延是指數(shù)據(jù)(報文/分組/比特流)從網(wǎng)絡(luò)(或鏈路)的一端傳送到另一端所需的時間。單位是s。 時延分一下幾種:

(1)發(fā)送時延

就是說我跟你說話,從我開始說,到說話結(jié)束這段時間,就是發(fā)送時延。

(2)傳播時延

如gif圖所示,信道上第一個比特開始,到最后一個比特達到主機接口需要的時間就是傳播時延。

(3)排隊時延

分組在經(jīng)過網(wǎng)絡(luò)傳輸時,要經(jīng)過很多的路由器。但分組在進入路由器后要先在輸入隊列中排隊等待處理。在路由器確定了轉(zhuǎn)發(fā)接口后,還要在輸出隊列中排隊等待轉(zhuǎn)發(fā),這就產(chǎn)生了排隊時延。排隊時延的長短往往取決于網(wǎng)絡(luò)當(dāng)時的通信量,當(dāng)網(wǎng)絡(luò)的通信量很大時會發(fā)生排隊溢出,是分組丟失。

(4)處理時延

路由器或主機在收到數(shù)據(jù)包時,要花費一定時間進行處理,例如分析數(shù)據(jù)包的首部、進行首部差錯檢驗,查找路由表為數(shù)據(jù)包選定準發(fā)接口,這就產(chǎn)生了處理時延。

(5)往返時間(RTT)

在計算機網(wǎng)絡(luò)中,往返時間也是一個重要的性能指標(biāo),它表示從發(fā)送方發(fā)送數(shù)據(jù)開始,到發(fā)送方收到來自接收方的確認(接受方收到數(shù)據(jù)后便立即發(fā)送確認)總共經(jīng)歷的時間

(6)時延帶寬積

是指傳播時延乘以帶寬

3、正文開始!OSI參考模型

OSI參考模型是網(wǎng)絡(luò)互連的七層框架, 這里不詳細介紹了,每一層的具體內(nèi)容會在后面介紹,這里只需要有一個初步的印象。

如下圖所示,1,2,3層主要是是物理鏈路組成的,比如光纖,路由器,集線器,主要負責(zé)的是數(shù)據(jù)通信。5,6,7層是軟件控制的,比如http協(xié)議,是一種軟件層面控制的協(xié)議,主要負責(zé)處理傳輸來的數(shù)據(jù)。

4、物理層4.1 物理層有啥用?

對于物理層,有人會說,這不就是網(wǎng)線嗎,比如家里連接路由器的網(wǎng)線,電線桿上的光纖?其實不然,物理層更多的是規(guī)定一種標(biāo)準,他并不管物理介質(zhì)具體是什么,比如電線桿上是光纖還是雙絞線,只要你能按物理層規(guī)定的標(biāo)準傳輸數(shù)據(jù)就行。

那物理層到底有哪些主要任務(wù)呢?

比如說,規(guī)定了電氣特性,信號的電平用+10V - +15V表示二進制的0,用-10V - -15V表示二進制的1,只要條網(wǎng)線能表示這個特性,就不管你用什么材料了。當(dāng)然還有其它特性,我們不需要了解,知道物理層是規(guī)定傳輸媒體接口的標(biāo)準即可。4.2 光纖寬帶上網(wǎng)是以什么樣的形式傳輸數(shù)據(jù)呢?首先計算機網(wǎng)卡傳輸出來的數(shù)據(jù)是電信號,光纖傳輸?shù)氖枪饷}沖信號,有光脈沖表示1,無光脈沖表示0。而可見光的頻率大約是10的8次方MHz,因此光纖通信系統(tǒng)的帶寬遠遠大于其它各種傳輸媒體的帶寬所以我們計算機傳輸數(shù)據(jù)需要先把電信號轉(zhuǎn)為光信號,然后光信號快到服務(wù)器的時候,再把光信號轉(zhuǎn)為電信號。4.3 物理層設(shè)備中繼器

為什么需要中繼器呢?

因為再線路上傳輸?shù)男盘柟β蕰饾u衰減,衰減到一定程度時將造成信號失真,因此會導(dǎo)致接收錯誤。

中繼器可以對信號進行再生和還原,增加信號的傳輸距離。

需要注意的是,中繼器兩端連接不同的網(wǎng)段,而不是子網(wǎng)。什么叫不同的網(wǎng)段呢,需要在網(wǎng)絡(luò)層學(xué)習(xí)IP分類之后才能夠理解這個概念,這里簡單的理解為,不同的網(wǎng)段就是不同路由器連接的網(wǎng)絡(luò)。

你能看完上面這么多概念也真是不容易,喝口水,咋們繼續(xù)!

接下來我們進入下一層,數(shù)據(jù)鏈路層!

5、數(shù)據(jù)鏈路層5.1 數(shù)據(jù)鏈路層是做什么的呢?

我們用一個小故事來舉例

網(wǎng)絡(luò)層是個大Boss, 負責(zé)給數(shù)據(jù)鏈路層這個小秘書下達任務(wù),讓小秘把5份文件給B公司,小秘呢,就找送快遞物理層去做這個事但物理層是個傻傻,他只知道拿起文件就飛奔到B公司,中間丟沒丟東西也不清楚,所以數(shù)據(jù)鏈路層這個小秘書必須心里有底,一共送了5個文件,并且寫到了快遞外層。B公司小秘在拿到傻傻送到的文件時,就要看看到底有沒有文件丟了,如果丟了就要讓傻傻回去重新拿丟到的文件。從這個故事中,我們可以總結(jié)下數(shù)據(jù)鏈路層主要功能5.2 數(shù)據(jù)鏈路層的主要功能

(1) 封裝成幀 數(shù)據(jù)鏈路層并不是無腦轉(zhuǎn)發(fā)boss的信息,她要把文件編號封裝一下。封裝的網(wǎng)絡(luò)數(shù)據(jù)包,在鏈路層就叫數(shù)據(jù)幀。

(2)透明傳輸

透明傳輸是指不管boss下達的任何信息,比如文件里有裁掉這個秘書的信息,秘書都要原原本本的傳輸。幀的數(shù)據(jù)部分可能有跟幀首部完全一樣的字符,這時候就要采取一定的措施,讓接受方不要被被誤導(dǎo),能讓接收方知道哪些是幀的首部哪些是幀的數(shù)據(jù)。這個問題有沒有類似js的轉(zhuǎn)義字符的問題,比如字符串<div>到底是指div標(biāo)簽?zāi)兀€是div字符串呢?

(3)差錯控制

差錯控制是在文件送到B公司小秘書手里的時候,快遞包上寫著5個文件,秘書一看只有3個文件,就會讓傻傻重新發(fā)送有沒有送到的文件。差錯控制的方法有CRC循環(huán)冗余碼,這個就不細講了,我自己也不甚了解,只知道鏈路層的幀,會有一個FCS位留給這個碼,用來判斷一個幀是否出錯。

(4)差錯糾正

差錯糾正是鏈路層知道1,2,3,4,5個文件,丟失的兩個文件到底是哪兩個,并且能通過重新發(fā)送沒有的文件來糾正。

還有一些是故事里沒有提到的數(shù)據(jù)鏈路層的功能,比如:

(5)流量控制 比如說發(fā)送方發(fā)送速度特別快,接收方接收速度特別慢,會造成傳輸出錯。

這里需要注意的是,傳輸層TCP也有流量控制功能,區(qū)別在于TCP是端到端的流量控制,鏈路層是點到點(比如一個路由器到下一個路由器)

流量控制的方法有滑動窗口協(xié)議,以及選擇重傳協(xié)議,這兩個留在講TCP的時候講。接下來講一下以太網(wǎng),以太網(wǎng)是目前最常見的局域網(wǎng)技術(shù)。對于我們理解局域網(wǎng)比較有幫助。

6 以太網(wǎng)和無線網(wǎng)

以太網(wǎng)是一種局域網(wǎng)技術(shù),其規(guī)定了訪問控制方法、傳輸控制協(xié)議、網(wǎng)絡(luò)拓撲結(jié)構(gòu)、傳輸速率等,完成數(shù)據(jù)鏈路層和物理層的一些內(nèi)容,它采用一種稱作CSMA/CD的媒體接入方法(后面會介紹),另外的一些局域網(wǎng)技術(shù),比如無線局域網(wǎng)等。

6.1 以太網(wǎng)的幀格式其中目的地址和源地址指的是MAC地址,即設(shè)備的物理地址。MAC地址用于標(biāo)示網(wǎng)卡,每個網(wǎng)卡都具有唯一的MAC 地址當(dāng)在同一個局域網(wǎng)中,主機A需要給主機B發(fā)送消息時,主機A將以太網(wǎng)幀發(fā)出,此時局域網(wǎng)中所有主機均可收到這個楨,主機中的網(wǎng)卡接收到以太網(wǎng)楨后,會將目的MAC地址和自己的MAC地址進行比較,如果不相同就會丟棄,如果相同則會接收,此時則B主機就收到了A的消息。其最后面是CRC循環(huán)冗余碼,用于差錯控制,即檢驗幀的正確性在以太網(wǎng)協(xié)議中,目的地址分為三種單播地址、廣播地址、多播地址,其中單播地址如上面A給B主機發(fā)送,其接收者為一個,并且其目的地址的最高字節(jié)的低位為06.2 以太網(wǎng)的特點無連接。發(fā)送方和接收方不建立連接。不可靠。接收方不向發(fā)送方進行確認,差錯幀直接丟棄。6.3 以太網(wǎng)的拓撲結(jié)構(gòu)

跟以太網(wǎng)相關(guān)的拓撲結(jié)構(gòu)有星型和總線型。

星型拓撲如下:

總線型拓撲如下:

互聯(lián)網(wǎng)初期,以太網(wǎng)的總線型拓撲比較普遍。隨著總線型以太網(wǎng)上的站點數(shù)目增多,可靠性也會隨之下降,而隨著大規(guī)模集成電路以及專門芯片的發(fā)展,使得星型以太網(wǎng)變得便宜又可靠。

需要注意的是,以太網(wǎng)雖然物理上是星型拓撲,但邏輯上是總線型。

6.4 網(wǎng)卡

計算機傳出的數(shù)據(jù),經(jīng)過網(wǎng)卡,就會變?yōu)橐蕴W(wǎng)的幀,還會完成一些鏈路管理(CDMA/CD的實現(xiàn)),以及編碼和譯碼(編碼譯碼我不太理解。。。好像是曼徹斯特編碼,規(guī)定如何表示高低電平)。

6.5 無線局域網(wǎng)

無線局域網(wǎng)WLAN是利用無線電波、激光和紅外線等無線通信技術(shù)來構(gòu)建的局域網(wǎng)。

無線局域網(wǎng)我們只介紹一下典型的網(wǎng)絡(luò)結(jié)構(gòu)。

上圖的AP就是通信基站,如果基站覆蓋的移動設(shè)備可以直接通過基站來通信如果是不同基站的移動設(shè)備,不僅僅要通過自己的基站傳輸數(shù)據(jù),還需要基站和基站之間傳輸數(shù)據(jù),來達到兩個在不同基站覆蓋范圍內(nèi)的無線設(shè)備通信。6.6 CSMA/CD協(xié)議

因為這個協(xié)議是以太網(wǎng)所使用的,所以我們只需要記住一些特點就行了。

每一個站在發(fā)送數(shù)據(jù)之前以及發(fā)送數(shù)據(jù)時以及發(fā)送數(shù)據(jù)時都要檢測一下總線上是否有其他計算機在發(fā)送數(shù)據(jù)。是總線型,半雙工網(wǎng)絡(luò)(半雙工是指允許數(shù)據(jù)在兩個方向上傳輸,但是,在某一時刻,只允許數(shù)據(jù)在一個方向上傳輸)6.7 鏈路層的設(shè)備

(1)網(wǎng)橋

網(wǎng)橋根據(jù)MAC幀的目的地址進行轉(zhuǎn)發(fā)和過濾。當(dāng)網(wǎng)橋收到一個幀時,并不會向所有接口轉(zhuǎn)發(fā)此幀,而是先檢查此幀的目的MAC地址,然后再確定將該幀轉(zhuǎn)發(fā)到哪一個口,或者是把它丟棄。

這里需要注意的是,網(wǎng)橋連接的是不同的網(wǎng)段,網(wǎng)段是什么呢,我這里簡單介紹一下,具體要到講IP地址的時候細說,同一網(wǎng)段指的是IP地址和子網(wǎng)掩碼(講ip地址的時候會細講)相與得到相同的網(wǎng)絡(luò)地址。

(2)以太網(wǎng)交換機

談到交換機,就不得不提兩個概念,沖突域和廣播域

沖突域: 是指同一時間只能由一臺設(shè)備發(fā)送信息的范圍。廣播域:如果站點發(fā)出一個廣播信號,所有能接收到這個信號的設(shè)備范圍稱為廣播域也就是說,廣播域可以跨網(wǎng)段,而沖突域只是發(fā)生的同一個網(wǎng)段。

舉個例子,公司里大家的電腦一般都是連接到交換機上,因為交換機可以隔離沖突域,沖突域的最大問題在于,同一時間只能有一臺機器傳輸數(shù)據(jù),公司那么多人,如果這樣的話,傳輸數(shù)據(jù)速度太慢了。然后交換機再連接到路由器上,首先路由器能隔離廣播域,其次不經(jīng)過路由器,你的數(shù)據(jù)鏈路層上的包沒辦法進入到互聯(lián)網(wǎng)里面去`,路由器是網(wǎng)絡(luò)層的設(shè)備。

兄弟,能看完上面內(nèi)容,你也真夠能忍的,牛B,喝口水!繼續(xù)!

7、 網(wǎng)絡(luò)層

概念走一走,看一看,瞄一眼就行啦!

7.1 網(wǎng)絡(luò)層概念

網(wǎng)絡(luò)層主要任務(wù)是將分組(分組的概念是大多數(shù)計算機網(wǎng)絡(luò)都不能連續(xù)地傳送任意長的數(shù)據(jù),所以實際上網(wǎng)絡(luò)系統(tǒng)把數(shù)據(jù)分割成小塊,然后逐塊地發(fā)動,這種小塊就稱作分組)從一臺主機移動到另一臺主機,從而提供了主機到主機的通信服務(wù)和各種形式的進程到進程的通信。

7.2 學(xué)習(xí)網(wǎng)絡(luò)層需要了解的概念7.2.1 分組交換

當(dāng)主機H1要向另一主機H2發(fā)送數(shù)據(jù)(報文)時,首先將數(shù)據(jù)劃分成若干個等長的分組,然后將這些分組一個接一個地發(fā)往里與H1相聯(lián)的路由A ,當(dāng)A接到分組后,先放入緩沖區(qū),再按一定的路由算法確定該分組下一步將發(fā)注哪個結(jié)點,如此一個結(jié)點一個結(jié)點傳遞,直到最終目的H2。

這一段話比較啰嗦,簡單來說分組就是分數(shù)據(jù)塊,同時還具有無需建立連接,存儲轉(zhuǎn)發(fā)(存儲轉(zhuǎn)發(fā)是指以太網(wǎng)交換機的控制器先將輸入端口到來的數(shù)據(jù)包緩存起來,先檢查數(shù)據(jù)包是否正確,并過濾掉沖突包錯誤),動態(tài)分配路線(交換設(shè)備會根據(jù)網(wǎng)絡(luò)狀況選擇不同的路線,比如路由器)的優(yōu)點。

7.2.2 數(shù)據(jù)報

數(shù)據(jù)報是通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)的基本單元,包含一個報頭(header)和數(shù)據(jù)本身。說白了,就是帶地址的數(shù)據(jù),比如你的寫了一句微信"你好",這串文字本上加上源地址,目的地址,就是數(shù)據(jù)報。

7.2.3 數(shù)據(jù)報格式首部的固定部分是20字節(jié),共20 * 8 = 160比特(1字節(jié)=8比特)0 - 4比特是版本號,版本有ipv4/ipv6首部長度,單位是4B,最小為5, 為什么是5呢?因為首部至少20字節(jié),所以4* 5就是20字節(jié)區(qū)分服務(wù)不用看??傞L度是,首部+數(shù)據(jù)生存時間是TTL,它告訴網(wǎng)絡(luò),數(shù)據(jù)包在網(wǎng)絡(luò)中的時間是否太長而應(yīng)被丟棄。每經(jīng)過一個路由器減一,變成0就丟棄協(xié)議是指數(shù)據(jù)部分用的什么協(xié)議,我們只需要知道TCP協(xié)議用6表示,UDP協(xié)議用17表示即可。首部校驗和占16位。這個字段只檢驗數(shù)據(jù)報的首部,但不包括數(shù)據(jù)部分。目的地址和源地址都是IP地址,目的地址是通過DNS查詢得來的。7.2.4 IP分片

為什么要分片呢?

鏈路層數(shù)據(jù)幀封裝的數(shù)據(jù)大小是有限制的,以太網(wǎng)的MTU(MTU是指一種通信協(xié)議的某一層上面所能通過的最大數(shù)據(jù)包大?。┦?500字節(jié)。

接下來我們就看看在ip數(shù)據(jù)包上,哪些字段標(biāo)識了分片的數(shù)據(jù)呢?

標(biāo)識是在同一數(shù)據(jù)的分片時相同。標(biāo)志占3位,但只有兩位有意義,第一個位叫MF,MF=1即表示后面“還有分片”的數(shù)據(jù)報。MF=0表示這已是若干數(shù)據(jù)報片中的最后一個。標(biāo)志字段中間的一位記為DF(Don’t Fragment),意思是“不能分片”。只有當(dāng)DF=0時才允許分片。片偏移,較長的分組在分片后,某片在原分組中的相對位置。7.2.5 ip地址分類

ip地址有5種

A類:1.0.0.0~126.255.255.255B類:128.0.0.0~191.255.255.255C類:192.0.0.0~223.255.255.255D類:224.0.0.0~239.255.255.255E類:240.0.0.0~254.255.255.255其中127.0.0.0~127.255.255.255用于環(huán)回測試,D類地址用于組播,E類地址用于科研

這里需要注意的是,你發(fā)沒發(fā)現(xiàn),為什么我們前端啟動webpack測試環(huán)境的時候,一般地址都是192.168.*.*(* 是指0-255的數(shù)字); 在公司和家里都是這個網(wǎng)段,不是很奇怪嗎,你家里的網(wǎng)段怎么和公司一樣呢?

其實是因為有一部分叫私有IP地址,是不能拿到網(wǎng)絡(luò)上跟別的計算機通信的。只能是局域網(wǎng)自己內(nèi)部用。比如說有:

可以看到,C類私有地址就是192.168網(wǎng)段,每個局域網(wǎng)都可以有這些私有IP。

還有一些特殊地址,需要了解

注意,這里的全1是指,ipv4地址由4個字節(jié)組成,每一個字節(jié)是8位,8位全一就是十進制的255, 即255.255.255.255。

第一行,全一,代表是255.255.255.255,在本網(wǎng)絡(luò)的目的地址寫這個的話,就會內(nèi)網(wǎng)廣播第二行,網(wǎng)絡(luò)號特定值,主機號是全0,比如,192.169.10.1,這是c類網(wǎng)絡(luò),所以網(wǎng)絡(luò)號是192.169.10,主機號是1,當(dāng)主機號全0時,就是0,表示192.169.10.0這個網(wǎng)段第三行,還是192.169.10.1這個c類地址,主機號都是1,也就是8個1,代表255,所以192.169.10.255表示本網(wǎng)段的廣播地址第四行,大家最熟悉不過了,127作為網(wǎng)絡(luò)號,主機號非全0或1,比如說127.0.0.1代表本機,稱為環(huán)回地址。7.2.6 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)

在ip地址分類里面,我們知道私有ip地址是不能跟外網(wǎng)交互的,在小公司大多數(shù)計算機的地址都是192.168網(wǎng)段,都是私有ip地址,它是怎么跟外網(wǎng)交互數(shù)據(jù)的呢,這里就引出來一個知識點叫網(wǎng)絡(luò)地址轉(zhuǎn)換NAT。

如上圖所示,192.168.0.3,192.168.0.4都是私有網(wǎng)段上的,它們無法跟外網(wǎng)通信,這個時候由于路由器安裝了NAT軟件,就可以將自己的ip地址,即路由器的ip地址172.38.1.5作為內(nèi)網(wǎng)的代理,去訪問外網(wǎng),外網(wǎng)返回來的數(shù)據(jù),經(jīng)過路由轉(zhuǎn)換,轉(zhuǎn)換成內(nèi)網(wǎng)的192.168網(wǎng)段的私有地址。

7.2.7 子網(wǎng)劃分和子網(wǎng)掩碼

首先要明白,為什么要劃分子網(wǎng)?

首先大家要知道: 總體來說,劃分子網(wǎng)不但沒有增加可用IP地址,而且減少了可用IP地址,因為每個子網(wǎng)中的全0網(wǎng)絡(luò)地址和全1廣播地址均不能作為主機ip來使用。

為什么劃分子網(wǎng):

例如,一個A類網(wǎng)絡(luò)可以容納16777214臺主機。但是在實際運用中,不可能把一個A類網(wǎng)絡(luò)只用于一個子網(wǎng),因為那樣管理起來很不方便,也會出現(xiàn)廣播風(fēng)暴等種種問題,所以需要根據(jù)實際需求把它劃分為若干個較小的子網(wǎng)。一個B類網(wǎng)絡(luò)可以容納65534臺主機,往往也是需要劃分子網(wǎng)的。即便一個小型企業(yè)內(nèi)部,為了部門之間的職能的需要,配置那些電腦可以互相訪問,哪些不能互相訪問,就需要通過劃分子網(wǎng)的方法來實現(xiàn)。

接下來,我們看看子網(wǎng)劃分

如上圖右側(cè),我們將145.13.0.0這個網(wǎng)段劃分了三個子網(wǎng),其中一個是145.13.3.0,一個是145.13.21.0,問題來了,如果一個網(wǎng)絡(luò)包來了,網(wǎng)絡(luò)包要交給的ip地址是145.13.3.10,我們怎么知道給哪個子網(wǎng)呢?

方法是將目的包的ip地址,跟子網(wǎng)的子網(wǎng)掩碼相與預(yù)算(二進制與預(yù)算規(guī)則是,1跟1得1,其它為0),也就是目的地址145.13.3.10跟子網(wǎng)145.13.3.0的子網(wǎng)掩碼255.255.255.0的與預(yù)算,得到的結(jié)果是145.13.3.0,所以發(fā)送到的子網(wǎng)就是145.13.3.0。

這里有人會問什么是子網(wǎng)掩碼,子網(wǎng)掩碼的格式跟IP是一樣的,0,0,0,0 到 255.255.255.255,主要是幫助我們劃分子網(wǎng)的,了解到這里對我們前端就夠了。

7.3 ARP協(xié)議

為什么需要ARP協(xié)議呢?

我們簡單回顧一下以太網(wǎng)的幀的格式

上圖有一個源地址和目的地址,這兩個地址都是指的mac地址,mac地址是什么呢?簡單說來就是兩臺相鄰的路由器A和B,A怎么把數(shù)據(jù)傳給B呢,它總要知道B的物理地址吧,物理地址就像門牌號一樣,我要知道你住在哪里,才能把數(shù)據(jù)送過去吧?

首先你肯定知道自己的mac地址是多少,因為在網(wǎng)卡上有,問題在于,別人的mac地址是多少?ARP協(xié)議就是來幫你找mac地址的。

接著我們說一下ARP協(xié)議的過程(比較官方的介紹,看不懂可以略過):

每臺主機都會在自己的ARP緩沖區(qū)中建立一個 ARP列表,以表示IP地址和MAC地址的映射關(guān)系當(dāng)源主機需要將一個數(shù)據(jù)包要發(fā)送到目的主機時,會首先檢查自己 ARP列表中是否存在該IP地址對應(yīng)的MAC地址如果有,就直接將數(shù)據(jù)包發(fā)送到這個MAC地址;如果沒有,就向本地網(wǎng)段發(fā)起一個ARP請求的廣播包,查詢此目的主機對應(yīng)的MAC地址此ARP請求數(shù)據(jù)包里包括源主機的IP地址、硬件地址、以及目的主機的IP地址。網(wǎng)絡(luò)中所有的主機收到這個ARP請求后,會檢查數(shù)據(jù)包中的目的IP是否和自己的IP地址一致如果不相同就忽略此數(shù)據(jù)包;如果相同,該主機首先將發(fā)送端的MAC地址和IP地址添加到自己的ARP列表中如果ARP表中已經(jīng)存在該IP的信息,則將其覆蓋,然后給源主機發(fā)送一個 ARP響應(yīng)數(shù)據(jù)包,告訴對方自己是它需要查找的MAC地址源主機收到這個ARP響應(yīng)數(shù)據(jù)包后,將得到的目的主機的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息開始數(shù)據(jù)的傳輸如果源主機一直沒有收到ARP響應(yīng)數(shù)據(jù)包,表示ARP查詢失敗7.4 DHCP協(xié)議

DHCP(動態(tài)主機配置協(xié)議)是一個局域網(wǎng)的網(wǎng)絡(luò)協(xié)議。指的是由服務(wù)器控制一段lP地址范圍,客戶機登錄服務(wù)器時就可以自動獲得服務(wù)器分配的lP地址和子網(wǎng)掩碼。說白了,當(dāng)你接入局域網(wǎng)的時候,自動由這個dhcp服務(wù)器給你分配ip,windows用戶可能知道網(wǎng)卡配置里面,由自動獲取ip的功能,如果路由器提供DHCP服務(wù),你就會自動獲取隨機分配的ip。

路由器里可以開啟這個服務(wù)。

大致工作過程(了解即可)

7.5 ICMP協(xié)議

ICMP協(xié)議是一個網(wǎng)絡(luò)層協(xié)議。 為什么我們需要ICMP協(xié)議呢?

一個新搭建好的網(wǎng)絡(luò),往往需要先進行一個簡單的測試,來驗證網(wǎng)絡(luò)是否暢通;但是IP協(xié)議并不提供可靠傳輸。如果丟包了,IP協(xié)議并不能通知傳輸層是否丟包以及丟包的原因。

所以我們就需要一種協(xié)議來完成這樣的功能–ICMP協(xié)議。

ICMP協(xié)議的功能主要有:

確認IP包是否成功到達目標(biāo)地址通知在發(fā)送過程中IP包被丟棄的原因 我們舉一個例子:

主機H2收到主機H1的一個UDP包,結(jié)果H2發(fā)現(xiàn)這個包里的端口沒有被監(jiān)聽,這時候就回復(fù)給H2一個ICMP應(yīng)答報文,意思是這個UDP數(shù)據(jù)包,無法交給應(yīng)用進程,只能丟棄了。

以下是4種常見的ICMP差錯報告報文

我們常用的ping命令借助ICMP協(xié)議,探測主機是否能找到目的主機。

7.6 網(wǎng)絡(luò)設(shè)備路由器簡介

路由器是一種具有多個輸入端口和多個輸出端口的專用計算機,其任務(wù)是轉(zhuǎn)發(fā)和分組。

如下圖所示,分別由轉(zhuǎn)發(fā)和分組功能的說明。

接著,我們看一下路由器輸入端口做了哪些事情

首先,物理層是傻瓜層,傳輸比特流,我們把物理層的比特流還原成數(shù)據(jù)鏈路層的數(shù)據(jù)幀,然后把數(shù)據(jù)鏈路層的數(shù)據(jù)報脫去,成為網(wǎng)絡(luò)層數(shù)據(jù)包,交給路由器。這時候就要判斷一下這個數(shù)據(jù)包是什么類型的了。如果它是路由器之間,交換路由信息的分組,就會把這個數(shù)據(jù)包交付給如上上圖所示的,路由選擇處理機,進行處理和計算。如果是數(shù)據(jù)分組,就會放到一個隊列里面,排隊等候,然后選擇一個合適的輸出端口輸出。最后我們看一下路由器輸出端口做了哪些事情

從上圖可以看到,輸出端口是做的輸入端口的逆過程,將網(wǎng)絡(luò)層的數(shù)據(jù)包轉(zhuǎn)換為鏈路層的數(shù)據(jù)幀,最后轉(zhuǎn)為物理層的比特流。

輸入和輸出端口需要注意的是,它們都有一個緩沖隊列,比如輸入數(shù)據(jù)的速度太快,輸出數(shù)據(jù)速度慢,為了平衡輸入輸出速度,就用緩沖隊列把數(shù)據(jù)緩沖下來,一個一個慢慢的處理,但緩沖隊列也有限度,超出這個限度,緩沖隊列容納不下,包就會被丟到。

馬上就要到對前端最重要的傳輸層和應(yīng)用層知識了!準備接招!

8 傳輸層知識

傳輸層是只有計算機才有的層次,主要提供是進程間邏輯通信 + 可靠傳輸或者不可靠的功能。比如你的QQ跟你異地女友的QQ視頻聊天,這就是不同計算機之間,進程間的通信。

這里簡單說一下可靠傳輸協(xié)議TCP + 不可靠傳輸協(xié)議UDP。

TCP面向連接,可靠,不提供廣播和多播,而且時間延遲比較大,適用于大文件傳輸。 UDP無連接,收到的報也不確認,但時間延遲小,適用于小文件。

8.1 端口號有什么用

端口號可以用來標(biāo)識同一個主機上通信的不同應(yīng)用程序(就是哪個應(yīng)用程序在使用這個端口)。

那為什么一個端口只能分配給一個應(yīng)用程序,不能是多個呢?

如果服務(wù)器有兩個應(yīng)用程序A,B,分別啟動了A服務(wù)和B服務(wù),它們監(jiān)聽同一個端口,那有數(shù)據(jù)來的時候,服務(wù)器無法判斷這個數(shù)據(jù)到底是給A,還是給B。

8.2 UDP協(xié)議

UDP協(xié)議是參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡單不可靠信息傳送服務(wù)。

(1) UDP協(xié)議的特點

UDP是無連接的,減少開銷和發(fā)送數(shù)據(jù)之前的時間延遲。大家都知道TCP的三次握手和四次分手,這個是需要時間花銷的,但是UDP沒有這部分花銷。UDP使用最大努力交付,即不保證可靠交付。那誰來保證可靠的交付呢?是由UDP的上一層協(xié)議,應(yīng)用層來保證。UDP是面向報文的,適合一次性傳輸少量數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。什么意思呢,如下圖,UDP這層,把應(yīng)用層的全部內(nèi)容作為自己的數(shù)據(jù)報部分,在IP層也只是加了一個IP首部,我們知道,在以太網(wǎng),鏈路層上的數(shù)據(jù)如果超過1500字節(jié),就會分片,所以網(wǎng)絡(luò)層發(fā)現(xiàn)上面?zhèn)鬏攲咏o了太大的數(shù)據(jù)就會分片,加上UDP是不可靠的協(xié)議,這就加大了UDP的不可靠性,容易丟失,所以UDP適合數(shù)據(jù)量少的。UDP沒有擁塞控制,適合很多實時應(yīng)用。也就是說如果網(wǎng)絡(luò)堵塞,UDP不管那么多,照樣按照自己的速率發(fā)數(shù)據(jù),那有些人就會說,這協(xié)議是不是有點坑B,路都堵上了,還發(fā)死勁發(fā)數(shù)據(jù)呢,但是反過來看,這也是UDP的優(yōu)點,它允許丟包,如果你的網(wǎng)絡(luò)情況還不錯,UDP就非常適合實時應(yīng)用,比如視頻會議。UDP首部較小,只有8字節(jié),而TCP由20字節(jié)。這也是減少網(wǎng)絡(luò)傳輸開銷的一方面。

(2)UDP首部

16位端口號占了2B,也就是16位,說明端口號的范圍是0 - 65535。源端口號可以沒有,因為不希望收到對方的回應(yīng),可以寫全0,目的端口是一定要有的。16位UDP長度是指首部+數(shù)據(jù)的長度,比如數(shù)據(jù)2B,首部固定是8B,那么UDP長度就是2+8 = 10B16位UDP校驗和,是用來校驗首部和數(shù)據(jù)有錯誤,如果有錯就丟棄掉。比如說目的主機找不到對應(yīng)的端口號,就會給發(fā)送方返回一個ICMP,‘端口不可達’的差錯報文。8.3 TCP協(xié)議

TCP協(xié)議簡單來說是一種位于傳輸層的,面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議 TCP協(xié)議的特點:

TCP是面向連接的傳輸層協(xié)議。比如說TCP的三次握手,四次分手,針對的都是連接。每一條TCP連接只能有兩個端點,每一條TCP連接是點對點的。也就是說TCP是不同計算機之間的進程的通信。TCP提供可靠交付的服務(wù),無差錯,不丟失,不重復(fù),按序到達。總結(jié)一下就是,可靠有序,不丟不重。TCP提供全雙工通信。全雙工指的是連接雙方可以同時收發(fā)數(shù)據(jù)。在收發(fā)兩端都有發(fā)送緩存和接收緩存,發(fā)送緩存就是一個準備發(fā)送的隊列,接收緩存是一個準備接收的隊列。TCP面向字節(jié)流。如下圖,我們解釋一下什么是面向字節(jié)流: 圖中的1,2,3,4.....數(shù)據(jù)塊,每一個表示一個字節(jié)。tcp將應(yīng)用層的數(shù)據(jù)變?yōu)榱诉@樣的字節(jié)進行發(fā)送,比如玩過node同學(xué),知道一個buffer,buffer就是字節(jié)流。

TCP報文的首部格式

如下圖所示,我們看一下比較重要的一些首部字段,這里我們介紹固定的20字節(jié)的TCP首部

源端口和目的端口分別是指發(fā)送方應(yīng)用程序的端口和目的方應(yīng)用程序的端口號。序號是指在一個TCP連接中傳送的字節(jié)流中的每一個字節(jié)都按順序編號,本字段表示本報文段所發(fā)送數(shù)據(jù)的第一個字節(jié)的序號。確認號是指期望收到對方下一個報文段的第一個數(shù)據(jù)字節(jié)的序號。弱確認好位n,則證明到需要N-1為止所有的數(shù)據(jù)都已經(jīng)正確收到。如下圖,我們舉例說明一下

接收方收到了1,2,3個字節(jié)組成的數(shù)據(jù)包,然后接收方就會發(fā)送一個確認報文給發(fā)送方,其中確認報文的確認號就應(yīng)該是4,因為1,2,3這三個字節(jié)的組成的數(shù)據(jù)包已經(jīng)收到了。

數(shù)據(jù)偏移指的是TCP報文段的數(shù)據(jù)起始處舉例TCP報文段的起始處有多遠。6個控制位介紹如下

控制位 作用 ACK 置1時表示確認號合法,為0的時候表示數(shù)據(jù)段不包含確認信息,確認號被忽略 PSH 置1時請求的數(shù)據(jù)段在接收方得到后就可直接送到應(yīng)用程序,而不必等到緩沖區(qū)滿時才傳送 RST 置1時重建連接。如果接收到RST位時候,通常發(fā)生了某些錯 SYN 置1時用來發(fā)起一個連接 FIN 置1時表示發(fā)端完成發(fā)送任務(wù)。用來釋放連接,表明發(fā)送方已經(jīng)沒有數(shù)據(jù)發(fā)送了 URG 緊急指針,告訴接收TCP模塊緊要指針域指著緊要數(shù)據(jù)

8.3.3 TCP建立連接

如下圖所示,分別來了解一下建立連接的過程:

首先客戶端要發(fā)送一個數(shù)據(jù)包告訴服務(wù)器要建立連接,根據(jù)上面我們了解到的控制位信息,建立連接需要把SYN置為1,seq指的是序號,是隨機產(chǎn)生的。然后服務(wù)器收到該數(shù)據(jù)包后,會為該TCP連接分配緩存和變量,緩存指的是一個字節(jié)流隊列。(發(fā)送方和接收方都有這個隊列,而且如果雙方需要互相通信,那么雙方都會有發(fā)送緩存和接收緩存),接著會返回一個確認報文,其中SYN控制位置為1,意思是允許建立連接,ACK是確認號,確認收到了發(fā)送方的包,并且會設(shè)一個seq序號,也為一個隨機數(shù)。小寫ack是確認號,也就是接下來希望發(fā)送方要發(fā)的數(shù)據(jù)從哪開始。最后,客戶端需要給服務(wù)器端返回一個確認,此時SYN控制位變?yōu)?,意思這不是建立連接的請求了,要正式發(fā)數(shù)據(jù)了,ACK是確認碼,意思是收到了服務(wù)器的確認請求了。8.3.4 TCP釋放連接

如下圖所示,分別來了解一下釋放連接的過程:

客戶端發(fā)起請求,請求斷開鏈接。FIN=1,seq=u。u是之前傳送過來的最后一個字節(jié)的序號+1。

FIN:用來釋放一個鏈接,當(dāng)FIN=1的時候,表明此報文的發(fā)送方已經(jīng)完成了數(shù)據(jù)的發(fā)送,沒有新的數(shù)據(jù)要傳送,并要求釋放鏈接。 客戶端等著服務(wù)器返回確認

服務(wù)器收到客戶端的請求斷開鏈接的報文之后,返回確認信息。ACK=1,seq=v,ack=u+1。這個時候,客戶端不能給服務(wù)器發(fā)送信息報文,只能接收。但是服務(wù)器要是還有信息要傳給服務(wù)器,仍然能傳送。這里的v是什么意思呢,這就取決于服務(wù)器發(fā)送給客戶端之前的一個包確認號是多少了。當(dāng)服務(wù)器也沒有了可以傳的信息之后,給客戶端發(fā)送請求結(jié)束的報文。FIN=1,ACK=1,ack=u+1,seq=w。這里的w,跟上面的v是一個意思,為什么不都是v呢,因為這一步和上一步中間可能還在發(fā)數(shù)據(jù)呢,所以seq這個數(shù)據(jù)發(fā)送的字節(jié)流序號可能要變??蛻舳私邮盏紽IN=1的報文之后,返回確認報文,ACK=1,seq=u+1,ack=w+1。發(fā)送完畢之后,客戶端進入等待狀態(tài),等待兩個時間周期。關(guān)閉。

為什么最后還要等待兩個時間周期呢?

客戶端的最后一個ACK報文在傳輸?shù)臅r候丟失,服務(wù)器并沒有接收到這個報文。這個候時候服務(wù)器就會超時重傳這個FIN消息,然后客戶端就會重新返回最后一個ACK報文,等待兩個時間周期,完成關(guān)閉。如果不等待這兩個時間周期,服務(wù)器重傳的那條消息就不會收到。服務(wù)器就因為接收不到客戶端的信息而無法正常關(guān)閉。8.3.5 TCP3次握手4次揮手常見面試題

為什么連接的時候是三次握手,關(guān)閉的時候卻是四次握手?

關(guān)閉連接時,服務(wù)器收到對方的FIN報文時,僅僅表示對方不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù),而自己也未必全部數(shù)據(jù)都發(fā)送給對方了,所以己方可以立即關(guān)閉,也可以發(fā)送一些數(shù)據(jù)給對方后,再發(fā)送FIN報文給對方來表示同意現(xiàn)在關(guān)閉連接因此,己方ACK和FIN一般都會分開發(fā)送,從而導(dǎo)致多了一次。

為什么不能用兩次握手進行連接?

以下是網(wǎng)上普遍的解答:

若建立連接只需兩次握手,客戶端并沒有太大的變化,仍然需要獲得服務(wù)端的應(yīng)答后才進入ESTABLISHED狀態(tài),而服務(wù)端在收到連接請求后就進入ESTABLISHED狀態(tài)。此時如果網(wǎng)絡(luò)擁塞,客戶端發(fā)送的連接請求遲遲到不了服務(wù)端,客戶端便超時重發(fā)請求,如果服務(wù)端正確接收并確認應(yīng)答,雙方便開始通信,通信結(jié)束后釋放連接。此時,如果那個失效的連接請求抵達了服務(wù)端,由于只有兩次握手,服務(wù)端收到請求就會進入ESTABLISHED狀態(tài),等待發(fā)送數(shù)據(jù)或主動發(fā)送數(shù)據(jù)但此時的客戶端早已進入CLOSED狀態(tài),服務(wù)端將會一直等待下去,這樣浪費服務(wù)端連接資源但我覺得這個只是兩次握手可能造成的問題,最關(guān)鍵的是兩次握手有服務(wù)器對客戶端的起始序列號做了確認,但客戶端卻沒有對服務(wù)器的起始序列號做確認,不能保證傳輸?shù)目煽啃浴?p>如果已經(jīng)建立了連接,但是客戶端突然出現(xiàn)故障了怎么辦?

TCP?;钣嫊r器 每次客戶端請求服務(wù)器會重置計時器,當(dāng)2小時之內(nèi)沒收到客戶端任何數(shù)據(jù)時,會每隔75s向客戶端發(fā)一個探測報文,若接連發(fā)送10個,客戶端都沒有反應(yīng),則認為客戶端故障,關(guān)閉連接。

什么是SYN洪泛攻擊?

SYN洪泛攻擊就是利用TCP協(xié)議的特性(三次握手)。攻擊者發(fā)送TCP的 SYN,SYN是TCP三次握手中第一個數(shù)據(jù)包,而當(dāng)服務(wù)器返回ACK后,該攻擊者就不對其進行再確認,那這個TCP連接就處于掛起狀態(tài),也就是半連接狀態(tài),服務(wù)器收不到再確認的話,還會重復(fù)發(fā)送ACK給攻擊者。這樣更加會浪費服務(wù)器資源。攻擊者就對服務(wù)器發(fā)送大量的這種TCP連接,由于每一個連接都無法完成三次握手,所以就在服務(wù)器上,這些TCP連接會因為掛起狀態(tài)而消耗CPU和內(nèi)存,最后服務(wù)器可能死機。

序號(ISN)為什么要隨機? 增加安全性,為了避免被第三方猜測到,從而被第三方偽造的RST報文Reset。 三次握手的第一次可以攜帶數(shù)據(jù)嗎?為何?

不可以,三次握手還沒有完成。而且這樣會放大SYN FLOOD(SYN洪泛)攻擊。如果攻擊者偽造了成千上萬的握手報文,攜帶了1K+ 字節(jié)的數(shù)據(jù),而接收方會開辟大量的緩存來容納這些巨大數(shù)據(jù),內(nèi)存會很容易耗盡,從而拒絕服務(wù)。

三次握手的第三次可以攜帶數(shù)據(jù)嗎?為何? 第三次握手,此時客戶端已經(jīng)處于ESTABLISHED狀態(tài)。對于客戶端來說,他已經(jīng)建立起連接了,并且已經(jīng)知道服務(wù)器的接收和發(fā)送能力是正常的。所以也就可以攜帶數(shù)據(jù)了。

8.3.6 TCP如何實現(xiàn)可靠傳輸

主要通過以下四種方式實現(xiàn)可靠傳輸機制:

校驗。偽首部是為了增加TCP校驗和的檢錯能力:通過偽首部的目的IP地址來檢查TCP報文是否收錯了、通過偽首部的傳輸層協(xié)議號來檢查傳輸層協(xié)議是否選對了。需要注意的是,偽首部實際上是不存在的,只是用來驗證TCP報文是否出錯。序號。之前我們提到TCP是面向字節(jié)流的,比如第一個字節(jié)就是序號1,第二個字節(jié)就是序號2。 而在TCP報文格式介紹的時候,有一個序號字段,這個指的是一個報文段第一個字節(jié)的序號。報文段就是你每個數(shù)據(jù)包。有了序號,就能保證數(shù)據(jù)是有序的傳入應(yīng)用層。確認。發(fā)送方在收到接收方的確認包之后,才繼續(xù)發(fā)送剩下的數(shù)據(jù)。重傳。TCP的發(fā)送方在規(guī)定的時間內(nèi)沒有收到確認就要重傳已發(fā)送的報文段(超時重傳)。重傳時間是動態(tài)改變的,依據(jù)的是RTTS(加權(quán)平均往返時間)。8.3.7 TCP的流量控制

為什么需要流量控制呢?

比如發(fā)送方發(fā)送速度非常快,接收方接收速度特別慢,這樣就會發(fā)生嚴重的丟包現(xiàn)象。

TCP通過滑動窗口的機制來實現(xiàn)流量控制。簡單來說如下(建議網(wǎng)上找一個動畫教程來理解,文字效果不是很好):

TCP 中采用滑動窗口來進行傳輸控制,滑動窗口的大小意味著接收方還有多大的緩沖區(qū)可以用于接收數(shù)據(jù)。發(fā)送方可以通過滑動窗口的大小來確定應(yīng)該發(fā)送多少字節(jié)的數(shù)據(jù)。當(dāng)滑動窗口為 0時,發(fā)送方一般不能再發(fā)送數(shù)據(jù)報,但有兩種情況除外,一種情況是可以發(fā)送緊急數(shù)據(jù),例如,允許用戶終止在遠端機上的運行進程。另一種情況是發(fā)送方可以發(fā)送一個 1 字節(jié)的數(shù)據(jù)報來通知接收方重新聲明它希望接收的下一字節(jié)及發(fā)送方的滑動窗口大小。8.3.8 TCP的擁塞控制

這部分我也覺得文字部分太生硬了,開始我也不怎么理解,看來一個視頻之后我了解了基本原理,這里我文字版和視頻地址都放上來。

視頻地址如下:擁塞控制視頻版

文字版如下:

如果網(wǎng)絡(luò)出現(xiàn)擁塞,分組將會丟失,此時發(fā)送方會繼續(xù)重傳,從而導(dǎo)致網(wǎng)絡(luò)擁塞程度更高。因此當(dāng)出現(xiàn)擁塞時,應(yīng)當(dāng)控制發(fā)送方的速率。這一點和流量控制很像,但是出發(fā)點不同。流量控制是為了讓接收方能來得及接收,而擁塞控制是為了降低整個網(wǎng)絡(luò)的擁塞程度。TCP 主要通過四個算法來進行擁塞控制:慢開始、擁塞避免、快重傳、快恢復(fù)。發(fā)送方需要維護一個叫做擁塞窗口(cwnd)的狀態(tài)變量,注意擁塞窗口與發(fā)送方窗口的區(qū)別:擁塞窗口只是一個狀態(tài)變量,實際決定發(fā)送方能發(fā)送多少數(shù)據(jù)的是發(fā)送方窗口。為了便于討論,做如下假設(shè):接收方有足夠大的接收緩存,因此不會發(fā)生流量控制;雖然 TCP 的窗口基于字節(jié),但是這里設(shè)窗口的大小單位為報文段。

慢開始與擁塞避免

發(fā)送的最初執(zhí)行慢開始,令 cwnd = 1,發(fā)送方只能發(fā)送 1 個報文段;當(dāng)收到確認后,將 cwnd 加倍,因此之后發(fā)送方能夠發(fā)送的報文段數(shù)量為:2、4、8 ...注意到慢開始每個輪次都將 cwnd 加倍,這樣會讓 cwnd 增長速度非??欤瑥亩沟冒l(fā)送方發(fā)送的速度增長速度過快,網(wǎng)絡(luò)擁塞的可能性也就更高。設(shè)置一個慢開始門限 ssthresh,當(dāng) cwnd >= ssthresh 時,進入擁塞避免,每個輪次只將 cwnd 加 1。

如果出現(xiàn)了超時,則令 ssthresh = cwnd / 2,然后重新執(zhí)行慢開始。

快重傳與快恢復(fù)

在接收方,要求每次接收到報文段都應(yīng)該對最后一個已收到的有序報文段進行確認。例如已經(jīng)接收到 M1 和 M2,此時收到 M4,應(yīng)當(dāng)發(fā)送對 M2 的確認。在發(fā)送方,如果收到三個重復(fù)確認,那么可以知道下一個報文段丟失,此時執(zhí)行快重傳,立即重傳下一個報文段。例如收到三個 M2,則 M3 丟失,立即重傳 M3。在這種情況下,只是丟失個別報文段,而不是網(wǎng)絡(luò)擁塞。因此執(zhí)行快恢復(fù),令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此時直接進入擁塞避免。慢開始和快恢復(fù)的快慢指的是 cwnd 的設(shè)定值,而不是 cwnd 的增長速率。慢開始 cwnd 設(shè)定為 1,而快恢復(fù) cwnd 設(shè)定為 ssthresh。9、應(yīng)用層9.1 應(yīng)用層有啥用?

應(yīng)用層對應(yīng)用程序的通信提供服務(wù)。

區(qū)分是發(fā)送報文還是接收報文定義報文類型的語法,比如某字段的意思,例如http中content-type字段是什么意思。最后就是進程如何,什么時候把傳輸層的數(shù)據(jù)交給應(yīng)用層。

一些比較重要的應(yīng)用層協(xié)議如下圖:

9.2 應(yīng)用層常見的模型

第一種是客戶端/服務(wù)器模型,也就是C/S架構(gòu)。比如電子郵件、web都是。

第二種是P2P模型,每個主機既可以提供服務(wù),也可以請求服務(wù)。比如迅雷下載也是使用P2P技術(shù)的。

9.3 短鏈接和長鏈接

而TCP連接有兩種工作方式:短連接方式(Short-Live Connection)和長連接方式(Long-Live Connection)。

短連接方式:當(dāng)客戶端有請求時,會建立一個TCP連接,接收到服務(wù)器響應(yīng)后,就斷開連接。下次有請求時,再建立連接,收到響應(yīng)后,再斷開。如此循環(huán)。這種方式主要有兩個缺點:建立TCP連接需要3次“握手”,拆除TCP連接需要4次“揮手”,這就需要7個數(shù)據(jù)包。如果請求和響應(yīng)各占1個數(shù)據(jù)包,那么一次短連接的交互過程,有效的傳輸僅占2/9,這個利用率太低了。主動斷開TCP連接的一端,TCP狀態(tài)機會進入TIME_WAIT狀態(tài)。如果頻繁地使用短連接方式,就有可能使客戶端的機器產(chǎn)生大量的處于TIME_WAIT狀態(tài)TCP連接。長連接方式:客戶端和服務(wù)器建立TCP連接后,會一直使用這條連接進行數(shù)據(jù)交互,直到?jīng)]有數(shù)據(jù)傳輸或異常斷開。在空閑期間,通常會使用``心跳數(shù)據(jù)包(Keep-Alive)`保持鏈路不斷開。目前長連接方式應(yīng)用范圍比較廣泛。9.4 DNS

什么是DNS說白了就是將域名轉(zhuǎn)化為ip,比如www.qq.com,這是域名,可以是網(wǎng)絡(luò)包需要對方ip地址,域名是不能加入網(wǎng)絡(luò)包報頭的,所以就需要去找一個服務(wù)器問,qq的域名對應(yīng)的ip是多少。

大概的通信過程如下:

用戶主機上運行著DNS的客戶端,就是我們的PC機或者手機客戶端運行著DNS客戶端了瀏覽器將接收到的URL中抽取出域名字段,就是訪問的主機名,比如http://www.baidu.com/, 并將這個主機名傳送給DNS應(yīng)用的客戶端DNS客戶機端向DNS服務(wù)器端發(fā)送一份查詢報文,報文中包含著要訪問的主機名字段(中間包括一些列緩存查詢以及分布式DNS集群的工作)該DNS客戶機最終會收到一份回答報文,其中包含有該主機名對應(yīng)的IP地址一旦該瀏覽器收到來自DNS的IP地址,就可以向該IP地址定位的HTTP服務(wù)器發(fā)起TCP連接

這里需要補充一個小知識,關(guān)于域名的,大概了解一下就行

9.5 萬維網(wǎng)和http協(xié)議

萬維網(wǎng)www是一個大規(guī)模的、聯(lián)機式的信息存儲所,是無數(shù)個網(wǎng)絡(luò)站點和網(wǎng)頁的集合。

知識盲區(qū): 在不少人看來,互聯(lián)網(wǎng)、因特網(wǎng)、萬維網(wǎng)沒有大多的區(qū)別,其實這三者之間的關(guān)系應(yīng)該是:互聯(lián)網(wǎng)包含因特網(wǎng),因特網(wǎng)包含萬維網(wǎng)。

互聯(lián)網(wǎng)internet。凡是由能彼此通信的設(shè)備組成的網(wǎng)絡(luò)就叫互聯(lián)網(wǎng),即使僅有兩臺機器(計算機、手機等),不論用何種技術(shù)使其彼此通信,都叫互聯(lián)網(wǎng),所以,互聯(lián)網(wǎng)有廣域網(wǎng)、城域網(wǎng)及局域網(wǎng)之分,國際標(biāo)準的互聯(lián)網(wǎng)寫法是internet,字母i一定要小寫!因特網(wǎng)Internet。而因特網(wǎng)是互聯(lián)網(wǎng)中的一種,它可不是僅有兩臺機器組成的網(wǎng)絡(luò),而是由上千萬臺設(shè)備組成的網(wǎng)絡(luò)(該網(wǎng)絡(luò)具備很大的規(guī)模)。因特網(wǎng)使用TCP/IP協(xié)議讓不同的設(shè)備可以彼此通信。但使用TCP/IP協(xié)議的網(wǎng)絡(luò)并不一定是因特網(wǎng),一個局域網(wǎng)也可以使用TCP/IP協(xié)議。因特網(wǎng)是基于TCP/IP協(xié)議實現(xiàn)的,TCP/IP協(xié)議由很多協(xié)議組成,不同類型的協(xié)議又被放在不同的層,其中,位于應(yīng)用層的協(xié)議就有很多,比如FTP、SMTP、HTTP。所以,因特網(wǎng)提供的服務(wù)一般包括有:www(萬維網(wǎng))服務(wù)、電子郵件服務(wù)(outlook)、遠程登錄(QQ)服務(wù)、文件傳輸(FTP)服務(wù)、網(wǎng)絡(luò)電話等等。萬維網(wǎng)。只要應(yīng)用層使用的是HTTP協(xié)議,就稱為萬維網(wǎng)(World Wide Web)。之所以在瀏覽器里輸入百度網(wǎng)址時,能看見百度網(wǎng)提供的網(wǎng)頁,就是因為您的個人瀏覽器和百度網(wǎng)的服務(wù)器之間使用的是HTTP協(xié)議在交流。

萬維網(wǎng)使用統(tǒng)一資源定位符作為標(biāo)識符來訪問資源。

URL的格式如下:

用戶通過點擊超鏈接獲取資源,這些資源通過超文本傳輸協(xié)議(http)傳送給使用者。HTTP協(xié)議定義了瀏覽器怎樣向萬維網(wǎng)服務(wù)器請求萬維網(wǎng)文檔,以及服務(wù)器怎樣把文檔傳送給瀏覽器。

http報文頭分析:

下面是對各部分的簡要描述:

方法(method):客戶端希望服務(wù)器對資源執(zhí)行的動作,是一個單獨的詞,比如,GET、POST或HEAD請求URL(request-URL):要直接與服務(wù)器進行對話,只要請求URL是資源的絕對路徑就可以了,服務(wù)器可以假定自己是URL的主機/端口版本(version):報文所使用的HTTP版本。其格式:HTTP/<主要版本號>.<次要版本號>狀態(tài)碼(status-code):狀態(tài)碼是三位數(shù)字,描述了請求過程中所發(fā)生的情況。每個狀態(tài)碼的第一位數(shù)字都用于描述狀態(tài)的一般類別(比如,“成功”、“出錯”等等)原因短語(reason-phrase):數(shù)字狀態(tài)碼的可讀版本,包含行終止序列之前的所有文本。原因短語只對人類有意義,因此,盡管響應(yīng)行HTTP/1.0 200 NOT OK和HTTP/1.0 200 OK中原因短語的含義不同,但同樣都會被當(dāng)作成功指示處理頭部(header):可以有零個或多個頭部,每個首部都包含一個名字,后面跟著一個冒號(:),然后是一個可選的空格,接著是一個值,最后是一個CRLF首部是由一個空行(CRLF)結(jié)束的,表示了頭部列表的結(jié)束和實體主體部分的開始實體的主體部分(entity-body):實體的主體部分包含一個由任意數(shù)據(jù)組成的數(shù)據(jù)塊,并不是所有的報文都包含實體的主體部分,有時,報文只是以一個CRLF結(jié)束。

下面是常用頭部:

通用頭部:既可以出現(xiàn)在請求報文中,也可以出現(xiàn)在響應(yīng)報文中,它提供了與報文相關(guān)的最基本的信息

Connection:允許客戶端和服務(wù)器指定與請求/響應(yīng)連接有關(guān)的選項,http1.1默認是keep-aliveDate:提供日期和時間標(biāo)志,說明報文是什么時間創(chuàng)建的Transfer-Encoding:告知接收端為了保證報文的可靠傳輸,對報文采用了什么編碼方式Cache-Control:用于隨報文傳送緩存指示

請求頭部:請求頭部是只在請求報文中有意義的頭部。用于說明是誰或什么在發(fā)送請求、請求源自何處,或者客戶端的喜好及能力

Host:給出了接收請求的服務(wù)器的主機名和端口號Referer:提供了包含當(dāng)前請求URI的文檔的URLUser-Agent:將發(fā)起請求的應(yīng)用程序名稱告知服務(wù)器Accept:告訴服務(wù)器能夠發(fā)送哪些媒體類型Accept-Encoding:告訴服務(wù)器能夠發(fā)送哪些編碼方式Accept-Language:告訴服務(wù)器能夠發(fā)送哪些語言Range:如果服務(wù)器支持范圍請求,就請求資源的指定范圍If-Range:允許對文檔的某個范圍進行條件請求Authorization:包含了客戶端提供給服務(wù)器,以便對其自身進行認證的數(shù)據(jù)Cookie:客戶端用它向服務(wù)器傳送數(shù)據(jù)

響應(yīng)頭部:響應(yīng)頭部為客戶端提供了一些額外信息,比如誰在發(fā)送響應(yīng)、響應(yīng)者的功能,甚至與響應(yīng)相關(guān)的一些特殊指令

Age:(從最初創(chuàng)建開始)響應(yīng)持續(xù)時間Server:服務(wù)器應(yīng)用程序軟件的名稱和版本Accept-Ranges:對此資源來說,服務(wù)器可接受的范圍類型Set-Cookie:在客戶端設(shè)置數(shù)據(jù),以便服務(wù)器對客戶端進行標(biāo)識

實體首部:描述主體的長度和內(nèi)容,或者資源自身

Allow:列出了可以對此實體執(zhí)行的請求方法Location:告知客戶端實體實際上位于何處,用于將接收端定向到資源的位置(URL)上去Content-Base:解析主體中的相對URL時使用的基礎(chǔ)URLContent-Encoding:對主體執(zhí)行的任意編碼方式Content-Language:理解主體時最適宜使用的自然語言Content-Length:主體的長度Content-Type:這個主體的對象類型ETag:與此實體相關(guān)的實體標(biāo)記Last-Modified:這個實體最后一次被修改的日期和時間

實體的主體部分:該部分其實就是HTTP要傳輸?shù)膬?nèi)容,是可選的。HTTP報文可以承載很多類型的數(shù)字數(shù)據(jù),比如,圖片、視頻、HTML文檔電子郵件、軟件應(yīng)用程序等等。

常用的HTTP方法和狀態(tài)碼就不詳細介紹了,本文完結(jié)!你這都能耐心看完,我覺得你太厲害了!

以上就是關(guān)于pos機cdma網(wǎng)線,前端需要了解的計算機網(wǎng)絡(luò)知識的知識,后面我們會繼續(xù)為大家整理關(guān)于pos機cdma網(wǎng)線的知識,希望能夠幫助到大家!

轉(zhuǎn)發(fā)請帶上網(wǎng)址:http://m.afbey.com/newsone/73694.html

你可能會喜歡:

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 babsan@163.com 舉報,一經(jīng)查實,本站將立刻刪除。