OSI模型 ?
????????OSI協(xié)議是由ISO(國際標(biāo)準(zhǔn)化組織)制定的十嘿,它有三個基本的功能:提供給開發(fā)者一個必須的、通用的概念以便開發(fā)完善勿决、可以用來解釋連接不同系統(tǒng)的框架曹货。
????OSI將計算機網(wǎng)絡(luò)體系結(jié)構(gòu)(architecture)劃分為以下七層:
? ??????物理層: 將數(shù)據(jù)轉(zhuǎn)換為可通過物理介質(zhì)傳送的電子信號?相當(dāng)于郵局中的搬運工人娜遵。(傳輸介質(zhì)上的原始比特流傳輸)
????????數(shù)據(jù)鏈路層: 決定訪問網(wǎng)絡(luò)介質(zhì)的方式纳胧。(物理尋址,差錯檢測)
????????????????在此層將數(shù)據(jù)分幀,并處理流控制。本層指定拓?fù)浣Y(jié)構(gòu)并提供硬件尋址,相當(dāng)于郵局中的裝拆箱工人堡牡。
????????網(wǎng)絡(luò)層: 使用權(quán)數(shù)據(jù)路由經(jīng)過大型網(wǎng)絡(luò) 相當(dāng)于郵局中的排序工人可免。(邏輯尋址怕品,路由選擇)
????????傳輸層: 提供終端到終端的可靠連接 相當(dāng)于公司中跑郵局的送信職員。(提供端到端的連接——可靠或者不可靠)
????????會話層: 允許用戶使用簡單易記的名稱建立連接 相當(dāng)于公司中收寄信涨薪、寫信封與拆信封的秘書末捣。(不同機器之間用戶會話的建立和管理)
????????表示層: 協(xié)商數(shù)據(jù)交換格式 相當(dāng)公司中簡報老板、替老板寫信的助理。(數(shù)據(jù)的格式化,加密解密薪韩、壓縮和解壓縮)
????????應(yīng)用層: 用戶的應(yīng)用程序和網(wǎng)絡(luò)之間的接口拉盾。(各種應(yīng)用程序泻红,如HTTP、FTP骗灶、TELENT)
OSI的優(yōu)點
? ? 1萝究、將網(wǎng)絡(luò)的通信過程劃分為一個個小部件,有利于各個部件的開發(fā)、設(shè)計和故障排除;
????2、標(biāo)準(zhǔn)化網(wǎng)絡(luò)組件,允許多個供應(yīng)進行開發(fā);
? ? 3椒拗、通過定義在模型的每一層實現(xiàn)什么功能堵未,鼓勵產(chǎn)業(yè)的標(biāo)準(zhǔn)化
? ? 4、允許各種類型的網(wǎng)絡(luò)硬件和軟件相互通信
? ? 5膘怕、防止對某一層所做的改動影響到其他的層
TCP協(xié)議(Transmission Control Protocol忘古,傳輸控制協(xié)議)
????TCP/IP協(xié)議是Internet最基本的協(xié)議娘荡、Internet國際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ)大年,由網(wǎng)絡(luò)層的IP協(xié)議和傳輸層的TCP協(xié)議組成轻要。通俗而言:TCP負(fù)責(zé)發(fā)現(xiàn)傳輸?shù)膯栴}柏蘑,一有問題就發(fā)出信號庞溜,要求重新傳輸,直到所有數(shù)據(jù)安全正確地傳輸?shù)侥康牡亍6鳬P是給因特網(wǎng)的每一臺聯(lián)網(wǎng)設(shè)備規(guī)定一個地址。
????TCP是一種面向連接的,可靠的傳輸層通信協(xié)議。它有如下特點
? ? ? ? (1)基于流的方式;
? ? ? ? (2)面向連接;
? ? ? ? (3)可靠通信方式;
? ? ? ? (4)在網(wǎng)絡(luò)狀況不佳的時候盡量降低系統(tǒng)由于重傳帶來的帶寬開銷
? ? ? ? (5)通信連接維護是面向通信的倆個端點的,而不考慮中間網(wǎng)段和節(jié)點弄唧。
? ? ? ? TCP三次握手
? ??????????TCP三次即建立TCP連接澄干,指建立一個TCP連接時,需要客戶端服務(wù)端總共發(fā)送3?個包以確認(rèn)連接的建立。
(1)第一次握手:Client將標(biāo)志位SYN置為1(表示要發(fā)起一個連接),隨機產(chǎn)生一個值seq=J,并將該數(shù)據(jù)包發(fā)送給Server,Client進入SYN_SENT狀態(tài),等待Server確認(rèn)鸠窗。
(2)第二次握手:Server收到數(shù)據(jù)包后由標(biāo)志位SYN=1知道Client請求建立連接臣嚣,Server將標(biāo)志位SYN和ACK都置為1抢埋,ack=J+1,隨機產(chǎn)生一個值seq=K,并將該數(shù)據(jù)包發(fā)送給Client以確認(rèn)連接請求,Server進入SYN_RCVD狀態(tài)闯两。
(3)第三次握手:Client收到確認(rèn)后逊躁,檢查ack是否為J+1狞洋,ACK是否為1借嗽,如果正確則將標(biāo)志位ACK置為1惨寿,ack=K+1特碳,并將該數(shù)據(jù)包發(fā)送給Server硅瞧,Server檢查ack是否為K+1颂暇,ACK是否為1阳啥,如果正確則連接建立成功,Client和Server進入ESTABLISHED狀態(tài),完成三次握手,隨后Client與Server之間可以開始傳輸數(shù)據(jù)了改鲫。
? ??????四次揮手
? ??????????所謂四次揮手(Four-Way Wavehand)即終止TCP連接截歉,就是指斷開一個TCP連接時,需要客戶端和服務(wù)端總共發(fā)送4個包以確認(rèn)連接的斷開末早。在socket編程中穿撮,這一過程由客戶端或服務(wù)端任一方執(zhí)行close來觸發(fā),整個流程如下圖所示:
? ????由于TCP連接時全雙工的,因此名扛,每個方向都必須要單獨進行關(guān)閉,這一原則是當(dāng)一方完成數(shù)據(jù)發(fā)送任務(wù)后,發(fā)送一個FIN來終止這一方向的連接伙窃,收到一個FIN只是意味著這一方向上沒有數(shù)據(jù)流動了,即不會再收到數(shù)據(jù)了落塑,但是在這個TCP連接上仍然能夠發(fā)送數(shù)據(jù)憾赁,直到這一方向也發(fā)送了FIN颓芭。首先進行關(guān)閉的一方將執(zhí)行主動關(guān)閉亡问,而另一方則執(zhí)行被動關(guān)閉床玻,上圖描述的即是如此待牵。
(1)第一次揮手:Client發(fā)送一個FIN膨更,用來關(guān)閉Client到Server的數(shù)據(jù)傳送,Client進入FIN_WAIT_1狀態(tài)嫡锌。
(2)第二次揮手:Server收到FIN后虑稼,發(fā)送一個ACK給Client,確認(rèn)序號為收到序號+1(與SYN相同势木,一個FIN占用一個序號)蛛倦,Server進入CLOSE_WAIT狀態(tài)。
(3)第三次揮手:Server發(fā)送一個FIN啦桌,用來關(guān)閉Server到Client的數(shù)據(jù)傳送溯壶,Server進入LAST_ACK狀態(tài)。
(4)第四次揮手:Client收到FIN后甫男,Client進入TIME_WAIT狀態(tài)且改,接著發(fā)送一個ACK給Server,確認(rèn)序號為收到序號+1板驳,Server進入CLOSED狀態(tài)又跛,完成四次揮手。
UDP協(xié)議(User Datagram Protocol若治,用戶數(shù)據(jù)報協(xié)議)
? ??UDP用戶數(shù)據(jù)報協(xié)議慨蓝,是面向無連接的通訊協(xié)議,UDP數(shù)據(jù)包括目的端口號和源端口號信息端幼,由于通訊不需要連接礼烈,所以可以實現(xiàn)廣播發(fā)送。UDP通訊時不需要接收方確認(rèn)静暂,屬于不可靠的傳輸济丘,可能會出現(xiàn)丟包現(xiàn)象谱秽,實際應(yīng)用中要求程序員編程驗證洽蛀。
? ? UDP是一種無連接,盡力而為的傳輸層通信協(xié)議疟赊。它有如下特點
? ? ? ? (1)面向報文的協(xié)議郊供;
? ? ? ? (2)無連接;
? ? ? ? (3)盡力而為的通信方式近哟;
? ? ? ? (4)資源消耗小驮审,處理速度快的優(yōu)點;
? ? ? ? (5)在網(wǎng)絡(luò)狀況不佳的情況下數(shù)據(jù)的丟包情況會非常嚴(yán)重
UDP和TCP的對比——UDP和TCP是TCP/IP體系結(jié)構(gòu)運輸層中的倆個重要協(xié)議
UDP:隨時可以傳輸數(shù)據(jù)傳輸數(shù)據(jù),不需要建立連接疯淫,所以可以總結(jié)為無連接的UDP地来。
TCP:首先進行“三報文握手”建立連接,然后數(shù)據(jù)傳輸熙掺,數(shù)據(jù)傳輸結(jié)束后需要“四報文揮手”釋放連接未斑。傳輸過程需要一對一的連接后再進行數(shù)據(jù)傳輸。面向連接的TCP
總結(jié):UDP不需要建立連接币绩,TCP需要建立連接后進行數(shù)據(jù)傳輸蜡秽。
UDP:因為它不需要建立連接,所以它可以進行單播缆镣、多播和廣播
TCP:數(shù)據(jù)傳輸是基于TCP連接的可靠信道芽突,所以TCP僅支持單播
總結(jié):UDP支持單播、多播和廣播董瞻,TCP只支持單播
UDP:數(shù)據(jù)傳輸是面向報文傳輸
TCP:數(shù)據(jù)傳輸時面向字節(jié)流