wordpress 自定義主頁(yè)沈陽(yáng)專業(yè)seo
TCP是面向連接的、可靠的、基于字節(jié)流的傳輸層協(xié)議。
面向連接:一定是一對(duì)一連接,不能像 UDP 協(xié)議可以一個(gè)主機(jī)同時(shí)向多個(gè)主機(jī)發(fā)送消息
可靠的:無(wú)論的網(wǎng)絡(luò)鏈路中出現(xiàn)了怎樣的鏈路變化,TCP 都可以保證一個(gè)報(bào)文一定能夠到達(dá)接收端;
基于字節(jié)流的:TCP 協(xié)議在傳輸數(shù)據(jù)時(shí),并不關(guān)心數(shù)據(jù)的邊界。它將數(shù)據(jù)視為一連串的字節(jié),而不是消息或數(shù)據(jù)包。這意味著 TCP 不會(huì)保留消息邊界,它只是負(fù)責(zé)將字節(jié)流從發(fā)送端傳輸?shù)浇邮斩?。不?huì)保留發(fā)送數(shù)據(jù)時(shí)的任何消息邊界。發(fā)送方發(fā)送的數(shù)據(jù)可能被 TCP 分割成多個(gè)段,也可能將多個(gè)消息合并成一個(gè)段發(fā)送。接收方需要根據(jù)應(yīng)用層協(xié)議來(lái)識(shí)別和重組消息。
TCP格式:
源端口號(hào)和目的端口號(hào):與源ip地址和目的ip地址構(gòu)成四元組
序列號(hào):TCP協(xié)議中用于確保數(shù)據(jù)傳輸有序性的一種機(jī)制。在建立連接時(shí),由計(jì)算機(jī)生成一個(gè)隨機(jī)數(shù)作為初始序列號(hào),并通過SYN包發(fā)送給接收端主機(jī)。每發(fā)送一次數(shù)據(jù),序列號(hào)就會(huì)累加這次發(fā)送的數(shù)據(jù)字節(jié)數(shù)的大小。
確認(rèn)應(yīng)答號(hào):TCP協(xié)議中用于確保數(shù)據(jù)傳輸可靠性的一種機(jī)制,主要作用是解決丟包問題。它指的是接收端期望下一次收到的數(shù)據(jù)的序列號(hào)。當(dāng)發(fā)送端收到接收端發(fā)來(lái)的確認(rèn)應(yīng)答后,可以認(rèn)為所有在這個(gè)序號(hào)以前的數(shù)據(jù)都已經(jīng)被接收端正常接收。
ACK:除了最初建立連接的SYN包以外,都要設(shè)置成1,
RST:當(dāng)RST位設(shè)置為1時(shí),表示TCP連接中出現(xiàn)異常,需要強(qiáng)制斷開連接。
SYN:該位為 1
時(shí),表示希望建立連接,并在其「序列號(hào)」的字段進(jìn)行序列號(hào)初始值的設(shè)定。
FIN: 當(dāng)FIN位設(shè)置為1時(shí),表示發(fā)送端已經(jīng)完成數(shù)據(jù)發(fā)送,希望斷開當(dāng)前的TCP連接。通信雙方在結(jié)束數(shù)據(jù)傳輸后,可以通過交換FIN位為1的TCP段來(lái)關(guān)閉連接。FIN位用于優(yōu)雅地結(jié)束一個(gè)TCP會(huì)話。
首部長(zhǎng)度:因?yàn)檫x項(xiàng)是可變長(zhǎng),所以要記錄首部長(zhǎng)度。udp首部長(zhǎng)度固定8個(gè)字節(jié),無(wú)需記錄。
為什么要有tcp?
IP層是「不可靠」的,它不保證網(wǎng)絡(luò)包的交付、不保證網(wǎng)絡(luò)包的按序交付、也不保證網(wǎng)絡(luò)包中的數(shù)據(jù)的完整性。TCP保證網(wǎng)絡(luò)數(shù)據(jù)包可靠性。
因?yàn)?TCP 是一個(gè)工作在傳輸層的可靠數(shù)據(jù)傳輸?shù)姆?wù),它能確保接收端接收的網(wǎng)絡(luò)包是無(wú)損壞、無(wú)間隔、非冗余和按序的。
連接:用于保證可靠性和流量控制維護(hù)的某些狀態(tài)信息,這些信息的組合,包括Socket、序列號(hào)和窗口大小稱為連接。
一個(gè) IP 的服務(wù)端監(jiān)聽了一個(gè)端口,它的 TCP 的最大連接數(shù)是多少?
對(duì)于服務(wù)端來(lái)說(shuō),目的 IP 地址是固定的(即服務(wù)端的 IP 地址),目的端口號(hào)也是固定的(即服務(wù)端監(jiān)聽的端口)。因此,變量是源 IP 地址和源端口號(hào)。
對(duì)于 IPv4,一個(gè) IP 地址由 32 位組成,因此可能的 IP 地址總數(shù)是 2^32。
一個(gè)端口號(hào)由 16 位組成,因此可能的端口號(hào)總數(shù)是 2^16
最大 TCP 連接數(shù) = 2^32×2^16=2^48
文件描述符限制:
每個(gè)TCP連接在Linux系統(tǒng)中都被視為一個(gè)文件,因此受到文件描述符的限制。存在三種級(jí)別的限制:
系統(tǒng)級(jí):整個(gè)系統(tǒng)可打開的最大文件描述符數(shù)量,可以通過查看 /proc/sys/fs/file-max
來(lái)獲取。
用戶級(jí):特定用戶可打開的最大文件描述符數(shù)量,可以通過查看 /etc/security/limits.conf
來(lái)獲取。
進(jìn)程級(jí):單個(gè)進(jìn)程可打開的最大文件描述符數(shù)量,可以通過查看 /proc/sys/fs/nr_open
來(lái)獲取
內(nèi)存限制:
操作系統(tǒng)的內(nèi)存是有限的,如果內(nèi)存資源耗盡,可能會(huì)導(dǎo)致 "Out of Memory"(OOM)錯(cuò)誤。每個(gè)TCP連接都需要占用一定的內(nèi)存資源。
簡(jiǎn)潔的UDP:
UDP(用戶數(shù)據(jù)報(bào)協(xié)議,User Datagram Protocol)是一種無(wú)連接的、簡(jiǎn)單的傳輸層協(xié)議。頭部只有8個(gè)字節(jié)。
TCP和UDP的區(qū)別:
-
連接:
- TCP面向連接,需要在數(shù)據(jù)傳輸前建立連接。
- UDP無(wú)連接,可以直接發(fā)送數(shù)據(jù)。
-
服務(wù)對(duì)象:
- TCP提供一對(duì)一的通信服務(wù)。
- UDP支持多種通信模式,包括一對(duì)一、一對(duì)多、多對(duì)多。
-
可靠性:
- TCP提供可靠交付,確保數(shù)據(jù)無(wú)差錯(cuò)、不丟失、不重復(fù)、按序到達(dá)。
- UDP盡力交付,但不保證數(shù)據(jù)的可靠傳輸。
-
擁塞控制和流量控制:
- TCP具有擁塞控制和流量控制機(jī)制。
- UDP沒有這些機(jī)制,即使網(wǎng)絡(luò)擁堵也保持發(fā)送速率。
-
首部開銷:
- TCP首部較長(zhǎng),通常至少20字節(jié),可能更長(zhǎng)如果包含選項(xiàng)。
- UDP首部固定8字節(jié),開銷較小。
-
傳輸方式:
- TCP是流式傳輸,無(wú)邊界,保證數(shù)據(jù)順序和可靠性。
- UDP基于數(shù)據(jù)報(bào)文傳輸,有邊界,可能會(huì)丟包和亂序。
-
分片:
- TCP在數(shù)據(jù)大于MSS時(shí)在傳輸層進(jìn)行分片,接收端在傳輸層組裝。
- UDP在數(shù)據(jù)大于MTU時(shí)在IP層進(jìn)行分片,接收端在IP層組裝后傳給傳輸層。
TCP和UDP的應(yīng)用場(chǎng)景:
數(shù)據(jù)長(zhǎng)度大小:
TCP數(shù)據(jù)長(zhǎng)度=IP總長(zhǎng)度-IP首部長(zhǎng)度-TCP首部長(zhǎng)度
TCP和UDP可以共用端口號(hào)嗎?
?????????? 在數(shù)據(jù)鏈路層中,通過 MAC地址來(lái)尋找局域網(wǎng)中的主機(jī)。在網(wǎng)際層中,通過IP 地址來(lái)尋找網(wǎng)絡(luò)中互連的主機(jī)或路由器。在傳輸層中,需要通過端口進(jìn)行尋址,來(lái)識(shí)別同一計(jì)算機(jī)中同時(shí)通信的不同應(yīng)用程序。
所以,傳輸層的「端口號(hào)」的作用,是為了區(qū)分同一個(gè)主機(jī)上不同應(yīng)用程序的數(shù)據(jù)包。
傳輸層有兩個(gè)傳輸協(xié)議分別是 TCP 和 UDP,在內(nèi)核中是兩個(gè)完全獨(dú)立的軟件模塊。
當(dāng)主機(jī)收到數(shù)據(jù)包后,可以在 IP 包頭的「協(xié)議號(hào)」字段知道該數(shù)據(jù)包是 TCP/UDP,所以可以根據(jù)這個(gè)信息確定送給哪個(gè)模塊(TCP/UDP)處理,送給 TCP/UDP 模塊的報(bào)文根據(jù)「端口號(hào)」確定送給哪個(gè)應(yīng)用程序處理。
-
TCP:
適用于需要可靠數(shù)據(jù)傳輸?shù)膽?yīng)用,如:遠(yuǎn)程登錄(SSH/Telnet),郵件傳輸(SMTP),文件傳輸(FTP),Web瀏覽(HTTP) -
UDP:
適用于對(duì)實(shí)時(shí)性要求高的應(yīng)用,如:某些類型的網(wǎng)絡(luò)監(jiān)控工具,DNS查詢,在線游戲,實(shí)時(shí)視頻和音頻傳輸(流媒體)