最近由于面試鹃唯,會(huì)問到關(guān)于網(wǎng)絡(luò)的東西冻河,于是就又拿起了大學(xué)的書翻看贞间,就是謝希仁那本婚脱,忽然發(fā)現(xiàn)好多都忘了。ps:這還是我在簡書的第一篇文章重付。
網(wǎng)絡(luò)中主要有兩個(gè)模型分類顷级,一個(gè)是osi七層模型,一個(gè)是TCP/IP四層模型确垫,其實(shí)我感覺都差不多啦弓颈,只不過一個(gè)是理論上的,一個(gè)是實(shí)際應(yīng)用的森爽。
osi(開放系統(tǒng)互聯(lián)參考模型)七層由低到高分為:物理層恨豁,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層爬迟,傳輸層橘蜜,會(huì)話層,表示層付呕,應(yīng)用層计福。下層為上層提供服務(wù),上層為下層提供接口徽职。
TCP/IP四層模型:物理層象颖,網(wǎng)絡(luò)層,傳輸層姆钉,應(yīng)用層(包含了OSI中的上三層)说订。
先看下各層的傳輸單位,應(yīng)用層是報(bào)文(message)潮瓶,報(bào)文在發(fā)送之前一般會(huì)劃分成為等長的數(shù)據(jù)段陶冷,在每段前面加上一些必要的控制信息組成的首部后,就構(gòu)成了一個(gè)分組(packet)毯辅,也叫做包埂伦,首部也可叫包頭。無論在哪一層傳送的數(shù)據(jù)單元思恐,習(xí)慣上都可以籠統(tǒng)地用分組來表示沾谜。
傳輸層主要使用TCP和UDP,如果使用TCP的話胀莹,單位是報(bào)文段(segment)基跑,UDP的單位是用戶數(shù)據(jù)報(bào)。在發(fā)送數(shù)據(jù)時(shí)描焰,網(wǎng)絡(luò)層把傳輸層產(chǎn)生的報(bào)文段或者用戶數(shù)據(jù)報(bào)封裝成分組或包進(jìn)行傳送涩僻,由于網(wǎng)絡(luò)層使用IP協(xié)議,分組也叫做IP數(shù)據(jù)報(bào)栈顷,簡稱數(shù)據(jù)報(bào)逆日。 數(shù)據(jù)鏈路層將網(wǎng)絡(luò)層交下來的IP數(shù)據(jù)報(bào)組裝成幀(framing),物理層單位是比特萄凤,就是0和1室抽。
物理層
接下來簡單介紹一下物理層,首先得支出的是物理層不是指具體的物理設(shè)備或者信號傳輸?shù)奈锢砻襟w靡努,而是指在物理媒體之上為上一層(鏈路層)提供一個(gè)傳輸原始比特流的物理連接坪圾。這一層實(shí)現(xiàn)的硬件是集線器(hub),它對接收到的信號進(jìn)行再生整形放大惑朦,以擴(kuò)大網(wǎng)絡(luò)的傳輸距離兽泄,同時(shí)把所有節(jié)點(diǎn)集中在以它為中心的節(jié)點(diǎn)上。
數(shù)據(jù)鏈路層
數(shù)據(jù)鏈路層協(xié)議有許多種漾月,但是有三個(gè)基本問題則是共同的病梢,這三個(gè)問題就是:封裝成幀、透明傳輸梁肿、差錯(cuò)檢測蜓陌。關(guān)于差錯(cuò)控制,在傳輸過程中可能0變1吩蔑,1變0钮热,這叫做比特差錯(cuò),數(shù)據(jù)鏈路層廣泛使用了循環(huán)冗余檢驗(yàn)CRC(Cyclic Redundancy Check)(這玩意現(xiàn)在都不會(huì)計(jì)算了烛芬,對不起老師八砥凇)。數(shù)據(jù)鏈路層使用兩種信道:點(diǎn)對點(diǎn)信道和廣播信道赘娄,點(diǎn)對點(diǎn)協(xié)議PPP(point-to-point protocol)則是點(diǎn)對點(diǎn)信道常用的協(xié)議仆潮,也是該層最廣泛的協(xié)議,工作在該層的硬件是網(wǎng)橋擅憔。
網(wǎng)絡(luò)層
第三層是網(wǎng)絡(luò)層鸵闪,網(wǎng)絡(luò)層向上層提供的是無連接的數(shù)據(jù)報(bào)服務(wù),數(shù)據(jù)報(bào)服務(wù)的可靠通信應(yīng)該由用戶主機(jī)來保證暑诸、連接的建立可以不需要蚌讼、每個(gè)分組都有終點(diǎn)的完整地址、分組獨(dú)立選擇路由進(jìn)行轉(zhuǎn)發(fā)个榕,當(dāng)結(jié)點(diǎn)出故障時(shí)篡石,故障結(jié)點(diǎn)可能會(huì)丟失分組,一些路由可能會(huì)發(fā)生改變西采,到達(dá)終點(diǎn)不一定按發(fā)送順序凰萨,端到端的差錯(cuò)控制和流量控制由用戶主機(jī)負(fù)責(zé)。網(wǎng)絡(luò)層不提供服務(wù)質(zhì)量的承諾,IP數(shù)據(jù)報(bào)首部中的檢驗(yàn)和字段胖眷,只檢驗(yàn)首部是否出現(xiàn)差錯(cuò)而不檢查數(shù)據(jù)部分武通。如果主機(jī)中的進(jìn)程之間的通信需要是可靠的,那么就由網(wǎng)絡(luò)的主機(jī)中的運(yùn)輸層負(fù)責(zé)(包括差錯(cuò)處理珊搀、流量控制等)冶忱,IP協(xié)議是該層的核心協(xié)議,IP協(xié)議的主要功能就是無連接的數(shù)據(jù)報(bào)傳輸境析、數(shù)據(jù)報(bào)路由選擇和差錯(cuò)控制囚枪。
傳輸層
第四層是傳輸層,它屬于面向通信的最高層劳淆,同時(shí)也是用戶功能中的最底層链沼。當(dāng)網(wǎng)絡(luò)的邊緣部分中的兩個(gè)主機(jī)使用網(wǎng)絡(luò)的核心部分的功能進(jìn)行端到端的通信時(shí),只有主機(jī)的協(xié)議棧才有傳輸層沛鸵,而網(wǎng)絡(luò)核心部分中的路由器在轉(zhuǎn)發(fā)分組時(shí)都只用到下三層的功能括勺。網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信,而傳輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯通信谒臼。端口是應(yīng)用層各協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jìn)行層間交互的一種地址朝刊,傳輸層的端口號分為兩大類,一是服務(wù)器使用的端口號蜈缤,這里又分兩類拾氓,熟知端口號,也叫系統(tǒng)端口號底哥,數(shù)值為0~1023咙鞍,例如FTP(21)、HTTP(80)趾徽、SMTP(25)等续滋,另一種是登記端口號,數(shù)值在1024~49151孵奶;另一類是客戶端使用的端口號疲酌,數(shù)值在49152~65535之間。
傳輸層有一個(gè)重要的功能是復(fù)用和分用了袁,復(fù)用是指發(fā)送方不同的應(yīng)用進(jìn)程可以使用同一個(gè)傳輸層協(xié)議傳送數(shù)據(jù)朗恳,而分用是指接收方的傳輸層在剝?nèi)?bào)文的首部后能夠把這些數(shù)據(jù)正確交付到目的進(jìn)程。 傳輸層有兩個(gè)協(xié)議载绿,面向連接的TCP和無連接的UDP粥诫。UDP是無連接的,使用盡最大努力交付崭庸,即不可靠交付怀浆,UDP是面向報(bào)文的谊囚,UDP沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)發(fā)送速率降低执赡,UDP支持一對一镰踏、一對多、多對一搀玖、多對多的交互通信余境,UDP的首部開銷小。TCP是面向連接的傳輸層協(xié)議灌诅,TCP連接只能是一對一的,它提供可靠的交付服務(wù)含末,也就是說猜拾,通過TCP連接傳送的數(shù)據(jù),無差錯(cuò)佣盒、不丟失挎袜、不重復(fù)、并且按序到達(dá)肥惭,TCP提供全雙工通信盯仪,TCP是面向字節(jié)流的,TCP把應(yīng)用程序交下來的數(shù)據(jù)塊看成無結(jié)構(gòu)的字節(jié)流蜜葱,TCP不保證接收方應(yīng)用程序收到的數(shù)據(jù)塊和發(fā)送方應(yīng)用程序所發(fā)出的數(shù)據(jù)塊具有對應(yīng)的大小關(guān)系(例如全景,發(fā)送方應(yīng)用程序交給發(fā)送方TCP共10個(gè)數(shù)據(jù)塊,但接收方的TCP可能只用4個(gè)數(shù)據(jù)塊就把收到的字節(jié)流交付給了上層的應(yīng)用程序牵囤,但接收方應(yīng)用程序收到的字節(jié)流必須和發(fā)送方應(yīng)用程序發(fā)出的字節(jié)流完全一樣)爸黄。
TCP連接的端點(diǎn)叫做套接字(socket)或插口,即(IP地址:端口號)揭鳞,每一條TCP連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即兩個(gè)套接字)所確定炕贵。
TCP的傳輸連接有三個(gè)階段,即連接建立野崇、數(shù)據(jù)傳送称开、連接釋放。TCP連接建立的過程要使每一方能夠確定對方的存在乓梨,主動(dòng)發(fā)起連接建立的應(yīng)用進(jìn)行叫做客戶(client)鳖轰,被動(dòng)等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器(server),連接建立的過程叫做三次握手督禽,假設(shè)A為客戶脆霎,B為服務(wù)器,A發(fā)送一個(gè)報(bào)文給B狈惫,B發(fā)回確認(rèn)睛蛛,然后A再加以確認(rèn)鹦马,來回共三次。ps:這個(gè)據(jù)說問的挺多的忆肾,但是知道這個(gè)了我不知道在開發(fā)中有什么用啊荸频,打什么給我解答一些,謝謝?透浴P翊印!
下面到了盜圖的時(shí)間场仲,實(shí)在不會(huì)整圖和悦。
TCP/IP協(xié)議三次握手:
TCP/IP四次揮手(釋放連接時(shí)),釋放時(shí)不管是服務(wù)器還是客戶端都可以主動(dòng)釋放:
應(yīng)用層
第五層是應(yīng)用層渠缕,F(xiàn)TP(對應(yīng)應(yīng)用鸽素,文件傳送)、HTTP(對應(yīng)應(yīng)用萬維網(wǎng))亦鳞、TELNET(遠(yuǎn)程終端接入)馍忽、SMTP(電子郵件)使用的傳輸層協(xié)議都是TCP,DNS(名字轉(zhuǎn)換)燕差、TFTP(文件傳送)遭笋、專用協(xié)議(IP電話、流式媒體通信)等使用的傳輸層協(xié)議都是UDP徒探。
以上就是我對于常用的基層的理解瓦呼,畢竟做客戶端的,后邊的我沒有仔細(xì)刹帕。