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

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

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

本文目錄一覽:

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

pos機cdma網(wǎng)線(xiàn)

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

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

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

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

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

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

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

2.1 速率

速率就是數據傳輸(數據是指0和1)的速率,比如你用迅雷下載,1兆每秒,來(lái)衡量目前數據傳輸的快慢。它是計算機網(wǎng)絡(luò )中最重要的一個(gè)性能指標。

2.2 帶寬

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

2.3 吞吐量

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

以上三點(diǎn),我們舉個(gè)案例

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

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

(1)發(fā)送時(shí)延

就是說(shuō)我跟你說(shuō)話(huà),從我開(kāi)始說(shuō),到說(shuō)話(huà)結束這段時(shí)間,就是發(fā)送時(shí)延。

(2)傳播時(shí)延

如gif圖所示,信道上第一個(gè)比特開(kāi)始,到最后一個(gè)比特達到主機接口需要的時(shí)間就是傳播時(shí)延。

(3)排隊時(shí)延

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

(4)處理時(shí)延

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

(5)往返時(shí)間(RTT)

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

(6)時(shí)延帶寬積

是指傳播時(shí)延乘以帶寬

3、正文開(kāi)始!OSI參考模型

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

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

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

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

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

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

為什么需要中繼器呢?

因為再線(xiàn)路上傳輸的信號功率會(huì )逐漸衰減,衰減到一定程度時(shí)將造成信號失真,因此會(huì )導致接收錯誤。

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

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

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

接下來(lái)我們進(jìn)入下一層,數據鏈路層!

5、數據鏈路層5.1 數據鏈路層是做什么的呢?

我們用一個(gè)小故事來(lái)舉例

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

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

(2)透明傳輸

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

(3)差錯控制

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

(4)差錯糾正

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

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

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

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

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

6 以太網(wǎng)和無(wú)線(xiàn)網(wǎng)

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

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

跟以太網(wǎng)相關(guān)的拓撲結構有星型和總線(xiàn)型。

星型拓撲如下:

總線(xiàn)型拓撲如下:

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

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

6.4 網(wǎng)卡

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

6.5 無(wú)線(xiàn)局域網(wǎng)

無(wú)線(xiàn)局域網(wǎng)WLAN是利用無(wú)線(xiàn)電波、激光和紅外線(xiàn)等無(wú)線(xiàn)通信技術(shù)來(lái)構建的局域網(wǎng)。

無(wú)線(xiàn)局域網(wǎng)我們只介紹一下典型的網(wǎng)絡(luò )結構。

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

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

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

(1)網(wǎng)橋

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

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

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

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

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

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

兄弟,能看完上面內容,你也真夠能忍的,牛B,喝口水!繼續!

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

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

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

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

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

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

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

7.2.2 數據報

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

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

為什么要分片呢?

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

接下來(lái)我們就看看在ip數據包上,哪些字段標識了分片的數據呢?

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

ip地址有5種

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7.3 ARP協(xié)議

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

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

上圖有一個(gè)源地址和目的地址,這兩個(gè)地址都是指的mac地址,mac地址是什么呢?簡(jiǎn)單說(shuō)來(lái)就是兩臺相鄰的路由器A和B,A怎么把數據傳給B呢,它總要知道B的物理地址吧,物理地址就像門(mén)牌號一樣,我要知道你住在哪里,才能把數據送過(guò)去吧?

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

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

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

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

路由器里可以開(kāi)啟這個(gè)服務(wù)。

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

7.5 ICMP協(xié)議

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

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

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

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

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

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

以下是4種常見(jiàn)的ICMP差錯報告報文

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

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

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

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

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

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

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

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

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

8 傳輸層知識

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

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

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

8.1 端口號有什么用

端口號可以用來(lái)標識同一個(gè)主機上通信的不同應用程序(就是哪個(gè)應用程序在使用這個(gè)端口)。

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

如果服務(wù)器有兩個(gè)應用程序A,B,分別啟動(dòng)了A服務(wù)和B服務(wù),它們監聽(tīng)同一個(gè)端口,那有數據來(lái)的時(shí)候,服務(wù)器無(wú)法判斷這個(gè)數據到底是給A,還是給B。

8.2 UDP協(xié)議

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

(1) UDP協(xié)議的特點(diǎn)

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

(2)UDP首部

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

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

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

TCP報文的首部格式

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

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

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

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

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

8.3.3 TCP建立連接

如下圖所示,分別來(lái)了解一下建立連接的過(guò)程:

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

如下圖所示,分別來(lái)了解一下釋放連接的過(guò)程:

客戶(hù)端發(fā)起請求,請求斷開(kāi)鏈接。FIN=1,seq=u。u是之前傳送過(guò)來(lái)的最后一個(gè)字節的序號+1。

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

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

為什么最后還要等待兩個(gè)時(shí)間周期呢?

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

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

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

為什么不能用兩次握手進(jìn)行連接?

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

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

如果已經(jīng)建立了連接,但是客戶(hù)端突然出現故障了怎么辦?

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

什么是SYN洪泛攻擊?

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

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

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

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

8.3.6 TCP如何實(shí)現可靠傳輸

主要通過(guò)以下四種方式實(shí)現可靠傳輸機制:

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

為什么需要流量控制呢?

比如發(fā)送方發(fā)送速度非???,接收方接收速度特別慢,這樣就會(huì )發(fā)生嚴重的丟包現象。

TCP通過(guò)滑動(dòng)窗口的機制來(lái)實(shí)現流量控制。簡(jiǎn)單來(lái)說(shuō)如下(建議網(wǎng)上找一個(gè)動(dòng)畫(huà)教程來(lái)理解,文字效果不是很好):

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

這部分我也覺(jué)得文字部分太生硬了,開(kāi)始我也不怎么理解,看來(lái)一個(gè)視頻之后我了解了基本原理,這里我文字版和視頻地址都放上來(lái)。

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

文字版如下:

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

慢開(kāi)始與擁塞避免

發(fā)送的最初執行慢開(kāi)始,令 cwnd = 1,發(fā)送方只能發(fā)送 1 個(gè)報文段;當收到確認后,將 cwnd 加倍,因此之后發(fā)送方能夠發(fā)送的報文段數量為:2、4、8 ...注意到慢開(kāi)始每個(gè)輪次都將 cwnd 加倍,這樣會(huì )讓 cwnd 增長(cháng)速度非???,從而使得發(fā)送方發(fā)送的速度增長(cháng)速度過(guò)快,網(wǎng)絡(luò )擁塞的可能性也就更高。設置一個(gè)慢開(kāi)始門(mén)限 ssthresh,當 cwnd >= ssthresh 時(shí),進(jìn)入擁塞避免,每個(gè)輪次只將 cwnd 加 1。

如果出現了超時(shí),則令 ssthresh = cwnd / 2,然后重新執行慢開(kāi)始。

快重傳與快恢復

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

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

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

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

9.2 應用層常見(jiàn)的模型

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

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

9.3 短鏈接和長(cháng)鏈接

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

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

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

大概的通信過(guò)程如下:

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

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

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

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

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

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

萬(wàn)維網(wǎng)使用統一資源定位符作為標識符來(lái)訪(fǎng)問(wèn)資源。

URL的格式如下:

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

http報文頭分析:

下面是對各部分的簡(jiǎn)要描述:

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

下面是常用頭部:

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

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

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

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

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

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

實(shí)體首部:描述主體的長(cháng)度和內容,或者資源自身

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

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

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

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

轉發(fā)請帶上網(wǎng)址:http://m.xjcwpx.cn/newsone/73694.html

你可能會(huì )喜歡:

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