網(wǎng)絡(luò)七層協(xié)議
應(yīng)用層:
1.用戶接口、應(yīng)用程序珍剑;
2.Application典型設(shè)備:網(wǎng)關(guān)掸宛;
3.典型協(xié)議、標(biāo)準(zhǔn)和應(yīng)用:超文本傳輸協(xié)議(HTTP協(xié)議-萬(wàn)維網(wǎng)的基本協(xié)議
)招拙, 文件傳輸(FTP 旁涤、TFTP簡(jiǎn)單文件傳輸協(xié)議
), 遠(yuǎn)程登錄(TELNET - 提供遠(yuǎn)程訪問(wèn)其它主機(jī)功能,它允許用戶登錄 internet主機(jī),并在這臺(tái)主機(jī)上執(zhí)行命令
)迫像, 網(wǎng)絡(luò)管理(SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議 - 該協(xié)議提供了監(jiān)控網(wǎng)絡(luò)設(shè)備的方法,以及配置管理,統(tǒng)計(jì)信息收集,性能管理及安全管理等
)劈愚, 域名系統(tǒng)(DNS - 該系統(tǒng)用于在internet中將域名及其公共廣播的網(wǎng)絡(luò)節(jié)點(diǎn)轉(zhuǎn)換成IP地址
)。表示層:
1.數(shù)據(jù)表示闻妓、壓縮和加密presentation
2.典型設(shè)備:網(wǎng)關(guān)
3.典型協(xié)議菌羽、標(biāo)準(zhǔn)和應(yīng)用:ASCLL、PICT由缆、TIFF注祖、JPEG|MPEG
4.表示層相當(dāng)于一個(gè)東西的表示,表示的一些協(xié)議均唉,比如圖片是晨、聲音和視頻MPEG。會(huì)話層:
1.會(huì)話的建立和結(jié)束舔箭;
2.典型設(shè)備:網(wǎng)關(guān)罩缴;
3.典型協(xié)議、標(biāo)準(zhǔn)和應(yīng)用:RPC层扶、SQL箫章、NFS、X WINDOWS镜会、ASP傳輸層:
1.主要功能:端到端控制Transport檬寂;
2.典型設(shè)備:網(wǎng)關(guān);
3.典型協(xié)議戳表、標(biāo)準(zhǔn)和應(yīng)用:TCP桶至、UDP、SPX網(wǎng)絡(luò)層:
1.主要功能:路由匾旭、尋址Network镣屹;
2.典型設(shè)備:路由器;
3.典型協(xié)議季率、標(biāo)準(zhǔn)和應(yīng)用:以太網(wǎng)所用協(xié)議之一(Internet Packet eXchange - IPX
)野瘦、可路由協(xié)議組(APPLETALK
)描沟、互聯(lián)網(wǎng)協(xié)議(Internet Protocol - IP
) 飒泻、Internet控制信息協(xié)議(ICMP
)鞭光、 地址解析協(xié)議(ARP
)、 反向地址解析協(xié)議(RARP
) ...
(網(wǎng)絡(luò)訪問(wèn)層:網(wǎng)絡(luò)訪問(wèn)層又稱作主機(jī)到網(wǎng)絡(luò)層(host-to-network). 網(wǎng)絡(luò)訪問(wèn)層的功能包括IP地址與物理地址硬件的映射,以及將IP封裝成幀.基于不同硬件類型的網(wǎng)絡(luò)接口,網(wǎng)絡(luò)訪問(wèn)層定義了和物理介質(zhì)的連接. )數(shù)據(jù)鏈路層:
1.主要功能:保證無(wú)差錯(cuò)的疏忽鏈路的data link泞遗;
2.典型設(shè)備:交換機(jī)惰许、網(wǎng)橋、網(wǎng)卡史辙;
3.典型協(xié)議汹买、標(biāo)準(zhǔn)和應(yīng)用:802.2、802.3ATM聊倔、HDLC晦毙、FRAME RELAY;物理層:
1.主要功能:傳輸比特流Physical耙蔑;
2.典型設(shè)備:集線器见妒、中繼器
3.典型協(xié)議、標(biāo)準(zhǔn)和應(yīng)用:V.35甸陌、EIA/TIA-232.
TCP/IP五層模型
- TCP/IP協(xié)議是一個(gè)協(xié)議簇须揣。里面包括很多協(xié)議的。UDP只是其中的一個(gè)钱豁。TCP/IP協(xié)議集包括應(yīng)用層,傳輸層耻卡,網(wǎng)絡(luò)層,網(wǎng)絡(luò)訪問(wèn)層牲尺。
- TCP/IP五層模型的協(xié)議分為:應(yīng)用層卵酪、傳輸層、網(wǎng)絡(luò)層谤碳、數(shù)據(jù)鏈路層和物理層凛澎。中繼器、集線器估蹄、還有我們通常說(shuō)的雙絞線也工作在物理層塑煎;網(wǎng)橋(現(xiàn)已很少使用)、以太網(wǎng)交換機(jī)(二層交換機(jī))臭蚁、網(wǎng)卡(其實(shí)網(wǎng)卡是一半工作在物理層最铁、一半工作在數(shù)據(jù)鏈路層)在數(shù)據(jù)鏈路層;路由器垮兑、三層交換機(jī)在網(wǎng)絡(luò)層冷尉;傳輸層主要是四層交換機(jī)、也有工作在四層的路由器系枪。
1. TCP雀哨、UDP對(duì)比
1.1 TCP(Transmission Control Protocol
傳輸控制協(xié)議
)
TCP
是面向連接的協(xié)議,在收發(fā)數(shù)據(jù)前必須建立可靠的連接。一個(gè)TCP連接必須要經(jīng)過(guò)三次“對(duì)話(握手)”
才能建立起來(lái)雾棺。TCP面向連接的通信方式(三次握手和四次揮),大大提高了數(shù)據(jù)通信的可靠性,使發(fā)送數(shù)據(jù)端和接收端在數(shù)據(jù)正式傳輸前就有了交互,為數(shù)據(jù)正式傳輸打下了可靠的基礎(chǔ)膊夹。
TCP三次握手過(guò)程:
- 1 主機(jī)A通過(guò)向主機(jī)B 發(fā)送一個(gè)含有同步序列號(hào)的標(biāo)志位的數(shù)據(jù)段給主機(jī)B ,向主機(jī)B 請(qǐng)求建立連接,通過(guò)這個(gè)數(shù)據(jù)段, 主機(jī)A告訴主機(jī)B 兩件事:我想要和你通信;你可以用哪個(gè)序列號(hào)作為起始數(shù)據(jù)段來(lái)回應(yīng)我.
- 2 主機(jī)B 收到主機(jī)A的請(qǐng)求后,用一個(gè)帶有確認(rèn)應(yīng)答(ACK)和同步序列號(hào)(SYN)標(biāo)志位的數(shù)據(jù)段響應(yīng)主機(jī)A,也告訴主機(jī)A兩件事: 我已經(jīng)收到你的請(qǐng)求了,你可以傳輸數(shù)據(jù)了;你要用哪佧序列號(hào)作為起始數(shù)據(jù)段來(lái)回應(yīng)我
- 3 主機(jī)A收到這個(gè)數(shù)據(jù)段后,再發(fā)送一個(gè)確認(rèn)應(yīng)答,確認(rèn)已收到主機(jī)B 的數(shù)據(jù)段:"我已收到回復(fù),我現(xiàn)在要開(kāi)始傳輸實(shí)際數(shù)據(jù)了 這樣3次握手就完成了,主機(jī)A和主機(jī)B 就可以傳輸數(shù)據(jù)了. 3次握手的特點(diǎn) 沒(méi)有應(yīng)用層的數(shù)據(jù) SYN這個(gè)標(biāo)志位只有在TCP建產(chǎn)連接時(shí)才會(huì)被置1 握手完成后SYN標(biāo)志位被置0
TCP斷開(kāi)連接4次揮手過(guò)程:
- 1 當(dāng)主機(jī)A完成數(shù)據(jù)傳輸后,將控制位FIN置1,提出停止TCP連接的請(qǐng)求
- 2 主機(jī)B收到FIN后對(duì)其作出響應(yīng),確認(rèn)這一方向上的TCP連接將關(guān)閉,將ACK置1
- 3 由B 端再提出反方向的關(guān)閉請(qǐng)求,將FIN置1
- 4 主機(jī)A對(duì)主機(jī)B的請(qǐng)求進(jìn)行確認(rèn),將ACK置1,雙方向的關(guān)閉結(jié)束.
- 名詞解釋
ACK
TCP報(bào)頭的控制位之一,對(duì)數(shù)據(jù)進(jìn)行確認(rèn).確認(rèn)由目的端發(fā)出,用它來(lái)告訴發(fā)送端這個(gè)序列號(hào)之前的數(shù)據(jù)段 都收到了.比如,確認(rèn)號(hào)為X,則表示前X-1個(gè)數(shù)據(jù)段都收到了,只有當(dāng)ACK=1時(shí),確認(rèn)號(hào)才有效,當(dāng)ACK=0時(shí),確認(rèn)號(hào)無(wú)效,這時(shí)會(huì)要求重傳數(shù)據(jù),保證數(shù)據(jù)的完整性. SYN 同步序列號(hào),TCP建立連接時(shí)將這個(gè)位置1 FIN 發(fā)送端完成發(fā)送任務(wù)位,當(dāng)TCP完成數(shù)據(jù)傳輸需要斷開(kāi)時(shí),提出斷開(kāi)連接的一方將這位置1 TCP的包頭結(jié)構(gòu): 源端口 16位 目標(biāo)端口 16位 序列號(hào) 32位 回應(yīng)序號(hào) 32位 TCP頭長(zhǎng)度 4位 reserved 6位 控制代碼 6位 窗口大小 16位 偏移量 16位 校驗(yàn)和 16位 選項(xiàng) 32位(可選) 這樣我們得出了TCP包頭的最小長(zhǎng)度,為20字節(jié)捌浩。
1.2 UDP(User Data Protocol
放刨,用戶數(shù)據(jù)報(bào)協(xié)議
)
- (1)
UDP
是一個(gè)非連接的協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接尸饺,當(dāng)它想傳送時(shí)就簡(jiǎn)單地去抓取來(lái)自應(yīng)用程序的數(shù)據(jù)进统,并盡可能快地把它扔到網(wǎng)絡(luò)上。在發(fā)送端浪听,UDP
傳送數(shù)據(jù)的速度僅僅是受應(yīng)用程序生成數(shù)據(jù)的速度螟碎、計(jì)算機(jī)的能力和傳輸帶寬的限制;在接收端迹栓,UDP
把每個(gè)消息段放在隊(duì)列中抚芦,應(yīng)用程序每次從隊(duì)列中讀一個(gè)消息段。 - (2) 由于傳輸數(shù)據(jù)不建立連接迈螟,因此也就不需要維護(hù)連接狀態(tài)叉抡,包括收發(fā)狀態(tài)等,因此一臺(tái)服務(wù)機(jī)可同時(shí)向多個(gè)客戶機(jī)傳輸相同的消息答毫。
- (3)
UDP
信息包的標(biāo)題很短褥民,只有8個(gè)字節(jié),相對(duì)于TCP
的20個(gè)字節(jié)信息包的額外開(kāi)銷很小洗搂。 - (4) 吞吐量不受擁擠控制算法的調(diào)節(jié)消返,只受應(yīng)用軟件生成數(shù)據(jù)的速率、傳輸帶寬耘拇、源端和終端主機(jī)性能的限制撵颊。
- (5)
UDP
使用盡最大努力交付,即不保證可靠交付惫叛,因此主機(jī)不需要維持復(fù)雜的鏈接狀態(tài)表(這里面有許多參數(shù))倡勇。 - (6)
UDP
是面向報(bào)文的。發(fā)送方的UDP
對(duì)應(yīng)用程序交下來(lái)的報(bào)文嘉涌,在添加首部后就向下交付給IP層妻熊。既不拆分,也不合并仑最,而是保留這些報(bào)文的邊界扔役,因此,應(yīng)用程序需要選擇合適的報(bào)文大小警医。 我們經(jīng)常使用“ping”
命令來(lái)測(cè)試兩臺(tái)主機(jī)之間TCP/IP
通信是否正常亿胸,其實(shí)“ping”
命令的原理就是向?qū)Ψ街鳈C(jī)發(fā)送UDP
數(shù)據(jù)包坯钦,然后對(duì)方主機(jī)確認(rèn)收到數(shù)據(jù)包,如果數(shù)據(jù)包是否到達(dá)的消息及時(shí)反饋回來(lái)侈玄,那么網(wǎng)絡(luò)就是通的婉刀。UDP
的包頭結(jié)構(gòu): 源端口 16位 目的端口 16位 長(zhǎng)度 16位 校驗(yàn)和 16位
TCP與UDP的區(qū)別:
TCP
: 是一種流模式的協(xié)議,面向連接拗馒、傳輸可靠(保證數(shù)據(jù)正確性,保證數(shù)據(jù)順序)路星、用于傳輸大量數(shù)據(jù)(流模式)溯街、速度慢诱桂,建立連接需要開(kāi)銷較多(時(shí)間,系統(tǒng)資源)呈昔,TCP程序結(jié)構(gòu)較簡(jiǎn)單挥等。
UDP
: 是一種數(shù)據(jù)報(bào)模式的協(xié)議,面向非連接堤尾、傳輸不可靠(無(wú)法保證數(shù)據(jù)正確性,保證數(shù)據(jù)順序)肝劲、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)、速度快郭宝,對(duì)系統(tǒng)資源的要求少辞槐,UDP程序結(jié)構(gòu)較簡(jiǎn)單。
2 HTTP粘室、HTTPS榄檬、Socket協(xié)議
2.1 HTTP
協(xié)議即超文本傳送協(xié)議(HypertextTransfer Protocol
)
HTTP
是Web聯(lián)網(wǎng)的基礎(chǔ),也是手機(jī)聯(lián)網(wǎng)常用的協(xié)議之一衔统,是建立在TCP協(xié)議
之上的一種應(yīng)用鹿榜。最顯著的特點(diǎn)是:客戶端發(fā)送的每次請(qǐng)求都需要服務(wù)器回送響應(yīng),在請(qǐng)求結(jié)束后锦爵,會(huì)主動(dòng)釋放連接
舱殿。從建立連接到關(guān)閉連接的過(guò)程稱為“一次連接”。因此HTTP連接
是一種“短連接”
险掀,要保持客戶端程序的在線狀態(tài)沪袭,需要不斷地向服務(wù)器發(fā)起連接請(qǐng)求。若服務(wù)器長(zhǎng)時(shí)間無(wú)法收到客戶端的請(qǐng)求樟氢,則認(rèn)為客戶端“下線”枝恋,若客戶端長(zhǎng)時(shí)間無(wú)法收到服務(wù)器的回復(fù),則認(rèn)為網(wǎng)絡(luò)已經(jīng)斷開(kāi)嗡害。在HTTP 1.0
中焚碌,客戶端的每次請(qǐng)求都要求建立一次單獨(dú)的連接,在處理完本次請(qǐng)求后霸妹,就自動(dòng)釋放連接十电。在HTTP 1.1
中則可以在一次連接中處理多個(gè)請(qǐng)求,并且多個(gè)請(qǐng)求可以重疊進(jìn)行,不需要等待一個(gè)請(qǐng)求結(jié)束后再發(fā)送下一個(gè)請(qǐng)求鹃骂。
2.2HTTPS
協(xié)議(Hyper Text Transfer Protocol over Secure Socket Layer
)
HTTPS
是以安全為目標(biāo)的HTTP通道
台盯,是HTTP的安全版。 在HTTP下加入SSL層畏线,HTTPS
的安全基礎(chǔ)是SSL
静盅,因此加密的詳細(xì)內(nèi)容就需要SSL。HTTPS
存在不同于HTTP
的默認(rèn)端口及一個(gè)加密/身份驗(yàn)證層(在HTTP與TCP之間)寝殴。HTTP協(xié)議以明文方式發(fā)送內(nèi)容蒿叠,不提供任何方式的數(shù)據(jù)加密,如果攻擊者截取了Web瀏覽器和網(wǎng)站服務(wù)器之間的傳輸報(bào)文蚣常,就可以直接讀懂其中的信息市咽,因此HTTP協(xié)議不適合傳輸一些敏感信息。
https協(xié)議
需要到ca申請(qǐng)證書抵蚊;http是超文本傳輸協(xié)議施绎,信息是明文傳輸,https
則是具有安全性的ssl加密傳輸協(xié)議
贞绳;http
和https
使用的是完全不同的連接方式谷醉,用的端口也不一樣,前者是80
冈闭,后者是443
俱尼;http
的連接很簡(jiǎn)單,是無(wú)狀態(tài)的拒秘,HTTPS協(xié)議
是由SSL+HTTP協(xié)議
構(gòu)建的可進(jìn)行加密傳輸号显、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議。
2.3 Socket協(xié)議
- 1躺酒、套接字(socket)概念
套接字(socket)是通信的基石押蚤,是支持TCP/IP協(xié)議的網(wǎng)絡(luò)通信的基本操作單元。它是網(wǎng)絡(luò)通信過(guò)程中端點(diǎn)的抽象表示羹应,包含進(jìn)行網(wǎng)絡(luò)通信必須的五種信息:連接使用的協(xié)議揽碘,本地主機(jī)的IP地址,本地進(jìn)程的協(xié)議端口,遠(yuǎn)地主機(jī)的IP地址,遠(yuǎn)地進(jìn)程的協(xié)議端口做裙。應(yīng)用層通過(guò)傳輸層進(jìn)行數(shù)據(jù)通信時(shí)钟哥,TCP會(huì)遇到同時(shí)為多個(gè)應(yīng)用程序進(jìn)程提供并發(fā)服務(wù)的問(wèn)題千扶。多個(gè)TCP連接或多個(gè)應(yīng)用程序進(jìn)程可能需要通過(guò)同一個(gè) TCP協(xié)議端口傳輸數(shù)據(jù)。為了區(qū)別不同的應(yīng)用程序進(jìn)程和連接,許多計(jì)算機(jī)操作系統(tǒng)為應(yīng)用程序與TCP/IP協(xié)議交互提供了套接字(Socket)接口。應(yīng) 用層可以和傳輸層通過(guò)Socket接口枪汪,區(qū)分來(lái)自不同應(yīng)用程序進(jìn)程或網(wǎng)絡(luò)連接的通信涌穆,實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)牟l(fā)服務(wù)。 - 2 雀久、建立socket連接
建立Socket連接至少需要一對(duì)套接字宿稀,其中一個(gè)運(yùn)行于客戶端,稱為ClientSocket赖捌,另一個(gè)運(yùn)行于服務(wù)器端祝沸,稱為ServerSocket。
套接字之間的連接過(guò)程分為三個(gè)步驟:服務(wù)器監(jiān)聽(tīng)
越庇,客戶端請(qǐng)求
罩锐,連接確認(rèn)
。
- (1)
服務(wù)器監(jiān)聽(tīng)
:服務(wù)器端套接字并不定位具體的客戶端套接字悦荒,而是處于等待連接的狀態(tài)唯欣,實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)嘹吨,等待客戶端的連接請(qǐng)求搬味。 - (2)
客戶端請(qǐng)求
:指客戶端的套接字提出連接請(qǐng)求,要連接的目標(biāo)是服務(wù)器端的套接字蟀拷。為此碰纬,客戶端的套接字必須首先描述它要連接的服務(wù)器的套接字,指出服務(wù)器端套接字的地址和端口號(hào)问芬,然后就向服務(wù)器端套接字提出連接請(qǐng)求悦析。 - (3)
連接確認(rèn)
:當(dāng)服務(wù)器端套接字監(jiān)聽(tīng)到或者說(shuō)接收到客戶端套接字的連接請(qǐng)求時(shí),就響應(yīng)客戶端套接字的請(qǐng)求此衅,建立一個(gè)新的線程强戴,把服務(wù)器端套接字的描述發(fā)給客戶 端,一旦客戶端確認(rèn)了此描述挡鞍,雙方就正式建立連接骑歹。而服務(wù)器端套接字繼續(xù)處于監(jiān)聽(tīng)狀態(tài),繼續(xù)接收其他客戶端套接字的連接請(qǐng)求墨微。 - 3道媚、Socket連接與TCP連接比較
創(chuàng)建Socket連接
時(shí),可以指定使用的傳輸層協(xié)議翘县,Socket
可以支持不同的傳輸層協(xié)議(TCP或UDP)
最域,在使用TCP協(xié)議
進(jìn)行連接時(shí),Socket連接
就是一個(gè)TCP連接
锈麸。一般情況下Socket連接
就是TCP連接
镀脂,因此Socket連接
一旦建立,通信雙方即可開(kāi)始相互發(fā)送數(shù)據(jù)內(nèi)容忘伞,直到雙方連接斷開(kāi)薄翅。在實(shí)際網(wǎng)絡(luò)應(yīng)用中钞馁,客戶端到服務(wù)器之間的通信往往需要穿越多個(gè)中間節(jié)點(diǎn)(如路由器
、網(wǎng)關(guān)
匿刮、防火墻
等僧凰,大部分防火墻
默認(rèn)會(huì)關(guān)閉長(zhǎng)時(shí)間處于非活躍狀態(tài)的連接
),而導(dǎo)致 Socket 連接中斷熟丸,因此需要通過(guò)"輪詢"
告訴網(wǎng)絡(luò)該連接處于活躍狀態(tài)训措。 - 4、Socket連接與HTTP連接比較
HTTP連接
使用的是“請(qǐng)求-響應(yīng)”
的方式光羞,在請(qǐng)求時(shí)需要先建立連接绩鸣,在客戶端向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器端才能回復(fù)數(shù)據(jù)纱兑。而且很多情況下呀闻,需要服務(wù)器端主動(dòng)向客戶端推送數(shù)據(jù),保持客戶端與服務(wù)器數(shù)據(jù)的實(shí)時(shí)與同步潜慎。此時(shí)若雙方建立的是Socket連接
捡多,服務(wù)器就可以直接將數(shù)據(jù)傳送給客戶端;若雙方建立的是HTTP連接
铐炫,則服務(wù)器需要等到客戶端發(fā)送一次請(qǐng)求后才能將數(shù)據(jù)傳回給客戶端垒手,所以,客戶端定時(shí)向服務(wù)器端發(fā)送連接請(qǐng)求倒信,可以保持在線狀態(tài)科贬,同時(shí)“詢問(wèn)”服務(wù)器是否有新的數(shù)據(jù),有就將數(shù)據(jù)傳給客戶端鳖悠。
隨手記榜掌,看到新東西會(huì)加進(jìn)來(lái)