計(jì)算機(jī)發(fā)展大致經(jīng)過這幾個時代,一開始計(jì)算機(jī)只是用作大型運(yùn)算,后來發(fā)展為普通民用的計(jì)算機(jī)。早期的計(jì)算很笨重,處理速度也慢,后來經(jīng)過人們的改良有了以下幾個階段
網(wǎng)絡(luò)通信的方式有兩種:電話交換和分組交換
分組交換。將要發(fā)送的數(shù)據(jù)包分成多個數(shù)據(jù)包,按照一定的順序之后分別發(fā)送,提高了發(fā)送效率。每一個數(shù)據(jù)包都有自己的數(shù)據(jù),目標(biāo)地址和源地址。因此不要擔(dān)心包會找不到路~
網(wǎng)絡(luò)分為兩類:
網(wǎng)絡(luò)通信中,根據(jù)目標(biāo)地址的個數(shù)及其后續(xù)的行為對通信進(jìn)行分類。如廣播,多播
TCP/IP通信中使用MAC地址、IP地址、端口號等信息作為地址標(biāo)識。地址具有以下特性
計(jì)算機(jī)之間需要通過電纜互相連接。電纜可以根據(jù)數(shù)據(jù)鏈路的不同選擇不同的對應(yīng)的電纜。(像我們平時說的以太網(wǎng),其實(shí)就是指一種數(shù)據(jù)鏈路。其通信媒介有同軸電纜、雙絞線電纜、光纖電纜等等)
ps:
一個硬件設(shè)備,用來連接網(wǎng)絡(luò)
將電纜傳過來的電信號或者光信號經(jīng)由中繼器的波形調(diào)整和放大傳給另一個電纜。作用在OSI模型的第一層,物理層面上延長網(wǎng)絡(luò)的設(shè)備。
有多個端口的叫做集線器。每一個端口都是中繼器
網(wǎng)橋是在OSI模型上的第二層-數(shù)據(jù)鏈路層上連接兩個網(wǎng)絡(luò)的設(shè)備。將識別數(shù)據(jù)鏈路層中的數(shù)據(jù)幀,并將這些數(shù)據(jù)幀臨時存儲于內(nèi)存,再重新生成信號作為一個全新的幀發(fā)給相連的一個網(wǎng)段。
有些網(wǎng)橋能夠判斷是否將數(shù)據(jù)包轉(zhuǎn)發(fā)給相鄰的網(wǎng)段,這種網(wǎng)橋稱為自學(xué)式網(wǎng)橋。
以太網(wǎng)等網(wǎng)絡(luò)中經(jīng)常使用的交換集線器(Hub),現(xiàn)在基本也屬于網(wǎng)橋的一種。交換集線器中連接電纜的每個端口都能提供類似網(wǎng)橋的功能
路由器作用于OSI的第3層模型。網(wǎng)絡(luò)層面上連接兩個網(wǎng)絡(luò),并對分組報(bào)文進(jìn)行轉(zhuǎn)發(fā)。根據(jù)IP地址轉(zhuǎn)發(fā)
4-7層交換機(jī)負(fù)責(zé)處理OSI模型中的從傳輸層至應(yīng)用層的數(shù)據(jù)。用TCP/IP分層模型來表述。4~7層交換機(jī)就是以TCP等協(xié)議的傳輸層及其上面的應(yīng)用為基礎(chǔ),分析手法數(shù)據(jù),并對其進(jìn)行特殊處理(可以在這些層中做負(fù)載均衡)。
此外,在網(wǎng)絡(luò)比較擁堵的時候,優(yōu)先處理像語音這種實(shí)時性比較高的時候的需求,放緩處理像郵件等稍有延遲也并無大礙的通信請求。這種處理稱為帶寬控制
網(wǎng)關(guān)是負(fù)責(zé)將傳輸層到應(yīng)用層的數(shù)據(jù)進(jìn)行轉(zhuǎn)換和轉(zhuǎn)發(fā)的設(shè)備。不僅轉(zhuǎn)發(fā)數(shù)據(jù)還負(fù)責(zé)對數(shù)據(jù)進(jìn)行轉(zhuǎn)換,它通常會使用一個表示層或者應(yīng)用層網(wǎng)關(guān)。在兩個不能進(jìn)行直接通信的協(xié)議之間進(jìn)行翻譯,最終實(shí)現(xiàn)兩者之間的通信。
舉例:
手機(jī)郵件和互聯(lián)網(wǎng)郵件互相轉(zhuǎn)發(fā)。通過郵件網(wǎng)關(guān)翻譯成雙方熟悉的語法語言(協(xié)議)
圖解
學(xué)一個東西要知道東西怎么來的,解決什么問題的。TCP/IP的出現(xiàn),是為了實(shí)現(xiàn)一個容災(zāi)性強(qiáng),分布式的網(wǎng)絡(luò)。
TCP/IP也有自己的模型。我們熟悉的四層模型;物理層、網(wǎng)絡(luò)層(IP、ICMP、ARP)、傳輸層(TCP、UDP)、應(yīng)用層(http、stamp、ftp,SSH、TELNET);
MAC地址用于識別數(shù)據(jù)鏈路中互連的節(jié)點(diǎn)。具有唯一性
共享介質(zhì)網(wǎng)絡(luò)指的是由多個設(shè)備共享一個通信介質(zhì)的一種網(wǎng)絡(luò)。采用半雙工通信,并有必要對介質(zhì)進(jìn)行訪問控制。有兩種方式:
網(wǎng)絡(luò)中的每個站通過交換機(jī)直連,由交換機(jī)負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù)幀。這種方式會使計(jì)算機(jī)與交換機(jī)端口之間形成一對一的鏈接,即可實(shí)現(xiàn)全雙工通信。
全雙工的意思是既可以接受數(shù)據(jù)也可以發(fā)送數(shù)據(jù),而半雙工就是同一時間只能接受數(shù)據(jù)或者發(fā)送數(shù)據(jù)(類似無線電收發(fā)器,若兩端同時說話,是聽不見對方說話的。)
數(shù)據(jù)鏈路層提供直連兩個設(shè)備之間的功能。網(wǎng)絡(luò)層的IP則負(fù)責(zé)在沒有直連的兩個網(wǎng)絡(luò)之間進(jìn)行通信傳輸。IP協(xié)議相當(dāng)于給網(wǎng)絡(luò)提供了行程表;而數(shù)據(jù)鏈路則提供了車票,飛機(jī)票等等。
IPV4地址由32位正整數(shù)組成。由網(wǎng)絡(luò)號,主機(jī)號組成。網(wǎng)絡(luò)號表示該網(wǎng)絡(luò)處在哪一個網(wǎng)段;主機(jī)號則表示是哪臺機(jī)子。
實(shí)現(xiàn)IP通信的主機(jī)和路由器都必須持有一張路由控制表,它指明了目標(biāo)地址要經(jīng)過的哪些路由,哪些主機(jī)。
IPV6由128位組成。是為了根本解決IPV4地址耗盡的問題而被標(biāo)準(zhǔn)化的網(wǎng)際協(xié)議。
DNS可以將我們輸入的地址轉(zhuǎn)化為IP地址。由于IP地址并不好記。因此TCP/IP世界從一開始就已經(jīng)有了一個叫做主機(jī)碼的東西。當(dāng)我們進(jìn)行網(wǎng)絡(luò)通信的時候,系統(tǒng)自動將主機(jī)名轉(zhuǎn)換成具體的IP地址。為了實(shí)現(xiàn)這個功能,通常會利用一個叫做host的數(shù)據(jù)文件。DNS可以說是一個維護(hù)了域名和IP地址映射關(guān)系的一個數(shù)據(jù)庫
DNS的域名每一個域名都有自己服務(wù)器,他們呈樹形結(jié)構(gòu)。其中根服務(wù)器擁有所有的域名,我們訪問的時候首先會去根服務(wù)器記性查詢,根域名服務(wù)器會將想查詢的地址返回,讓你去對應(yīng)的域名服務(wù)器找到對應(yīng)的域名然后轉(zhuǎn)成IP地址。(如果找不到就會遞歸到上層服務(wù)器然后遍歷)
ARP是一種解決地址問題的協(xié)議。用來映射IP地址和MAC地址之間的關(guān)系。它的工作原理是:發(fā)送一個ARP一個請求,然后會廣播同一個鏈路層的所有主機(jī)。如果是目標(biāo)IP地址與其中的一個主機(jī)相同,那么這個主機(jī)就會返回一個ARP響應(yīng),同時帶上自己的MAC地址給ARP請求。(為了避免發(fā)送多次請求,一般會將這種映射關(guān)系緩存起來,可以放在接收主機(jī)端。)
RARP將MAC地址定位IP地址的一種協(xié)議。例如將打印機(jī)服務(wù)等小型嵌入式設(shè)備接入到網(wǎng)絡(luò)就會經(jīng)常用到。
ICMP是一種診斷網(wǎng)絡(luò)是否正常工作,以及遇到異常的時候進(jìn)行問題診斷的協(xié)議。
動態(tài)地為每一臺主機(jī)設(shè)置IP地址。我們會先準(zhǔn)備一個DHCP服務(wù)器,當(dāng)有新的物理機(jī)連進(jìn)來的時候,就會動態(tài)地為這臺電腦進(jìn)行IP分配。生活中,我們的DHCP是路由器,因?yàn)橐粋€家庭的話主機(jī)數(shù)不會太多。但是如果是大型網(wǎng)絡(luò)的話,就不可以用路由器了。一般采用DHCP中繼代理
NAT(NetWork Address Translator),從單詞的翻譯來說就是網(wǎng)絡(luò)地址的翻譯者。就是將本地網(wǎng)絡(luò)中使用私有地址,在連接互聯(lián)網(wǎng)的時候轉(zhuǎn)而使用全局IP地址的技術(shù)。由此可以實(shí)現(xiàn),一個全局IP地址和多個主機(jī)通信。
它的工作機(jī)制是。訪問外網(wǎng)的時候,私網(wǎng)會將自己的IP地址替換成全局IP地址(源地址),目標(biāo)地址不變
NAT-PT技術(shù)是將IPV6的首部轉(zhuǎn)換成IPV4的首部的一種技術(shù),用于兼容IPV4和IPV6
IP隧道是一種兼容IPV4和IPV6之間通信的一種管道。假設(shè)A(6),B(4),C(6)。中間有一個4,A,C想要通信的話,就需要一個隧道,在通訊的時候加上IPV6的首部。
傳輸層有兩大協(xié)議:TCP、UDP。一般通信的模式是客戶端-服務(wù)端模式,以端口的形式區(qū)別應(yīng)用。
如果想要實(shí)現(xiàn)可靠的連接,就要設(shè)想在惡劣環(huán)境下的一系列問題;比如說:數(shù)據(jù)的破壞、丟包、重復(fù)、以及分片順序混亂等問題。
TCP通過校驗(yàn)和、序列號、確認(rèn)應(yīng)答、重發(fā)控制、連接管理、以及窗口控制解決等實(shí)現(xiàn)可靠性傳輸。
A->B:此時B會發(fā)一個ACK消息告訴A,收到請求了。這樣就能確保A的數(shù)據(jù)已經(jīng)發(fā)送到B了,TCP利用確認(rèn)應(yīng)答機(jī)制實(shí)現(xiàn)了可靠的數(shù)據(jù)傳輸;如果一段時間沒有收到ACK,那么A就會嘗試重發(fā)。。
TCP要求不論處在何種網(wǎng)絡(luò)環(huán)境下都要提供高性能通信,并且網(wǎng)絡(luò)如何擁堵,都要保持可靠連接這個特性。為此,每次發(fā)包時都會計(jì)算返回時間以及其偏差。將往返時間 +偏差。重發(fā)超時就是比這個要稍大一點(diǎn)的值。
重發(fā)以后如果還沒有收到應(yīng)答,就會繼續(xù)發(fā)送。此時等待應(yīng)答的時候會以2倍,4倍的指數(shù)函數(shù)延長。達(dá)到一定次數(shù)以后,如果沒有任何確認(rèn)應(yīng)答返回,就會判斷為網(wǎng)絡(luò)或者對端主機(jī)異常。
TCP建立數(shù)據(jù)通信之前會發(fā)一個SYN包作為建立連接的請求等待確認(rèn)認(rèn)答;在通信結(jié)束的時候會進(jìn)行斷開連接的處理(FIN包)
在TCP建立連接的時候,建立的過程中會確認(rèn)發(fā)送數(shù)據(jù)包的最大消息長度(MSS);兩端的主機(jī)在建立請求的時候,會在TCP首部中寫入MSS選項(xiàng),告訴對方自己的接口所容納的MSS大小,然后取兩者較小的值投入使用
TCP以一個段為單位,每發(fā)一個段進(jìn)行一次確認(rèn)應(yīng)答的處理。這樣的傳輸方式有一個缺點(diǎn),那就是包的往返時間越長,通信性能越低(因?yàn)樾枰獙Ψ降膽?yīng)答,才可以繼續(xù)發(fā)送。)
為了解決這個問題,引入了窗口的概念。窗口是指可以發(fā)送一段序號的數(shù)據(jù)。比如說(1~4000)。窗口大小指的無需等待確認(rèn)應(yīng)答而可以繼續(xù)發(fā)送數(shù)據(jù)的最大值。這個機(jī)制使用了大量的緩沖區(qū)(緩存),將沒有確認(rèn)應(yīng)答的全部放進(jìn)緩存區(qū)里。
窗口控制與重發(fā)控制
如果在傳輸過程中出現(xiàn)段丟失
發(fā)送端會根據(jù)自己的實(shí)際情況發(fā)送數(shù)據(jù)。但是,接收端可能收到的是一個毫無關(guān)系的數(shù)據(jù)包,又可能會在處理其他問題上花費(fèi)一定的時間。甚至在高負(fù)荷情況下無法接收本應(yīng)該接收的數(shù)據(jù)。這樣又會觸發(fā)重發(fā)機(jī)制。從而導(dǎo)致網(wǎng)絡(luò)流量浪費(fèi)。
因此TCP提供了一種機(jī)制可以讓發(fā)送端根據(jù)接收端的實(shí)際接收能力控制發(fā)送的數(shù)據(jù)量。這就是流控制
接收端會告訴發(fā)送端自己的可以接收的數(shù)據(jù)量大小。為了防止無法通信的問題出現(xiàn),發(fā)送端主機(jī)會時不時的發(fā)送一個叫做窗口探測的數(shù)據(jù)段,來獲取最新的窗口大小信息
TCP為了防止網(wǎng)絡(luò)癱瘓,在通信一開始的時候會通過一個叫做慢啟動的算法得出數(shù)值,對發(fā)送數(shù)據(jù)量進(jìn)行控制。其工作機(jī)制如下:
其實(shí)可以從兩個方面去想:
和我們開發(fā)Web項(xiàng)目比較相關(guān)聯(lián)的知識點(diǎn)有以下。
WWW定義了三個重要的概念,分貝時訪問手段與位置(URI)、信息的表現(xiàn)形式(Html)、以及信息轉(zhuǎn)發(fā)(Http)。
聯(lián)系客服