OSI七層模型:
- 應(yīng)用層:為應(yīng)用程序提供服務(wù)并規(guī)定應(yīng)用程序通信相關(guān)得細(xì)節(jié)。包括文件傳輸,電子郵件,遠(yuǎn)程登錄等。
- 表示層:將應(yīng)用處理的信息轉(zhuǎn)換為適合網(wǎng)絡(luò)傳輸?shù)母袷?,或?qū)碜韵乱粚拥臄?shù)據(jù)轉(zhuǎn)換為上層能夠識(shí)別的數(shù)據(jù)格式。因此它主要負(fù)責(zé)數(shù)據(jù)格式的轉(zhuǎn)換。具體來說,就是將數(shù)據(jù)固有的傳輸格式轉(zhuǎn)換為標(biāo)準(zhǔn)的傳輸格式。不同的設(shè)備對(duì)同一比特流解釋的結(jié)果可能會(huì)不同,因此,使他們保持一致這這一層的主要任務(wù)。
- 會(huì)話層:負(fù)責(zé)建立和斷開通信連接,以及數(shù)據(jù)分割等數(shù)據(jù)傳輸相關(guān)的管理
- 運(yùn)輸層:起著可靠傳輸?shù)淖饔?丟包重發(fā)),只在通信雙發(fā)節(jié)點(diǎn)上進(jìn)行處理,而無需在路由上進(jìn)行處理。
- 網(wǎng)絡(luò)層:將數(shù)據(jù)傳輸?shù)侥繕?biāo)地址,目標(biāo)地址可以是多個(gè)網(wǎng)絡(luò)由路由器連接而成的某一個(gè)地址。因此這一層主要負(fù)責(zé)尋址和路由選擇
- 鏈路層:負(fù)責(zé)物理層面上互連的,節(jié)點(diǎn)之間的通信傳輸。例如與一個(gè)以太網(wǎng)相連的兩個(gè)節(jié)點(diǎn)之間的傳輸。將0,1序列劃分為具有意義的數(shù)據(jù)幀傳送給對(duì)端(數(shù)據(jù)幀的生成與接收。
- 物理層:負(fù)責(zé)0,1比特流 與電壓的高低與光的閃滅之間的轉(zhuǎn)換
TCP/IP四層模型
- 應(yīng)用測(cè):負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)
- 運(yùn)輸層:主要為兩臺(tái)主機(jī)提供端到端的通信
- 網(wǎng)絡(luò)層:處理分組在互聯(lián)網(wǎng)中的活動(dòng),比如路由的選路
- 鏈路層:包括操作系統(tǒng)中的設(shè)備驅(qū)動(dòng)程序,計(jì)算機(jī)中對(duì)應(yīng)的網(wǎng)絡(luò)接口卡
TCP/IP協(xié)議
TCP/IP協(xié)議是TCP, IP, HTTP等協(xié)議的集合
互聯(lián)網(wǎng)協(xié)議就是TCP/IP協(xié)議

包,幀,數(shù)據(jù)包,消息
- 包可以說是全能術(shù)語。
- 幀表示數(shù)據(jù)鏈路層中包得單位。
- 數(shù)據(jù)報(bào)是IP和UDP等網(wǎng)絡(luò)層以上的分層中包的單位。
- 段是表示TCP數(shù)據(jù)流中的消息。
- 消息是指應(yīng)用協(xié)議中數(shù)據(jù)的單位。
一個(gè)數(shù)據(jù)包的發(fā)送
應(yīng)用程序處理,對(duì)數(shù)據(jù)進(jìn)行一些編碼等操作,并建立TCP連接,TCP根據(jù)應(yīng)用的指示,負(fù)責(zé)建立連接,發(fā)送數(shù)據(jù)以及斷開連接,并添加TCP首部,交付給IP,IP添加對(duì)TCP處理過的數(shù)據(jù)添加首部。IP包生成后,參考路由控制表決定接受該IP包的路由或者主機(jī),IP包將會(huì)發(fā)送給連接這些路由器或主機(jī)網(wǎng)絡(luò)接口的驅(qū)動(dòng)程序,已實(shí)現(xiàn)真正的數(shù)據(jù)傳送,如果不知道MAC地址,利用ARP查找。

應(yīng)用層
- 在操作系統(tǒng)中進(jìn)行通信的是:進(jìn)程
- 進(jìn)程通過套接字(socket)進(jìn)行通信
- socket是應(yīng)用程序和網(wǎng)絡(luò)之間的API
- 進(jìn)程尋址方式:主機(jī)地址+端口號(hào)
- 可供應(yīng)用程序使用的運(yùn)輸層服務(wù)(簡(jiǎn)單介紹)
- UDP
- 不可靠數(shù)據(jù)傳送服務(wù)
- 沒有擁塞控制
- TCP
- 面向連接的服務(wù)
- 可靠的數(shù)據(jù)傳送服務(wù)
- 有擁塞控制
- UDP
各層對(duì)應(yīng)的網(wǎng)絡(luò)設(shè)備
原文內(nèi)容:https://blog.csdn.net/qq_25606103/article/details/51288459
應(yīng)用層:
運(yùn)輸層:
網(wǎng)絡(luò)層:
- 路由器:
路由器(Router)工作在第三層(即網(wǎng)絡(luò)層),它比交換機(jī)還要“聰明”一些,它能理解數(shù)據(jù)中的IP地址,如果它接收到一個(gè)數(shù)據(jù)包,就檢查其中的IP地址,如果目標(biāo)地址是本地網(wǎng)絡(luò)的就不理會(huì),如果是其他網(wǎng)絡(luò)的,就將數(shù)據(jù)包轉(zhuǎn)發(fā)出本地網(wǎng)絡(luò)。
與工作在網(wǎng)絡(luò)物理層,從物理上劃分網(wǎng)段的交換機(jī)不同,路由器使用專門的軟件協(xié)議從邏輯上對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行劃分。
例如,一臺(tái)支持IP協(xié)議的路由器可以把網(wǎng)絡(luò)劃分成多個(gè)子網(wǎng)段,只有指向特殊IP地址的網(wǎng)絡(luò)流量才可以通過路由器。當(dāng)IP子網(wǎng)中的一臺(tái)主機(jī)發(fā)送IP分組給同一IP子網(wǎng)的另一臺(tái)主機(jī)時(shí),它將直接把IP分組送到網(wǎng)絡(luò)上,對(duì)方就能收到。
而要送給不同IP于網(wǎng)上的主機(jī)時(shí),它要選擇一個(gè)能到達(dá)目的子網(wǎng)上的路由器,把IP分組送給該路由器,由路由器負(fù)責(zé)把IP分組送到目的地。
如果沒有找到這樣的路由器,主機(jī)就把IP分組送給一個(gè)稱為“缺省網(wǎng)關(guān)(default gateway)”的路由器上。對(duì)于每一個(gè)接收到的數(shù)據(jù)包,路由器都會(huì)重新計(jì)算其校驗(yàn)值,并寫入新的物理地址。
網(wǎng)絡(luò)中的設(shè)備用它們的網(wǎng)絡(luò)地址(TCP/IP網(wǎng)絡(luò)中為IP地址)互相通信。
IP地址是與硬件地址無關(guān)的“邏輯”地址。目前TCP/IP網(wǎng)絡(luò),全部是通過路由器互連起來的,Internet就是成千上萬個(gè)IP子網(wǎng)通過路由器互連起來的國際性網(wǎng)絡(luò)。
路由器用于連接多個(gè)邏輯上分開的網(wǎng)絡(luò),幾個(gè)使用不同協(xié)議和體系結(jié)構(gòu)的網(wǎng)絡(luò)。
路由器利用網(wǎng)絡(luò)層定義的“邏輯”上的網(wǎng)絡(luò)地址(即IP地址)來區(qū)別不同的網(wǎng)絡(luò),實(shí)現(xiàn)網(wǎng)絡(luò)的互連和隔離,保持各個(gè)網(wǎng)絡(luò)的獨(dú)立性。
當(dāng)一個(gè)子網(wǎng)傳輸?shù)搅硗庖粋€(gè)子網(wǎng)時(shí),可以用路由器完成。它具有判斷網(wǎng)絡(luò)地址和選擇路徑的功能,過濾和分隔網(wǎng)絡(luò)信息流。
一方面能夠跨越不同的物理網(wǎng)絡(luò)類型(DDN、FDDI、以太網(wǎng)等等),另一方面在邏輯上將整個(gè)互連網(wǎng)絡(luò)分割成邏輯上獨(dú)立的網(wǎng)絡(luò)單位,使網(wǎng)絡(luò)具有一定的邏輯結(jié)構(gòu)。
總結(jié):路由器的主要工作就是為經(jīng)過路由器的每個(gè)IP數(shù)據(jù)包尋找一條最佳傳輸路徑,并將該數(shù)據(jù)有效地傳送到目的站點(diǎn)。 路由器的基本功能是,把數(shù)據(jù)(IP報(bào)文)傳送到正確的網(wǎng)絡(luò)。
- 網(wǎng)關(guān):
網(wǎng)關(guān)(Gateway)又稱網(wǎng)間連接器、協(xié)議轉(zhuǎn)換器。
網(wǎng)關(guān)在**網(wǎng)絡(luò)層以上**實(shí)現(xiàn)網(wǎng)絡(luò)互連,是最復(fù)雜的網(wǎng)絡(luò)互連設(shè)備,僅用于兩個(gè)高層協(xié)議不同的網(wǎng)絡(luò)互連。網(wǎng)關(guān)既可以用于廣域網(wǎng)互連,也可以用于局域網(wǎng)互連。
網(wǎng)關(guān)是一種充當(dāng)轉(zhuǎn)換重任的計(jì)算機(jī)系統(tǒng)或設(shè)備。
使用在不同的通信協(xié)議、數(shù)據(jù)格式或語言,甚至體系結(jié)構(gòu)完全不同的兩種系統(tǒng)之間,網(wǎng)關(guān)是一個(gè)翻譯器。
與網(wǎng)橋只是簡(jiǎn)單地傳達(dá)信息不同,網(wǎng)關(guān)對(duì)收到的信息要重新打包,以適應(yīng)目的系統(tǒng)的需求。
總結(jié):網(wǎng)關(guān),在網(wǎng)絡(luò)層以上實(shí)現(xiàn)網(wǎng)絡(luò)互連通,字面意思解釋就是網(wǎng)絡(luò)的關(guān)口。從技術(shù)角度來解釋,就是連接兩個(gè)不同網(wǎng)絡(luò)的接口,比如局域網(wǎng)的共享上網(wǎng)服務(wù)器就是局域網(wǎng)和廣域網(wǎng)的接口。
鏈路層:
- 中繼器:
中繼器(Repeater)是連接網(wǎng)絡(luò)線路的一種裝置,常用于兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)之間物理信號(hào)的雙向轉(zhuǎn)發(fā)工作。
中繼器是最簡(jiǎn)單的網(wǎng)絡(luò)互聯(lián)設(shè)備,主要完成物理層的功能,負(fù)責(zé)在兩個(gè)節(jié)點(diǎn)的物理層上按位傳遞信息,完成信號(hào)的復(fù)制、調(diào)整和放大功能,以此來延長網(wǎng)絡(luò)的長度。
它在OSI參考模型中的位置物理層。
由于存在損耗, 在線路上傳輸?shù)男盘?hào)功率會(huì)逐漸衰減,衰減到一定程度時(shí)將造成信號(hào)失真,因此會(huì)導(dǎo)致接收錯(cuò)誤。
中繼器就是為解決這一問題而設(shè)計(jì)的。它完成物理線路的連接,對(duì)衰減的信號(hào)進(jìn)行放大,保持與原數(shù)據(jù)相同。
中繼器是模擬設(shè)備,用于連接兩根電纜段。中繼器不理解幀、分組和頭的概念,他們只理解電壓值。
總結(jié):位于OSI的物理層,一種信號(hào)放大器,與具體信息無關(guān),由于信號(hào)在傳輸過程中有衰減,為了使其傳遞的更遠(yuǎn),需要利用中繼器等設(shè)備進(jìn)行放大。
- 集線器:
集線器(Hub)是中繼器的一種形式,區(qū)別在于集線器能夠提供多端口服務(wù),也稱為多口中繼器。
集線器在OSI/RM中的物理層。
總結(jié):差不多就是個(gè)多端口的中繼器,把每個(gè)輸入端口的信號(hào)放大再發(fā)到別的端口去,集線器可以實(shí)現(xiàn)多臺(tái)計(jì)算機(jī)之間的互聯(lián),因?yàn)樗泻芏嗟亩丝?,每個(gè)口都能連計(jì)算機(jī)。
- 網(wǎng)橋:
網(wǎng)橋(Bridge)是一個(gè)局域網(wǎng)與另一個(gè)局域網(wǎng)之間建立連接的橋梁。
網(wǎng)橋是屬于數(shù)據(jù)鏈路層的一種設(shè)備,它的作用是擴(kuò)展網(wǎng)絡(luò)和通信手段,在各種傳輸介質(zhì)中轉(zhuǎn)發(fā)數(shù)據(jù)信號(hào),擴(kuò)展網(wǎng)絡(luò)的距離,同時(shí)又有選擇地將現(xiàn)有地址的信號(hào)從一個(gè)傳輸介質(zhì)發(fā)送到另一個(gè)傳輸介質(zhì),并能有效地限制兩個(gè)介質(zhì)系統(tǒng)中無關(guān)緊要的通信。
總結(jié):網(wǎng)橋工作在數(shù)據(jù)鏈路層,將兩個(gè)LAN(局域網(wǎng))連起來,根據(jù)MAC地址來轉(zhuǎn)發(fā)幀,可以看作一個(gè)“低層的路由器”。
- 交換機(jī):
交換機(jī)(Swich)工作在第二層(即數(shù)據(jù)鏈路層),它要比集線器智能一些,它能分辨出幀中的源MAC地址和目的MAC地址,因此可以在任意兩個(gè)端口間建立聯(lián)系,
在數(shù)據(jù)幀的始發(fā)者和目標(biāo)接收者之間建立臨時(shí)的交換路徑,使數(shù)據(jù)幀直接由源地址到達(dá)目的地址。
交換機(jī)通過對(duì)信息進(jìn)行重新生成,并經(jīng)過內(nèi)部處理后轉(zhuǎn)發(fā)至指定端口,具備自動(dòng)尋址能力和交換作用。但是 交換機(jī)并不懂得IP地址,它只知道MAC地址。
交換機(jī)是使用硬件來完成以往網(wǎng)橋使用軟件來完成過濾、學(xué)習(xí)和轉(zhuǎn)發(fā)過程的任務(wù)。
交換機(jī)速度比HUB(集線器)快,這是由于HUB不知道目標(biāo)地址在何處,發(fā)送數(shù)據(jù)到所有的端口。
而交換機(jī)中有一張MAC地址表,如果知道目標(biāo)地址在何處,就把數(shù)據(jù)發(fā)送到指定地點(diǎn),如果它不知道就發(fā)送到所有的端口。
這樣過濾可以幫助降低整個(gè)網(wǎng)絡(luò)的數(shù)據(jù)傳輸量,提高效率。但是交換機(jī)的功能還不止如此,它可以把網(wǎng)絡(luò)拆解成網(wǎng)絡(luò)分支、分割網(wǎng)絡(luò)數(shù)據(jù)流,隔離分支中發(fā)生的故障,這樣就可以減少每個(gè)網(wǎng)絡(luò)分支的數(shù)據(jù)信息流量而使每個(gè)網(wǎng)絡(luò)更有效,提高整個(gè)網(wǎng)絡(luò)效率。
現(xiàn)代交換機(jī)是這樣處理數(shù)據(jù)幀的:一旦目標(biāo)頭域(目標(biāo)地址)已經(jīng)進(jìn)來了,盡管幀的其他部分還沒有到達(dá),則只要輸出線路可以使用,交換機(jī)就開始轉(zhuǎn)發(fā)該幀,而不需理會(huì)幀后面的內(nèi)容,也即是說交換機(jī)并沒有使用“存儲(chǔ)—轉(zhuǎn)發(fā)”交換方式。
總結(jié): 交換機(jī),可以理解為高級(jí)的網(wǎng)橋,他有網(wǎng)橋的功能,但性能比網(wǎng)橋強(qiáng)。交換機(jī)和網(wǎng)橋的細(xì)微差別就在于:交換機(jī)常常用來連接獨(dú)立的計(jì)算機(jī),而網(wǎng)橋連接的目標(biāo)是LAN,所以交換機(jī)的端口較網(wǎng)橋多。
各層的協(xié)議
- 應(yīng)用層:
- HTTP:超文本傳送協(xié)議。是面向事務(wù)的應(yīng)用層協(xié)議,它是萬維網(wǎng)上能夠可靠地交換文件的重要基礎(chǔ)。http使用面向連接的TCP作為運(yùn)輸層協(xié)議,保證了數(shù)據(jù)的可靠傳輸。
- FTP:文件傳輸協(xié)議?;赥CP
- POP3:POP3(Post Office Protocol 3)協(xié)議通常被用來接收電子郵件?;赥CP
- STMP:電子郵件協(xié)議。即簡(jiǎn)單郵件傳送協(xié)議。SMTP規(guī)定了在兩個(gè)相互通信的SMTP進(jìn)程之間應(yīng)如何交換信息。SMTP通信的三個(gè)階段:建立連接、郵件傳送、連接釋放?;赥CP
- Telnet:程終端協(xié)議。telnet是一個(gè)簡(jiǎn)單的遠(yuǎn)程終端協(xié)議,它也是因特網(wǎng)的正式標(biāo)準(zhǔn)。又稱為終端仿真協(xié)議。基于TCP
- DNS:域名系統(tǒng)。DNS是因特網(wǎng)使用的命名系統(tǒng),用來把便于人們使用的機(jī)器名字轉(zhuǎn)換為IP地址?;赥CP+UDP
- DNS可以使用UDP或者TCP進(jìn)行連接,使用的端口號(hào)都是53,大多數(shù)情況下使用UDP進(jìn)行傳輸,可靠性靠域名解析器和域名服務(wù)器來保證。以下情況會(huì)選用TCP進(jìn)行傳輸:
- UDP最大只支持512字節(jié)的數(shù)據(jù),如果返回的響應(yīng)超過512字節(jié)就改用TCP進(jìn)行傳輸
- 區(qū)域傳送是主域名服務(wù)器向輔助域名服務(wù)器傳送變化的那部分?jǐn)?shù)據(jù),區(qū)域傳送需要使用TCP進(jìn)行傳輸
- DNS可以使用UDP或者TCP進(jìn)行連接,使用的端口號(hào)都是53,大多數(shù)情況下使用UDP進(jìn)行傳輸,可靠性靠域名解析器和域名服務(wù)器來保證。以下情況會(huì)選用TCP進(jìn)行傳輸:
- SNMP:簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議。由三部分組成:SNMP本身、管理信息結(jié)構(gòu)SMI和管理信息MIB。SNMP定義了管理站和代理之間所交換的分組格式。SMI定義了命名對(duì)象類型的通用規(guī)則,以及把對(duì)象和對(duì)象的值進(jìn)行編碼。MIB在被管理的實(shí)體中創(chuàng)建了命名對(duì)象,并規(guī)定類型?;赨DP
- 運(yùn)輸層:
- TCP
- UDP
- 網(wǎng)絡(luò)層:
- RIP:路由信息協(xié)議,是基于距離矢量算法的路由協(xié)議,利用跳數(shù)來作為計(jì)量標(biāo)準(zhǔn)。
- IP:Internet協(xié)議,負(fù)責(zé)在主機(jī)和網(wǎng)絡(luò)之間尋址和路由數(shù)據(jù)包。
- ICMP:Internet控制報(bào)文協(xié)議,發(fā)送消息,并報(bào)告有關(guān)數(shù)據(jù)包的傳送錯(cuò)誤。
- OSPF:開放式最短路徑優(yōu)先,用于在單一自治系統(tǒng)(autonomous system,AS)內(nèi)決策路由
- BGP:邊界網(wǎng)關(guān)協(xié)議,是自治系統(tǒng)間的路由協(xié)議
- IGMP:Internet 組管理協(xié)議,是因特網(wǎng)協(xié)議家族中的一個(gè)組播協(xié)議。該協(xié)議運(yùn)行在主機(jī)和組播路由器之間。
- 鏈路層:
- ARP:地址解析協(xié)議,獲得同一物理網(wǎng)絡(luò)中的硬件主機(jī)地址。 通過ip解析mac
- RARP:反向地址解析協(xié)議,ARP的逆向協(xié)議,通過mac解析ip
- PPP:點(diǎn)對(duì)點(diǎn)協(xié)議,為在點(diǎn)對(duì)點(diǎn)連接上傳輸多協(xié)議數(shù)據(jù)包提供了一個(gè)標(biāo)準(zhǔn)方法。PPP 最初設(shè)計(jì)是為兩個(gè)對(duì)等節(jié)點(diǎn)之間的 IP 流量傳輸提供一種封裝協(xié)議
- CSMA/CD:載波監(jiān)聽多點(diǎn)接入/碰撞檢測(cè)
IP地址分類,子網(wǎng)劃分
IP地址分類:

- A: 0.0.0.0-127.255.255,其中段0和127不可用
- B: 128.0.0.0-191.255.255.255
- C: 192.0.0.0-223.255.255.255
- D: 224.0.0.0-239.255.255.255
- E: 240.0.0.0-255.255.255.255,其中段255不可用
其中127.0.0.0~127.255.255.255為環(huán)回地址,用于本地環(huán)回測(cè)試等用途
局域網(wǎng)地址:
10.0.0.0~10.255.255.255;10.0.0.0/8
172.16.0.0~172.31.0.0;172.16.0.0/12
192.168.0.0~192.168.255.255;192.168.0.0/16

子網(wǎng)劃分:
主機(jī)數(shù) = 2^子網(wǎng)號(hào)位數(shù) - 2
UDP和TCP的區(qū)別
- TCP的優(yōu)點(diǎn):
可靠,穩(wěn)定 TCP的可靠體現(xiàn)在TCP在傳遞數(shù)據(jù)之前,會(huì)有三次握手來建立連接,而且在數(shù)據(jù)傳遞時(shí),有確認(rèn)、窗口、重傳、擁塞控制機(jī)制,在數(shù)據(jù)傳完后,還會(huì)斷開連接用來節(jié)約系統(tǒng)資源。 - TCP的缺點(diǎn):
慢,效率低,占用系統(tǒng)資源高,易被攻擊 TCP在傳遞數(shù)據(jù)之前,要先建連接,這會(huì)消耗時(shí)間,而且在數(shù)據(jù)傳遞時(shí),確認(rèn)機(jī)制、重傳機(jī)制、擁塞控制機(jī)制等都會(huì)消耗大量的時(shí)間,而且要在每臺(tái)設(shè)備上維護(hù)所有的傳輸連接,事實(shí)上,每個(gè)連接都會(huì)占用系統(tǒng)的CPU、內(nèi)存等硬件資源。 而且,因?yàn)門CP有確認(rèn)機(jī)制、三次握手機(jī)制,這些也導(dǎo)致TCP容易被人利用,實(shí)現(xiàn)DOS、DDOS、CC等攻擊。 - UDP的優(yōu)點(diǎn):
快,比TCP稍安全 UDP沒有TCP的握手、確認(rèn)、窗口、重傳、擁塞控制等機(jī)制,UDP是一個(gè)無狀態(tài)的傳輸協(xié)議,所以它在傳遞數(shù)據(jù)時(shí)非常快。沒有TCP的這些機(jī)制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的,比如:UDP Flood攻擊…… - UDP的缺點(diǎn):
不可靠,不穩(wěn)定 因?yàn)閁DP沒有TCP那些可靠的機(jī)制,在數(shù)據(jù)傳遞時(shí),如果網(wǎng)絡(luò)質(zhì)量不好,就會(huì)很容易丟包。
基于上面的優(yōu)缺點(diǎn),那么:
- 什么時(shí)候應(yīng)該使用TCP: 當(dāng)對(duì)網(wǎng)絡(luò)通訊質(zhì)量有要求的時(shí)候,比如:整個(gè)數(shù)據(jù)要準(zhǔn)確無誤的傳遞給對(duì)方,這往往用于一些要求可靠的應(yīng)用,比如HTTP、HTTPS、FTP等傳輸文件的協(xié)議,POP、SMTP等郵件傳輸?shù)膮f(xié)議。 在日常生活中,常見使用TCP協(xié)議的應(yīng)用如下: 瀏覽器,用的HTTP FlashFXP,用的FTP Outlook,用的POP、SMTP Putty,用的Telnet、SSH QQ文件傳輸 …………
- 什么時(shí)候應(yīng)該使用UDP: 當(dāng)對(duì)網(wǎng)絡(luò)通訊質(zhì)量要求不高的時(shí)候,并且需要實(shí)時(shí)性,要求網(wǎng)絡(luò)通訊速度能盡量的快,這時(shí)就可以使用UDP。 比如,日常生活中,常見使用UDP協(xié)議的應(yīng)用如下: QQ語音 QQ視頻 TFTP ……
TCP與UDP區(qū)別總結(jié):
- TCP面向連接(如打電話要先撥號(hào)建立連接);
UDP是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接 - TCP提供可靠的服務(wù)。也就是說,通過TCP連接傳送的數(shù)據(jù),無差錯(cuò),不丟失,不重復(fù),且按序到達(dá);
UDP盡最大努力交付,即不保 證可靠交付 - TCP面向字節(jié)流,實(shí)際上是TCP把數(shù)據(jù)看成一連串無結(jié)構(gòu)的字節(jié)流;
UDP是面向報(bào)文的.
UDP沒有擁塞控制,因此網(wǎng)絡(luò)出現(xiàn)擁塞不會(huì)使源主機(jī)的發(fā)送速率降低(對(duì)實(shí)時(shí)應(yīng)用很有用,如IP電話,實(shí)時(shí)視頻會(huì)議等) - 每一條TCP連接只能是點(diǎn)到點(diǎn)的;
UDP支持一對(duì)一,一對(duì)多,多對(duì)一和多對(duì)多的交互通信 - TCP首部開銷20字節(jié);
UDP的首部開銷小,只有8個(gè)字節(jié) - TCP的邏輯通信信道是全雙工的可靠信道,
UDP則是不可靠信道
TCP的連接與斷開
三次握手

三次握手的原因:
- 第一次握手:發(fā)送請(qǐng)求(normal)
- 第二次握手:響應(yīng)請(qǐng)求(normal)
- 第三次握手:為了防止失效的請(qǐng)求到達(dá)服務(wù)器,讓服務(wù)器錯(cuò)誤的打開連接。
客戶端發(fā)送的連接請(qǐng)求如果在網(wǎng)絡(luò)中滯留,那么就會(huì)隔很長一段時(shí)間才能收到服務(wù)端發(fā)回的連接確認(rèn)。客戶端在等待一個(gè)超時(shí)重傳時(shí)間之后,就會(huì)重新請(qǐng)求連接,但是這個(gè)滯留的連接請(qǐng)求還是會(huì)到達(dá)服務(wù)器,如果不進(jìn)行三次握手,那么服務(wù)端就會(huì)打開兩個(gè)連接,如果有第三次握手,客戶端就會(huì)忽略服務(wù)器之后發(fā)送的對(duì)滯留鏈接請(qǐng)求的連接確認(rèn),不進(jìn)行第三次握手,因此就不會(huì)再打開第二個(gè)連接。
四次揮手:

四次揮手原因:客戶端發(fā)送了FIN連接釋放報(bào)文之后,服務(wù)器收到了這個(gè)報(bào)文,就進(jìn)入了CLOSE-WAIT狀態(tài),這個(gè)狀態(tài)是為了讓服務(wù)器端發(fā)送還未傳送完畢的數(shù)據(jù),傳送完畢之后,服務(wù)器會(huì)發(fā)送FIN連接釋放報(bào)文。
進(jìn)入TIME-WAIT原因:
- 客戶端收到服務(wù)器端的FIN報(bào)文后進(jìn)入此狀態(tài),此時(shí)并不是直接進(jìn)入CLOSED狀態(tài),還需要等待一個(gè)時(shí)間計(jì)時(shí)器設(shè)置的時(shí)間2MSL。這么做有兩個(gè)理由:確保最后一確認(rèn)報(bào)文段能夠到達(dá)。如果B沒收到A發(fā)送的確認(rèn)報(bào)文段,那么就會(huì)重新發(fā)送連接釋放請(qǐng)求報(bào)文段,A等待一段時(shí)間就是為了處理這種情況發(fā)生。
- 等待一段時(shí)間是為了讓本連接持續(xù)時(shí)間內(nèi)所產(chǎn)生的所有報(bào)文段都從網(wǎng)絡(luò)中消失,使得下一個(gè)新的連接不會(huì)出現(xiàn)舊的連接請(qǐng)求報(bào)文段。
TCP精髓問題:
停止等待協(xié)議
停止等待協(xié)議是tcp保證傳輸可靠的重要途徑,”停止等待”就是指發(fā)送完一個(gè)分組就停止發(fā)送,等待對(duì)方的確認(rèn),只有對(duì)方確認(rèn)過,才發(fā)送下一個(gè)分組.
停止等待協(xié)議的優(yōu)點(diǎn)是簡(jiǎn)單,但是缺點(diǎn)是信道的利用率太低,一次發(fā)送一條消息,使得信道的大部分時(shí)間內(nèi)都是空閑的,為了提高效率,我們采用流水線傳輸,這就與下面兩個(gè)協(xié)議有關(guān)系了.
連續(xù)ARQ(自動(dòng)重傳請(qǐng)求)協(xié)議
它是指發(fā)送方維護(hù)著一個(gè)窗口,這個(gè)窗口中不止一個(gè)分組,有好幾個(gè)分組,窗口的大小是由接收方返回的win值決定的,所以窗口的大小是動(dòng)態(tài)變化的,只要在窗口中的分組都可以被發(fā)送,這就使得TCP一次不是只發(fā)送一個(gè)分組了,從而大大提高了信道的利用率.并且它采用累積確認(rèn)的方式,對(duì)于按序到達(dá)的最后一個(gè)分組發(fā)送確認(rèn).
滑動(dòng)窗口
之所以叫滑動(dòng)窗口協(xié)議,是因?yàn)榇翱谑遣粩嘞蚯白叩?該協(xié)議允許發(fā)送方在停止并等待確認(rèn)前發(fā)送多個(gè)數(shù)據(jù)分組。由于發(fā)送方不必每發(fā)一個(gè)分組就停下來等待確認(rèn),因此該協(xié)議可以加速數(shù)據(jù)的傳輸,還可以控制流量的問題。

- 發(fā)送方接收到了對(duì)方發(fā)來的報(bào)文 ack = 33, win = 10,知道對(duì)方收到了 33 號(hào)前的數(shù)據(jù),現(xiàn)在期望接收 [33, 43) 號(hào)數(shù)據(jù)。發(fā)送方連續(xù)發(fā)送了 4 個(gè)報(bào)文段假設(shè)為 A, B, C, D, 分別攜帶 [33, 35), [35, 36), [36, 38), [38, 41) 號(hào)數(shù)據(jù)。
- 接收方接收到了報(bào)文段 A, C,但是沒收到 B 和 D,也就是只收到了 [33, 35) 和 [36, 38) 號(hào)數(shù)據(jù)。接收方發(fā)送回對(duì)報(bào)文段 A 的確認(rèn):ack = 35, win = 10。
- 發(fā)送方收到了 ack = 35, win = 10,對(duì)方期望接收 [35, 45) 號(hào)數(shù)據(jù)。接著發(fā)送了一個(gè)報(bào)文段 E,它攜帶了 [41, 44) 號(hào)數(shù)據(jù)。
- 接收方接收到了報(bào)文段 B: [35, 36), D:[38, 41),接收方發(fā)送對(duì) D 的確認(rèn):ack = 41, win = 10. (這是一個(gè)累積確認(rèn))
- 發(fā)送方收到了 ack = 41, win = 10,對(duì)方期望接收 [41, 51) 號(hào)數(shù)據(jù)。
……
需要注意的是,接收方接收 tcp 報(bào)文的順序是不確定的,并非是一定先收到 35 再收到 36,也可能是先收到 36,37,再收到 35。
以上僅僅是假設(shè)網(wǎng)絡(luò)狀況理想,所有的數(shù)據(jù)都會(huì)到達(dá)接收方的情況,如果出現(xiàn)數(shù)據(jù)丟失:如果一個(gè)發(fā)送的報(bào)文段在超時(shí)時(shí)間內(nèi)沒有收到確認(rèn),那么就重傳這個(gè)報(bào)文段。具體機(jī)制采用下面的擁塞控制算法。
流量控制
流量控制是為了控制發(fā)送發(fā)的發(fā)送速率,保證接受方來得及接收
接收方發(fā)送的報(bào)文中的窗口字段可以用來控制發(fā)送方窗口的大小,從而影響發(fā)送方的發(fā)送速率,將窗口字段設(shè)置為0,則發(fā)送方不能發(fā)送數(shù)據(jù)。
擁塞控制(慢開始、擁塞避免、快重傳、快恢復(fù))

如果網(wǎng)絡(luò)出現(xiàn)擁塞,分組將會(huì)丟失,此時(shí)發(fā)送方會(huì)繼續(xù)重傳,從而導(dǎo)致?lián)砣潭雀?,因此?dāng)出現(xiàn)擁塞時(shí),需要控制發(fā)送方的速率。這一點(diǎn)和流量控制很像,但是出發(fā)點(diǎn)不同:
- 流量控制是為了讓接收方能來得及接收。
- 擁塞控制是為了降低整個(gè)網(wǎng)絡(luò)的擁塞程度。
TCP主要采用四種算法來進(jìn)行擁塞控制:慢開始,擁塞避免,快重傳,快恢復(fù)。
發(fā)送方需要維護(hù)一個(gè)叫做擁塞窗口(cwnd)的狀態(tài)變量,注意擁塞窗口與發(fā)送窗口的區(qū)別:擁塞窗口只是一個(gè)狀態(tài)變量,實(shí)際決定發(fā)送方能發(fā)送多少數(shù)據(jù)的還是發(fā)送窗口。
慢開始與擁塞避免:
慢開始:主機(jī)開發(fā)發(fā)送數(shù)據(jù)報(bào)時(shí),如果立即將大量的數(shù)據(jù)注入到網(wǎng)絡(luò)中,可能會(huì)出現(xiàn)網(wǎng)絡(luò)的擁塞。慢啟動(dòng)算法就是在主機(jī)剛開始發(fā)送數(shù)據(jù)報(bào)的時(shí)候先探測(cè)一下網(wǎng)絡(luò)的狀況,如果網(wǎng)絡(luò)狀況良好,發(fā)送方每發(fā)送一次文段都能正確的接受確認(rèn)報(bào)文段。那么就從小到大的增加擁塞窗口的大小,即增加發(fā)送窗口的大小。
擁塞避免:為了防止cwnd增加過快而導(dǎo)致網(wǎng)絡(luò)擁塞,所以需要設(shè)置一個(gè)慢開始門限ssthresh狀態(tài)變量,當(dāng)cwnd < ssthresh時(shí)成倍增長,即1,2,4,8....,當(dāng)cwnd>=ssthresh時(shí)cwn的不再成倍增長,而是每次增加一。
如果出現(xiàn)了超時(shí),ssthresh = cwnd / 2;再重新執(zhí)行慢開始。
快重傳與快恢復(fù)
快重傳:
- 在接收方,要求每次收到的報(bào)文段都應(yīng)該對(duì)最后一個(gè)已收到的有序報(bào)文段進(jìn)行確認(rèn),例如已經(jīng)收到M1,M2,此時(shí)收到M4,此時(shí)收到M4,應(yīng)當(dāng)發(fā)送對(duì)M2的確認(rèn)。
- 在發(fā)送方,如果收到三個(gè)重復(fù)的確認(rèn),那么可以知道下一個(gè)報(bào)文段缺失,此時(shí)執(zhí)行快重傳,立即重傳下一個(gè)報(bào)文段,例如收到三個(gè)M2,則M3丟失,立即重傳M3
快恢復(fù):
- 在快重傳的情況下,只是丟失了個(gè)別報(bào)文段而不是網(wǎng)絡(luò)擁塞,因此執(zhí)行快恢復(fù),令ssthresh = cwnd / 2;cwnd = ssthresh
- 注意:慢開始和快恢復(fù)的快慢指的時(shí)cwnd的設(shè)定值,而不是cwnd的增長速率。
慢開始cwnd設(shè)定為1,而快恢復(fù)cwnd設(shè)定為ssthresh
從瀏覽器輸入某個(gè)網(wǎng)站域名(www.v2ex.com)到加載出頁面發(fā)生了什么.
- DHCP配置主機(jī)信息(獲取本機(jī)地址)
- ARP解析MAC地址(獲取路由器地址)
- DNS解析域名(獲取服務(wù)器地址)
- HTTP請(qǐng)求頁面(發(fā)送TCP報(bào)文段,收取TCP報(bào)文段)
- 渲染頁面
以上每一份都要了解其具體過程
GET和POST區(qū)別:
- GET在瀏覽器回退時(shí)是無害的,而POST會(huì)再次提交請(qǐng)求。
- GET產(chǎn)生的URL地址可以被Bookmark,而POST不可以。
- GET請(qǐng)求會(huì)被瀏覽器主動(dòng)cache,而POST不會(huì),除非手動(dòng)設(shè)置。
- GET請(qǐng)求只能進(jìn)行url編碼,而POST支持多種編碼方式。
- GET請(qǐng)求參數(shù)會(huì)被完整保留在瀏覽器歷史記錄里,而POST中的參數(shù)不會(huì)被保留。
- GET請(qǐng)求在URL中傳送的參數(shù)是有長度限制的,而POST么有。
- 對(duì)參數(shù)的數(shù)據(jù)類型,GET只接受ASCII字符,而POST沒有限制。
- GET比POST更不安全,因?yàn)閰?shù)直接暴露在URL上,所以不能用來傳遞敏感信息。
- GET參數(shù)通過URL傳遞,POST放在Request body中。
HTTP狀態(tài)碼
狀態(tài)碼為3位十進(jìn)制數(shù),首位用來區(qū)別類別
1** :信息,服務(wù)器收到請(qǐng)求,需要請(qǐng)求者繼續(xù)執(zhí)行操作
2** :成功,操作被成功接收并處理
3** :重定向,需要進(jìn)一步的操作以完成請(qǐng)求
4** :客戶端錯(cuò)誤,請(qǐng)求包含語法錯(cuò)誤或無法完成請(qǐng)求
5** :服務(wù)器錯(cuò)誤,服務(wù)器在處理請(qǐng)求的過程中發(fā)生了錯(cuò)誤
具體詳見:http://tool.oschina.net/commons?type=5
HTTP1.0,HTTP1.1,HTTP2.0的區(qū)別
HTTP1.0 and HTTP1.1
長連接:
- HTTP 1.0規(guī)定瀏覽器與服務(wù)器只保持短暫的連接,瀏覽器的每次請(qǐng)求都需要與服務(wù)器建立一個(gè)TCP連接,服務(wù)器完成請(qǐng)求處理后立即斷開TCP連接,服務(wù)器不跟蹤每個(gè)客戶也不記錄過去的請(qǐng)求。
- HTTP 1.1則支持持久連接Persistent Connection, 并且默認(rèn)使用persistent connection. 在同一個(gè)tcp的連接中可以傳送多個(gè)HTTP請(qǐng)求和響應(yīng). 多個(gè)請(qǐng)求和響應(yīng)可以重疊,多個(gè)請(qǐng)求和響應(yīng)可以同時(shí)進(jìn)行. 更加多的請(qǐng)求頭和響應(yīng)頭(比如HTTP1.0沒有host的字段).
- HTTP 1.1的持續(xù)連接,也需要增加新的請(qǐng)求頭來幫助實(shí)現(xiàn),例如,Connection請(qǐng)求頭的值為Keep-Alive時(shí),客戶端通知服務(wù)器返回本次請(qǐng)求結(jié)果后保持連接;Connection請(qǐng)求頭的值為close時(shí),客戶端通知服務(wù)器返回本次請(qǐng)求結(jié)果后關(guān)閉連接。HTTP 1.1還提供了與身份認(rèn)證、狀態(tài)管理和Cache緩存等機(jī)制相關(guān)的請(qǐng)求頭和響應(yīng)頭。
節(jié)省帶寬
- HTTP/1.1加入了一個(gè)新的狀態(tài)碼100(Continue)??蛻舳耸孪劝l(fā)送一個(gè)只帶頭域的請(qǐng)求,如果服務(wù)器因?yàn)闄?quán)限拒絕了請(qǐng)求,就回送響應(yīng)碼401(Unauthorized);如果服務(wù)器接收此請(qǐng)求就回送響應(yīng)碼100,客戶端就可以繼續(xù)發(fā)送帶實(shí)體的完整請(qǐng)求了。100 (Continue) 狀態(tài)代碼的使用,允許客戶端在發(fā)request消息body之前先用request header試探一下server,看server要不要接收request body,再?zèng)Q定要不要發(fā)request body。
host字段
- 在HTTP1.0中認(rèn)為每臺(tái)服務(wù)器都綁定一個(gè)唯一的IP地址,因此,請(qǐng)求消息中的URL并沒有傳遞主機(jī)名(hostname)。但隨著虛擬主機(jī)技術(shù)的發(fā)展,在一臺(tái)物理服務(wù)器上可以存在多個(gè)虛擬主機(jī)(Multi-homed Web Servers),并且它們共享一個(gè)IP地址。
- HTTP1.1的請(qǐng)求消息和響應(yīng)消息都應(yīng)支持Host頭域,且請(qǐng)求消息中如果沒有Host頭域會(huì)報(bào)告一個(gè)錯(cuò)誤(400 Bad Request)。此外,服務(wù)器應(yīng)該接受以絕對(duì)路徑標(biāo)記的資源請(qǐng)求。
緩存
- HTTP/1.1在1.0的基礎(chǔ)上加入了一些cache的新特性,當(dāng)緩存對(duì)象的Age超過Expire時(shí)變?yōu)閟tale對(duì)象,cache不需要直接拋棄stale對(duì)象,而是與源服務(wù)器進(jìn)行重新激活(revalidation)。
HTTP1.1 and HTTP2.0
多路復(fù)用
- HTTP2.0使用了多路復(fù)用的技術(shù),做到同一個(gè)連接并發(fā)處理多個(gè)請(qǐng)求,而且并發(fā)請(qǐng)求的數(shù)量比HTTP1.1大了好幾個(gè)數(shù)量級(jí)。
- 當(dāng)然HTTP1.1也可以多建立幾個(gè)TCP連接,來支持處理更多并發(fā)的請(qǐng)求,但是創(chuàng)建TCP連接本身也是有開銷的。
- TCP連接有一個(gè)預(yù)熱和保護(hù)的過程,先檢查數(shù)據(jù)是否傳送成功,一旦成功過,則慢慢加大傳輸速度。因此對(duì)應(yīng)瞬時(shí)并發(fā)的連接,服務(wù)器的響應(yīng)就會(huì)變慢。所以最好能使用一個(gè)建立好的連接,并且這個(gè)連接可以支持瞬時(shí)并發(fā)的請(qǐng)求。
數(shù)據(jù)壓縮
HTTP1.1不支持header數(shù)據(jù)的壓縮,HTTP2.0使用HPACK算法對(duì)header的數(shù)據(jù)進(jìn)行壓縮,這樣數(shù)據(jù)體積小了,在網(wǎng)絡(luò)上傳輸就會(huì)更快。
服務(wù)器推送
- 意思是說,當(dāng)我們對(duì)支持HTTP2.0的web server請(qǐng)求數(shù)據(jù)的時(shí)候,服務(wù)器會(huì)順便把一些客戶端需要的資源一起推送到客戶端,免得客戶端再次創(chuàng)建連接發(fā)送請(qǐng)求到服務(wù)器端獲取。這種方式非常合適加載靜態(tài)資源。
- 服務(wù)器端推送的這些資源其實(shí)存在客戶端的某處地方,客戶端直接從本地加載這些資源就可以了,不用走網(wǎng)絡(luò),速度自然是快很多的。
HTTPS
將原本在TCP上傳輸?shù)腍TTP協(xié)議,用SSL進(jìn)行傳輸,SSL再通過TCP傳輸

HTTP緩存機(jī)制(cache-control、Expires之類的一系列請(qǐng)求與相應(yīng)報(bào)頭字段)
推薦:https://blog.csdn.net/byeweiyang/article/details/80127685
- private:告知緩存服務(wù)器,該緩存只允許返回給特定的用戶
- public:緩存可以給任何一個(gè)用戶使用
session和cookie的區(qū)別,禁用cookie后怎么辦
session是存放在服務(wù)器。
cookie存放在瀏覽器。
session本質(zhì)上是用根據(jù)傳過來的cookie通過哈希表還找到對(duì)應(yīng)的數(shù)據(jù)的,所以本質(zhì)上沒什么區(qū)別。
如果cookie被禁用,正常的session也會(huì)失效。
常用的辦法有:
URL重寫:把用來存儲(chǔ)session的cookie放到url的參數(shù)里
隱藏表單:通過一個(gè)hidden的表單來存儲(chǔ)
DNS解析的過程
宏觀:
1.找緩存
2.找本機(jī)host
3.找dns服務(wù)器
具體步驟會(huì)涉及DHCP,ARP等協(xié)議對(duì)應(yīng)的過程
常用協(xié)議的端口
20/tcp FTP 文件傳輸協(xié)議數(shù)據(jù)傳輸端口
21/tcp FTP 文件傳輸協(xié)議連接端口
22/tcp SSH 安全登錄、文件傳送(SCP)和端口重定向
23/tcp Telnet 不安全的文本傳送
25/tcp SMTP Simple Mail Transfer Protocol (E-mail)
53/udp or TCP DNS
69/udp TFTP Trivial File Transfer Protocol
79/tcp finger Finger
80/tcp HTTP 超文本傳送協(xié)議 (WWW)
88/tcp Kerberos Authenticating agent
110/tcp POP3 Post Office Protocol (E-mail)
113/tcp ident old identification server system
119/tcp NNTP used for usenet newsgroups
220/tcp IMAP3
443/tcp HTTPS used for securely transferring web pages