這些天在讀《計算機(jī)網(wǎng)絡(luò)》(Andrew著,潘愛民譯)台夺、《計算機(jī)網(wǎng)絡(luò):自頂向下方法》径玖、《TCP/IP詳解 卷1》,記了一點筆記颤介。
0.層
網(wǎng)絡(luò)是分層的梳星,每層都只依賴其直接下層。
OSI模型分7層滚朵,從上到下依次是應(yīng)用層冤灾、表示層、會話層辕近、傳輸層韵吨、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層移宅、物理層归粉。
TCP/IP模型分4層椿疗,依次是應(yīng)用層、傳輸層盏浇、網(wǎng)絡(luò)層变丧、鏈路層。
應(yīng)用層太高绢掰,鏈路層太低痒蓬,重點在傳輸、網(wǎng)絡(luò)兩層滴劲。
又以傳輸層的TCP協(xié)議攻晒、網(wǎng)絡(luò)層的IP協(xié)議,為重點中的重點班挖。
1.鏈路層
負(fù)責(zé)把數(shù)據(jù)從一個節(jié)點通過鏈路送往另一個相鄰的節(jié)點鲁捏。
節(jié)點指一臺主機(jī)或路由器,信道指連接兩個節(jié)點的通信信道萧芙。
傳送的數(shù)據(jù)單元是幀给梅。
網(wǎng)卡、驅(qū)動程序双揪、電纜及其他傳輸媒介动羽,都屬于這一層。
2.網(wǎng)絡(luò)層
負(fù)責(zé)把數(shù)據(jù)從一個節(jié)點渔期,送往另一個并不直接相鄰的節(jié)點运吓。
傳送的數(shù)據(jù)單元是包。
要送往并不相鄰的節(jié)點疯趟,就要決定到目標(biāo)節(jié)點的路徑拘哨,這決定過程叫做路由,也叫選路信峻。
網(wǎng)絡(luò)服務(wù)可以有連接倦青,也可以無連接。有連接的網(wǎng)絡(luò)稱為虛電路網(wǎng)絡(luò)盹舞,無連接的網(wǎng)絡(luò)稱為數(shù)據(jù)報網(wǎng)絡(luò)产镐。
網(wǎng)絡(luò)層的重要協(xié)議是IP協(xié)議。
每個連接到互聯(lián)網(wǎng)上的設(shè)備矾策,都有一個IP地址。
32位的IP地址峭沦,習(xí)慣性每個字節(jié)(8位)一節(jié)贾虽,分為四節(jié),每節(jié)用一個0至255的10進(jìn)制數(shù)字表示吼鱼。
ping和traceroute是兩個常用的網(wǎng)絡(luò)診斷工具蓬豁,懷疑網(wǎng)絡(luò)不通的時候绰咽,我們常ping一下,而traceroute可以讓我們看到從起點到終點過程中都走過了哪些站地粪。
如果我的電腦沒有公網(wǎng)IP取募,訪問有公網(wǎng)IP的網(wǎng)站,在請求到達(dá)有公網(wǎng)IP(A.A.A.A)的路由器時蟆技,路由器記錄我的內(nèi)網(wǎng)IP(B.B.B.B)和源端口(X)玩敏,再使用公網(wǎng)IP和一個作為路由器源端口的端口號(Y),向網(wǎng)站發(fā)送請求质礼;網(wǎng)站會將響應(yīng)發(fā)給A.A.A.A(即路由器的IP)的端口Y旺聚,路由器收到響應(yīng)后,根據(jù)Y的值眶蕉,判斷出應(yīng)該將響應(yīng)轉(zhuǎn)交給B.B.B.B的X端口砰粹,從而將網(wǎng)站響應(yīng)給到我的電腦。這就是網(wǎng)絡(luò)地址轉(zhuǎn)換NAT技術(shù)造挽。
3.傳輸層
負(fù)責(zé)把數(shù)據(jù)從一個節(jié)點的進(jìn)程碱璃,送往另一個可能并不直接相鄰的節(jié)點的進(jìn)程。
IP指明了節(jié)點的位置饭入,而端口號指明了發(fā)送方和接收方是該節(jié)點的哪個進(jìn)程嵌器。
socket是傳輸層暴露給應(yīng)用層的接口,應(yīng)用程序員使用socket進(jìn)行網(wǎng)絡(luò)編程圣拄。
UDP是無連接的協(xié)議嘴秸,而TCP是有連接的協(xié)議。
TCP著名的三次握手庇谆,類似打電話時說的「能聽到嗎岳掐?」「能聽到。你能聽到我嗎饭耳?」「能串述。我明天請你吃飯∧ぃ」前兩次握手目的是單純確認(rèn)連接通暢纲酗,第三次握手的目的包括確認(rèn)連接通暢,可以也包括「說正事」新蟆,即傳輸要傳輸?shù)男畔ⅰ?/p>
這樣觅赊,就基于無連接的IP協(xié)議,建立起了有連接的TCP協(xié)議琼稻。
TCP協(xié)議提供的是全雙工服務(wù)吮螺,即A和B建立連接之后,可以在同一時間,既有A流向B的數(shù)據(jù)鸠补,也有B流向A的數(shù)據(jù)萝风。
傳送的數(shù)據(jù)單元是段。
4.應(yīng)用層
負(fù)責(zé)把有格式的數(shù)據(jù)在兩個節(jié)點上的兩個進(jìn)程間傳輸(使用socket)紫岩,傳輸?shù)臄?shù)據(jù)單元是報文规惰,使應(yīng)用程序完成用戶實際需要的功能。
這兩個進(jìn)程可以是客戶機(jī)-服務(wù)器關(guān)系泉蝌,也可以是對等關(guān)系歇万。
域名系統(tǒng)DNS將有意義的字符串(域名)映射到IP地址上,使網(wǎng)站的地址更容易被記憶梨与。
電子郵件的發(fā)送過程:發(fā)信人的電腦 -> 發(fā)信人郵箱服務(wù)器 -> 收信人郵箱服務(wù)器 -> 收信人的電腦堕花。使用SMTP協(xié)議。
萬維網(wǎng)把Internet上的內(nèi)容們鏈接起來粥鞋,用戶使用瀏覽器瀏覽網(wǎng)頁缘挽,使用HTTP協(xié)議。
文件傳輸協(xié)議FTP讓用戶向遠(yuǎn)程主機(jī)上傳或下載文件呻粹。
內(nèi)容分發(fā)網(wǎng)絡(luò)CDN在多個地點儲存相同的數(shù)據(jù)壕曼,便于用戶就近訪問,減少訪問時間等浊。
P2P下載是對等網(wǎng)絡(luò)的應(yīng)用腮郊,如著名的BT下載,用戶使用種子文件筹燕,通過服務(wù)器和已擁有待下載文件的用戶取得連接轧飞,從他們那里獲取資源。
5.其他
1)各層數(shù)據(jù)單元的格式撒踪,不贅
2)選路过咬、避免擁堵、保證服務(wù)質(zhì)量等具體策略制妄,不贅
3)其他的細(xì)節(jié)掸绞,不贅
4)HTTP,可能會獨立成篇
6.寫在后面
這篇內(nèi)容太少了耕捞,明明是三本講網(wǎng)絡(luò)的好書衔掸,每本都不算薄。筆記卻這么短俺抽,內(nèi)容又這么淺敞映,像話嗎?
必須承認(rèn)磷斧,這三本書的大部分內(nèi)容振愿,我都并沒有看诗芜,這與我的閱讀風(fēng)格有關(guān)(可參考如何閱讀那篇),我的根本原則是埃疫,讀書要有抓有放,少抓多放孩哑,效率優(yōu)先栓霜。例如這幾本書里的龐大的技術(shù)細(xì)節(jié),以及我一點都不感興趣的網(wǎng)絡(luò)歷史横蜒,我就都略過了胳蛮。
每個讀書人,他所處的階段丛晌、面臨的需求仅炊、閱讀的目的都有不同,所以該讀什么書澎蛛、該怎么讀抚垄,都必須具體分析,我絕不敢狂妄到認(rèn)為自己能給出放之四海而皆準(zhǔn)的建議谋逻。但我有一個原則——形而上的呆馁,這就有可能普適——要有一個讀書的目的,而不是把讀書本身作為最終目的毁兆,那個真正的目的浙滤,不論是功利的還是興趣的,是學(xué)術(shù)的還是應(yīng)用的气堕,應(yīng)該成為指引你閱讀方式的北極星纺腊。要敢于選書,選到適合自己當(dāng)前階段最好的書之后茎芭,要敢于對其中部分章節(jié)不看揖膜,對自己確實決定要看的章節(jié),要敢于看了之后不信骗爆,最終選了次氨、看了、信了的部分摘投,才是你自己的東西煮寡。我最反對的,是不管三七二十一犀呼,拿書就讀幸撕,從頭到尾,逐字逐句外臂,讀完深信不疑坐儿,鸚鵡學(xué)舌,生搬硬套。
現(xiàn)在這篇筆記貌矿,只是階段性成果炭菌,但對我來說,暫時算夠用逛漫,網(wǎng)絡(luò)知識的學(xué)習(xí)黑低,我還會在相當(dāng)長的時間里零碎地繼續(xù)下去,當(dāng)學(xué)得更深入了酌毡,會更新到這筆記里克握,操作系統(tǒng)、算法的筆記枷踏,也都會慢慢學(xué)習(xí)更新菩暗。所以,待續(xù)旭蠕。