TCP協(xié)議?
TCP(Transmission Control Protocol 傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由IETF的RFC 793定義。在簡(jiǎn)化的計(jì)算機(jī)網(wǎng)絡(luò)OSI模型中,它完成第四層傳輸層所指定的功能,用戶數(shù)據(jù)報(bào)協(xié)議(UDP)是同一層內(nèi)另一個(gè)重要的傳輸協(xié)議。
在因特網(wǎng)協(xié)議族(Internet protocol suite)中,TCP層是位于IP層之上,應(yīng)用層之下的中間層。不同主機(jī)的應(yīng)用層之間經(jīng)常需要可靠的、像管道一樣的連接,但是IP層不提供這樣的流機(jī)制,而是提供不可靠的包交換。
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)存等硬件資源。?
由于TCP存在確認(rèn)機(jī)制和三次握手機(jī)制,這些是導(dǎo)致TCP容易被人利用,實(shí)現(xiàn)DOS、DDOS、CC等攻擊。
TCP應(yīng)用場(chǎng)景?
當(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,Outlook使用POP、SMTP,QQ文件傳輸?shù)取?/p>
UDP協(xié)議?
UDP 是User Datagram Protocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)報(bào)協(xié)議,是OSI(Open System Interconnection,開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù),IETF RFC 768是UDP的正式規(guī)范。UDP在IP報(bào)文的協(xié)議號(hào)是17。
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ì)很容易丟包。
UDP應(yīng)用場(chǎng)景?
當(dāng)對(duì)網(wǎng)絡(luò)通訊質(zhì)量要求不高的時(shí)候,要求網(wǎng)絡(luò)通訊速度能盡量的快,這時(shí)就可以使用UDP。在日常生活中,常見使用UDP協(xié)議的應(yīng)用比如:QQ語音、QQ視頻、TFTP等。
TCP和UDP使用IP協(xié)議從一個(gè)網(wǎng)絡(luò)傳送數(shù)據(jù)包到另一個(gè)網(wǎng)絡(luò)。把IP想像成一種高速公路,它允許其它協(xié)議在上面行駛并找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,文件傳輸協(xié)議FTP這樣的協(xié)議等。?
TCP/IP是個(gè)協(xié)議組,可分為三個(gè)層次:網(wǎng)絡(luò)層、傳輸層和應(yīng)用層。
在網(wǎng)絡(luò)層有:IP協(xié)議、ICMP協(xié)議、ARP協(xié)議、RARP協(xié)議和BOOTP協(xié)議。?
在傳輸層中有:TCP協(xié)議與UDP協(xié)議。?
在應(yīng)用層有:FTP、HTTP、TELNET、SMTP、DNS等協(xié)議。?
因此,HTTP本身就是一個(gè)協(xié)議,是從Web服務(wù)器傳輸超文本到本地瀏覽器的傳送協(xié)議。
TCP和UDP是FTP,HTTP和SMTP之類使用的傳輸層協(xié)議。雖然TCP和UDP都是用來傳輸其他協(xié)議的,它們卻有一個(gè)顯著的不同:TCP提供有保證的數(shù)據(jù)傳輸,而UDP不提供。這意味著TCP有一個(gè)特殊的機(jī)制來確保數(shù)據(jù)安全的不出錯(cuò)的從一個(gè)端點(diǎn)傳到另一個(gè)端點(diǎn),而UDP不提供任何這樣的保證。?
HTTP協(xié)議?
HTTP(超文本傳輸協(xié)議)是利用TCP在兩臺(tái)電腦(通常是Web服務(wù)器和客戶端)之間傳輸信息的協(xié)議??蛻舳耸褂肳eb瀏覽器發(fā)起HTTP請(qǐng)求給Web服務(wù)器,Web服務(wù)器發(fā)送被請(qǐng)求的信息給客戶端。
HTTP是短連接:客戶端發(fā)送請(qǐng)求都需要服務(wù)器端回送響應(yīng).請(qǐng)求結(jié)束后,主動(dòng)釋放鏈接,因此為短連接。通常的做法是,不需要任何數(shù)據(jù),也要保持每隔一段時(shí)間向服務(wù)器發(fā)送”保持連接”的請(qǐng)求。這樣可以保證客戶端在服務(wù)器端是”上線”狀態(tài)。
HTTP連接使用的是”請(qǐng)求-響應(yīng)”方式,不僅在請(qǐng)求時(shí)建立連接,而且客戶端向服務(wù)器端請(qǐng)求后,服務(wù)器才返回?cái)?shù)據(jù)。
Socket協(xié)議?
網(wǎng)絡(luò)上的兩個(gè)程序通過一個(gè)雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)連接的一端稱為一個(gè)socket。?
建立網(wǎng)絡(luò)通信連接至少要一對(duì)端口號(hào)(socket)。socket本質(zhì)是編程接口(API),對(duì)TCP/IP的封裝,TCP/IP也要提供可供程序員做網(wǎng)絡(luò)開發(fā)所用的接口,這就是Socket編程接口;HTTP是轎車,提供了封裝或者顯示數(shù)據(jù)的具體形式;Socket是發(fā)動(dòng)機(jī),提供了網(wǎng)絡(luò)通信的能力。