TCP/IP協議
IP地址(IP Address)
計算機分布在世界各地,要想和它們通信,必須要知道確切的位置。確定計算機位置的方式有多種,IP 地址是最常用的,例如,114.114.114.114 是國內第一個、全球第三個開放的 DNS 服務地址,127.0.0.1 是本機地址。
其實,我們的計算機并不知道 IP 地址對應的地理位置,當要通信時,只是將 IP 地址封裝到要發送的數據包中,交給路由器去處理。路由器有非常智能和高效的算法,很快就會找到目標計算機,并將數據包傳遞給它,完成一次單向通信。
目前大部分軟件使用 IPv4 地址,但 IPv6 也正在被人們接受,尤其是在教育網中,已經大量使用。
端口(Port)
有了 IP 地址,雖然可以找到目標計算機,但仍然不能進行通信。一臺計算機可以同時提供多種網絡服務,例如Web服務、FTP服務(文件傳輸服務)、SMTP服務(郵箱服務)等,僅有 IP 地址,計算機雖然可以正確接收到數據包,但是卻不知道要將數據包交給哪個網絡程序來處理,所以通信失敗。
為了區分不同的網絡程序,計算機會為每個網絡程序分配一個獨一無二的端口號(Port Number),例如,Web服務的端口號是 80,FTP 服務的端口號是 21,SMTP 服務的端口號是 25。
端口(Port)是一個虛擬的、邏輯上的概念。可以將端口理解為一道門,數據通過這道門流入流出,每道門有不同的編號,就是端口號。
協議(Protocol)
協議(Protocol)就是網絡通信的約定,通信的雙方必須都遵守才能正常收發數據。協議有很多種,例如 TCP、UDP、IP 等,通信的雙方必須使用同一協議才能通信。協議是一種規范,由計算機組織制定,規定了很多細節,例如,如何建立連接,如何相互識別等。
協議僅僅是一種規范,必須由計算機軟件來實現。例如 IP 協議規定了如何找到目標計算機,那么各個開發商在開發自己的軟件時就必須遵守該協議,不能另起爐灶。
所謂協議族(Protocol Family),就是一組協議(多個協議)的統稱。最常用的是 TCP/IP 協議族,它包含了 TCP、IP、UDP、Telnet、FTP、SMTP 等上百個互為關聯的協議,由于 TCP、IP 是兩種常用的底層協議,所以把它們統稱為 TCP/IP 協議族。
TCP UDP 介紹
TCP(Transmission Control Protocol,傳輸控制協議):是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。
UDP(User Datagram Protocol,用戶數據報協議):,是 OSI(Open System Interconnection,開放式系統互聯) 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。
TCP UDP 特點
TCP特點:
1、tcp是面向連接的,通信之前需要建立連接,通信結束之后還需釋放連接(三次握手,四次揮手)
2、tcp提供了很可靠的支付服務,可靠也就是說:tcp的數據沒有重復、沒有丟失、沒有錯誤、并且和發送端的數據是一致的。
3、tcp是面向字節流的。也就是tcp是以字節為單位,雖然傳輸的過程中數據被劃分為了一個一個數據報文,但是這只是為了方便傳輸,接收端最終接受到的數據和發送端接收到的數據是一樣的。
4、tcp提供全雙工通信:就是tcp的兩端即可以作為發送端,也可以作為接收端。
5、最重要的一點就是一個tcp的連接只能有兩個端點,支持一對一通信。
6、tcp首部含有20個字節。
UDP特點:
1、首先udp是無連接的,通信結束也不需要釋放連接。
2、upd是一種不可靠的協議,發出去就不管了。
3、udp是一種面向報文的鏈接;udp數據傳輸的單位是報文,而且不會對數據做任何的拆分和拼接操作。在發送端,應用程序給傳輸層的udp什么樣的數據,udp不會對數據進行拆分,最會增加一個udp頭并且交給網絡層。在接收端,udp收到網絡層的數據之后,除去ip(網絡層協議)數據報頭部后便交給應用層,不會做任何的拼接操作。
4、udp是不存在擁塞控制的,并且始終就是用恒定的速率發送數據,并不會根據網絡擁塞情況對發送速率做調整。這個狀況下就會存在優勢和弊端;弊端就是:網絡擁塞時有些報文就會丟失,所以才說udp是不可靠的協議;他的優點就是有些使用場景允許報文丟失,比如:直播,語音通話,但是對實時性要求比較高。
5、udp支持一對一,一對多,多對多,多對一通信。
6、udp首部的開銷比較小,只有8個字節。相對于tcp來說,效率還是很高的。
TCP UDP 優缺點
TCP優點:可靠,穩定。tcp的可靠體現在tcp在傳遞數據之前,會有三次握手來建立連接,而且在數據傳遞時,有確認,窗口,重傳,擁塞控制機制,在數據傳完后,還會斷開連接用來節約系統資源。
TCP缺點:速度慢,效率低,占用系統資源高,易被攻擊。TCP在傳遞數據之前,要先建連接,這會消耗時間,而且在數據傳遞時,確認機制,重傳機制,擁塞機制等都會消耗大量的時間,而且要在每臺設備上維護所有的傳輸連接,事實上,每個連接都會占用系統的CPU,內存等硬件資源。而且,因為TCP有確認機制,三次握手機制,這些也導致TCP容易被人利用,實現DOS,DDOS,CC等攻擊。
UDP優點:速度快,比TCP稍安全。UDP沒有TCP的握手,確認,窗口,重傳,擁塞控制等機制。UDP是一個無狀態的傳輸協議,所以它在傳遞數據時非常快。沒有TCP的這些機制,UDP較TCP被攻擊者利用的漏洞就要少一些。但UDP也是無法避免攻擊的。比如:UDP Flood攻擊。
UDP缺點:不可靠,不穩定。因為UDP沒有TCP那些可靠的機制,在數據傳遞時,如果網絡質量不好,就會容易丟包。
TCP UDP 區別
TCP基于連接,需要經過三次握手建立可靠連接,可簡單類比打電話過程:A打給B(1),B接通電話并向A問好(2),A聽到B的問好后向B問好(3),之后開始聊正事,且聊天過程式實時同步有序的。
UDP不基于連接,類似于線上聊天,給對方發消息不經過對方同意,發送的消息對方可能未收到,也可能收到亂序的消息。
UDP | TCP | |
---|---|---|
是否連接 | 無連接 | 連接 |
是否可靠 | 不可靠傳輸,不使用流量控制和擁塞控制 | 可靠傳輸,使用流量控制和擁塞控制 |
占用資源 | 少 | 多 |
連接對象個數 | 支持一對一,一對多,多對一和多對多交互通信 | 只能是一對一通信 |
傳輸方式 | 面向報文 | 面向字節流 |
首部開銷 | 首部開銷小,僅8字節 | 首部最小20字節,最大60字節 |
適用場景 | 適用于實時應用(IP電話、視頻會議、直播等) | 適用于要求可靠傳輸的應用,例如文件傳輸 |