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