一偎蘸、 計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)分層
物理層作用:定義一些電器,機(jī)械杰妓,過(guò)程和規(guī)范,確保原始的數(shù)據(jù)可在各種物理媒體上傳輸碘勉;
數(shù)據(jù)傳輸基本單位:bit/比特巷挥;
設(shè)備:中繼器(放大器)和集線器;
備注:沒(méi)有尋址的概念验靡;
-----------------------------------------------------------------------
數(shù)據(jù)鏈路層作用:物理地址尋址倍宾、數(shù)據(jù)的成幀、流量控制胜嗓、數(shù)據(jù)的檢錯(cuò)高职、重發(fā)等;
典型協(xié)議:以太網(wǎng)辞州;
數(shù)據(jù)傳輸基本單位:frame(幀)怔锌;
設(shè)備:網(wǎng)橋和交換機(jī);
備注:交換機(jī)通過(guò)MAC地址轉(zhuǎn)發(fā)數(shù)據(jù)变过,邏輯鏈路控制埃元;
-----------------------------------------------------------------------
網(wǎng)絡(luò)層作用:定義一個(gè)邏輯的尋址,選擇最佳路徑傳輸媚狰,路由數(shù)據(jù)包岛杀;
典型協(xié)議:IP,ICMP崭孤,ARP类嗤,BOOTP衫生;
數(shù)據(jù)傳輸基本單位:packet/數(shù)據(jù)包;
設(shè)備:路由器土浸;
-----------------------------------------------------------------------
傳輸層作用:負(fù)責(zé)將上層數(shù)據(jù)分段并提供端到端的、可靠的或不可靠的傳輸以及端到端的差錯(cuò)控制和流量控制問(wèn)題彭羹;
典型協(xié)議:TCP黄伊,UDP,port(65535個(gè)端口)派殷;
數(shù)據(jù)傳輸基本單位:fragment 段还最;
設(shè)備:網(wǎng)關(guān);
-----------------------------------------------------------------------
會(huì)話層作用:控制會(huì)話毡惜,建立管理終止應(yīng)用程序會(huì)話拓轻;
NFS,SQL经伙,ASP扶叉,PHP,JSP帕膜,RSVP(資源源預(yù)留協(xié)議)枣氧;?
-----------------------------------------------------------------------
表示層作用:對(duì)上層數(shù)據(jù)或信息進(jìn)行變換以保證一個(gè)主機(jī)應(yīng)用層信息可以被另一個(gè)主機(jī)的應(yīng)用程序理解;
如:ASCII垮刹,JPEG达吞,PNG,MP3荒典,WAV酪劫,AVI;
備注:表示層的數(shù)據(jù)轉(zhuǎn)換包括數(shù)據(jù)的加密寺董、壓縮覆糟、格式轉(zhuǎn)換等;
-----------------------------------------------------------------------
應(yīng)用層作用:控制應(yīng)用程序螃征,為操作系統(tǒng)或網(wǎng)絡(luò)應(yīng)用程序提供訪問(wèn)網(wǎng)絡(luò)服務(wù)的接口搪桂;
典型協(xié)議:HTTP,TELNET盯滚,SSH踢械,F(xiàn)TP,SMTP魄藕,DNS内列;
數(shù)據(jù)傳輸基本單位:報(bào)文;
二背率、TCP/IP 協(xié)議族基礎(chǔ)
TCP/IP 是不同的通信協(xié)議的大集合话瞧。
TCP - 傳輸控制協(xié)議(Transmission Control Protocol)
TCP 用于從應(yīng)用程序到網(wǎng)絡(luò)的數(shù)據(jù)傳輸控制嫩与。
TCP 負(fù)責(zé)在數(shù)據(jù)傳送之前將它們分割為 IP 包,然后在它們到達(dá)的時(shí)候?qū)⑺鼈冎亟M交排。
IP - 網(wǎng)際協(xié)議(Internet Protocol)
IP 負(fù)責(zé)計(jì)算機(jī)之間的通信划滋。
IP 負(fù)責(zé)在因特網(wǎng)上發(fā)送和接收數(shù)據(jù)包。
HTTP - 超文本傳輸協(xié)議(Hyper Text Transfer Protocol)
HTTP 負(fù)責(zé) web 服務(wù)器與 web 瀏覽器之間的通信埃篓。
HTTP 用于從 web 客戶端(瀏覽器)向 web 服務(wù)器發(fā)送請(qǐng)求处坪,并從 web 服務(wù)器向 web 客戶端返回內(nèi)容(網(wǎng)頁(yè))。
HTTPS - 安全的 HTTP(HTTP Secure)
HTTPS 負(fù)責(zé)在 web 服務(wù)器和 web 瀏覽器之間的安全通信架专。
作為有代表性的應(yīng)用同窘,HTTPS 會(huì)用于處理信用卡交易和其他的敏感數(shù)據(jù)。
SSL - 安全套接字層(Secure Sockets Layer)
SSL 協(xié)議用于為安全數(shù)據(jù)傳輸加密數(shù)據(jù)部脚。
SMTP - 簡(jiǎn)易郵件傳輸協(xié)議(Simple Mail Transfer Protocol)
SMTP 用于電子郵件的傳輸想邦。
MIME - 多用途因特網(wǎng)郵件擴(kuò)展(Multi-purpose Internet Mail Extensions)
MIME 協(xié)議使 SMTP 有能力通過(guò) TCP/IP 網(wǎng)絡(luò)傳輸多媒體文件,包括聲音委刘、視頻和二進(jìn)制數(shù)據(jù)丧没。
IMAP - 因特網(wǎng)消息訪問(wèn)協(xié)議(Internet Message Access Protocol)
IMAP 用于存儲(chǔ)和取回電子郵件。
POP - 郵局協(xié)議(Post Office Protocol)
POP 用于從電子郵件服務(wù)器向個(gè)人電腦下載電子郵件钱雷。
FTP - 文件傳輸協(xié)議(File Transfer Protocol)
FTP 負(fù)責(zé)計(jì)算機(jī)之間的文件傳輸骂铁。
NTP - 網(wǎng)絡(luò)時(shí)間協(xié)議(Network Time Protocol)
NTP 用于在計(jì)算機(jī)之間同步時(shí)間(鐘)。
DHCP - 動(dòng)態(tài)主機(jī)配置協(xié)議(Dynamic Host Configuration Protocol)
DHCP 用于向網(wǎng)絡(luò)中的計(jì)算機(jī)分配動(dòng)態(tài) IP 地址罩抗。
SNMP - 簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(Simple Network Management Protocol)
SNMP 用于計(jì)算機(jī)網(wǎng)絡(luò)的管理拉庵。
LDAP - 輕量級(jí)的目錄訪問(wèn)協(xié)議(Lightweight Directory Access Protocol)
LDAP 用于從因特網(wǎng)搜集關(guān)于用戶和電子郵件地址的信息。
ICMP - 因特網(wǎng)消息控制協(xié)議(Internet Control Message Protocol)
ICMP 負(fù)責(zé)網(wǎng)絡(luò)中的錯(cuò)誤處理套蒂。
ARP - 地址解析協(xié)議(Address Resolution Protocol)
ARP - 用于通過(guò) IP 來(lái)查找基于 IP 地址的計(jì)算機(jī)網(wǎng)卡的硬件地址钞支。
RARP - 反向地址轉(zhuǎn)換協(xié)議(Reverse Address Resolution Protocol)
RARP 用于通過(guò) IP 查找基于硬件地址的計(jì)算機(jī)網(wǎng)卡的 IP 地址。
BOOTP - 自舉協(xié)議(Boot Protocol)
BOOTP 用于從網(wǎng)絡(luò)啟動(dòng)計(jì)算機(jī)操刀。
PPTP - 點(diǎn)對(duì)點(diǎn)隧道協(xié)議(Point to Point Tunneling Protocol)
PPTP 用于私人網(wǎng)絡(luò)之間的連接(隧道)烁挟。
三、傳輸層中的 TCP 協(xié)議骨坑、UDP 協(xié)議及端口
1撼嗓、TCP?與?UDP?的區(qū)別:
1)TCP基于連接,UDP無(wú)連接欢唾;
2)TCP對(duì)系統(tǒng)資源的要求較多且警,UDP少;
3)UDP程序結(jié)構(gòu)較簡(jiǎn)單礁遣;
4)TCP具有流量控制模式斑芜,UDP是數(shù)據(jù)報(bào)模式;
5)TCP保證數(shù)據(jù)正確性祟霍,UDP可能丟包杏头;
6)TCP保證數(shù)據(jù)順序盈包,UDP不保證;
7)TCP用于在傳輸層有必要實(shí)現(xiàn)可靠傳輸?shù)那闆r醇王,UDP主要用于那些對(duì)高速傳輸和實(shí)時(shí)性有較高要求的即時(shí)通信或廣播通信呢燥。
使用TCP的協(xié)議:FTP(文件傳輸協(xié)議)、Telnet(遠(yuǎn)程登錄協(xié)議)寓娩、SMTP(簡(jiǎn)單郵件傳輸協(xié)議)疮茄、POP3(和SMTP相對(duì),用于接收郵件)根暑、HTTP協(xié)議等。
使用UDP協(xié)議包括:TFTP(簡(jiǎn)單文件傳輸協(xié)議)徙邻、SNMP(簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議)排嫌、DNS(域名解析協(xié)議)、NFS缰犁、BOOTP淳地。
2、TCP三次握手與四次揮手
1)三次握手
TCP 提供面向有連接的通信傳輸帅容。面向有連接是指在數(shù)據(jù)通信開(kāi)始之前先做好兩端之間的準(zhǔn)備工作颇象。所謂三次握手是指建立一個(gè) TCP 連接時(shí)需要客戶端和服務(wù)器端總共發(fā)送三個(gè)包以確認(rèn)連接的建立。在socket編程中并徘,這一過(guò)程由客戶端執(zhí)行connect來(lái)觸發(fā)遣钳。
第一次握手:客戶端將標(biāo)志位SYN置為1,隨機(jī)產(chǎn)生一個(gè)值seq=J麦乞,并將該數(shù)據(jù)包發(fā)送給服務(wù)器端蕴茴,客戶端進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器端確認(rèn)姐直。
第二次握手:服務(wù)器端收到數(shù)據(jù)包后由標(biāo)志位SYN=1知道客戶端請(qǐng)求建立連接倦淀,服務(wù)器端將標(biāo)志位SYN和ACK都置為1,ack=J+1声畏,隨機(jī)產(chǎn)生一個(gè)值seq=K撞叽,并將該數(shù)據(jù)包發(fā)送給客戶端以確認(rèn)連接請(qǐng)求,服務(wù)器端進(jìn)入SYN_RCVD狀態(tài)插龄。
第三次握手:客戶端收到確認(rèn)后愿棋,檢查ack是否為J+1,ACK是否為1辫狼,如果正確則將標(biāo)志位ACK置為1初斑,ack=K+1,并將該數(shù)據(jù)包發(fā)送給服務(wù)器端膨处,服務(wù)器端檢查ack是否為K+1见秤,ACK是否為1砂竖,如果正確則連接建立成功,客戶端和服務(wù)器端進(jìn)入ESTABLISHED狀態(tài)鹃答,完成三次握手乎澄,隨后客戶端與服務(wù)器端之間可以開(kāi)始傳輸數(shù)據(jù)了。
三次握手的特點(diǎn):沒(méi)有應(yīng)用層的數(shù)據(jù)测摔;SYN這個(gè)標(biāo)志位只有在TCP建產(chǎn)連接時(shí)才會(huì)被置1置济;握手完成后SYN標(biāo)志位被置0;
2)四次揮手
四次揮手即終止TCP連接锋八,就是指斷開(kāi)一個(gè)TCP連接時(shí)浙于,需要客戶端和服務(wù)端總共發(fā)送4個(gè)包以確認(rèn)連接的斷開(kāi)。在socket編程中挟纱,這一過(guò)程由客戶端或服務(wù)端任一方執(zhí)行close來(lái)觸發(fā)羞酗。
由于TCP連接是全雙工的,因此紊服,每個(gè)方向都必須要單獨(dú)進(jìn)行關(guān)閉檀轨,這一原則是當(dāng)一方完成數(shù)據(jù)發(fā)送任務(wù)后,發(fā)送一個(gè)FIN來(lái)終止這一方向的連接欺嗤,收到一個(gè)FIN只是意味著這一方向上沒(méi)有數(shù)據(jù)流動(dòng)了参萄,即不會(huì)再收到數(shù)據(jù)了,但是在這個(gè)TCP連接上仍然能夠發(fā)送數(shù)據(jù)煎饼,直到這一方向也發(fā)送了FIN讹挎。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉,而另一方則執(zhí)行被動(dòng)關(guān)閉吆玖。
中斷連接端可以是客戶端淤袜,也可以是服務(wù)器端。
第一次揮手:客戶端發(fā)送一個(gè)FIN=M衰伯,用來(lái)關(guān)閉客戶端到服務(wù)器端的數(shù)據(jù)傳送铡羡,客戶端進(jìn)入FIN_WAIT_1狀態(tài)。意思是說(shuō)"我客戶端沒(méi)有數(shù)據(jù)要發(fā)給你了"意鲸,但是如果你服務(wù)器端還有數(shù)據(jù)沒(méi)有發(fā)送完成烦周,則不必急著關(guān)閉連接,可以繼續(xù)發(fā)送數(shù)據(jù)怎顾。
第二次揮手:服務(wù)器端收到FIN后读慎,先發(fā)送ack=M+1,告訴客戶端槐雾,你的請(qǐng)求我收到了夭委,但是我還沒(méi)準(zhǔn)備好,請(qǐng)繼續(xù)你等我的消息募强。這個(gè)時(shí)候客戶端就進(jìn)入FIN_WAIT_2 狀態(tài)株灸,繼續(xù)等待服務(wù)器端的FIN報(bào)文崇摄。
第三次揮手:當(dāng)服務(wù)器端確定數(shù)據(jù)已發(fā)送完成,則向客戶端發(fā)送FIN=N報(bào)文慌烧,告訴客戶端逐抑,好了,我這邊數(shù)據(jù)發(fā)完了屹蚊,準(zhǔn)備好關(guān)閉連接了厕氨。服務(wù)器端進(jìn)入LAST_ACK狀態(tài)。
第四次揮手:客戶端收到FIN=N報(bào)文后汹粤,就知道可以關(guān)閉連接了命斧,但是他還是不相信網(wǎng)絡(luò),怕服務(wù)器端不知道要關(guān)閉嘱兼,所以發(fā)送ack=N+1后進(jìn)入TIME_WAIT狀態(tài)冯丙,如果Server端沒(méi)有收到ACK則可以重傳。服務(wù)器端收到ACK后遭京,就知道可以斷開(kāi)連接了∨⒗颍客戶端等待了2MSL后依然沒(méi)有收到回復(fù)哪雕,則證明服務(wù)器端已正常關(guān)閉,那好鲫趁,我客戶端也可以關(guān)閉連接了斯嚎。最終完成了四次握手。
上面是一方主動(dòng)關(guān)閉挨厚,另一方被動(dòng)關(guān)閉的情況堡僻,實(shí)際中還會(huì)出現(xiàn)同時(shí)發(fā)起主動(dòng)關(guān)閉的情況。
3)名詞解釋:
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ù)的完整性疫剃。
FIN??發(fā)送端完成發(fā)送任務(wù)位,當(dāng)TCP完成數(shù)據(jù)傳輸需要斷開(kāi)時(shí),提出斷開(kāi)連接的一方將這位置1钉疫。
SYN??同步序列號(hào),TCP建立連接時(shí)將這個(gè)位置1。
3巢价、端口
數(shù)據(jù)鏈路和 IP 中的地址牲阁,分別指的是 MAC 地址和 IP 地址。前者用來(lái)識(shí)別同一鏈路中不同的計(jì)算機(jī)壤躲,后者用來(lái)識(shí)別 TCP/IP 網(wǎng)絡(luò)中互連的主機(jī)和路由器城菊。在傳輸層也有這種類似于地址的概念,那就是端口號(hào)碉克。端口號(hào)用來(lái)識(shí)別同一臺(tái)計(jì)算機(jī)中進(jìn)行通信的不同應(yīng)用程序凌唬。因此,它也被稱為程序地址漏麦。