tcp擁塞控制常用算法 UDP和TCP的socket一般分別用在什么地方?
UDP和TCP的socket一般分別用在什么地方?套接字是一種常見(jiàn)的網(wǎng)絡(luò)通信。它不是一個(gè)具體的對(duì)象,也不是像http那樣的通信協(xié)議。你可以把它想象成一組基于TCP和UDP通信協(xié)議的接口。Socket實(shí)
UDP和TCP的socket一般分別用在什么地方?
套接字是一種常見(jiàn)的網(wǎng)絡(luò)通信。它不是一個(gè)具體的對(duì)象,也不是像http那樣的通信協(xié)議。你可以把它想象成一組基于TCP和UDP通信協(xié)議的接口。Socket實(shí)際上是一種門面模式,將復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面。對(duì)于用戶來(lái)說(shuō),一組簡(jiǎn)單的接口就足夠了,這樣Socket就可以組織數(shù)據(jù)來(lái)滿足指定的協(xié)議。
Socket的基本概念在了解Socket之前,需要對(duì)計(jì)算機(jī)通信的分層有一個(gè)大概的了解。我贏了。;不要在這里談?wù)撍?。我?lái)和大家分享一張好圖:
上圖詳細(xì)描述了基本的整體計(jì)算機(jī)通信的分層結(jié)構(gòu),我不知道。;我對(duì)它了解不多。我們只看我們關(guān)心的TCP/IP,它的分層簡(jiǎn)化圖如下:
很好的理解Socket,在理解了基本的層次機(jī)制之后,讓 現(xiàn)在我們明白什么是插座了。我這里有一個(gè)很生動(dòng)的例子可以幫助我們很好的理解Socket,這是我在學(xué)習(xí)Socket編程的時(shí)候認(rèn)識(shí)到的,那就是logistics。
我們要傳輸?shù)臄?shù)據(jù)是物流中的貨物,ip是發(fā)貨人和收貨人的。那么什么是Socket呢?想一想這個(gè)交付過(guò)程中缺少了什么?對(duì),物流公司,對(duì)吧?物流公司就是插座,負(fù)責(zé)幫你做送貨的瑣事,比如你的貨物怎么包裝,易碎品怎么防止摔壞,怎么運(yùn)輸?shù)鹊?。如果海外貨物涉及?bào)關(guān)等一系列復(fù)雜瑣碎的事情,這些物流公司(插座)幫你處理。示意圖如下:
了解TCP和UDP的區(qū)別,三次握手和四波,然后讓 讓我們來(lái)談?wù)凾CP和UDP的區(qū)別。前面說(shuō)過(guò),Socket相當(dāng)于一個(gè)物流公司,那么TCP協(xié)議就相當(dāng)于:假設(shè)你是發(fā)貨人,你要給你的朋友發(fā)一個(gè)禮物,你要先去物流公司發(fā),這樣你就可以在物流公司建立一個(gè)東西(Socket實(shí)例)。那么物流公司有兩種服務(wù)模式供你選擇(TCP和UDP)。
讓 讓我們先來(lái)談?wù)凾CP。TCP是一種保守的協(xié)議。物流公司說(shuō),我必須確保你的朋友會(huì)收到這個(gè)禮物,否則它贏了。;別寄了。于是物流公司回去聯(lián)系你朋友。那么聯(lián)系內(nèi)容大致如下:
物流:你好,我有你朋友給你的禮物。你接受嗎?
你朋友:好,好。什么時(shí)候發(fā),要多久?
物流:現(xiàn)在寄,大概12個(gè)小時(shí)到。
然后物流就開(kāi)始發(fā)貨了,會(huì)給你一個(gè)物流單號(hào),這個(gè)物流單號(hào)是給你和你朋友的這個(gè)貨物的發(fā)貨和收貨憑證。這就是所謂的三次握手。示意圖:
物流發(fā)出后,你會(huì)聯(lián)系你的朋友。大致對(duì)話如下:
物流:您好,貨物已經(jīng)送到了。發(fā)送,請(qǐng)注意查收
你的朋友:好的。
貨送到了,你朋友:好的,收到貨就可以結(jié)案了。
物流:好的,我結(jié)案了。
這就是所謂的四浪(拜拜);
(注:三次握手揮四次,根據(jù)您建立Socket時(shí)選擇的協(xié)議確定)。
這樣很麻煩嗎?估計(jì)順豐有這個(gè)服務(wù),但是其他大部分公司還是沒(méi)有 我沒(méi)有這么貼心的服務(wù)。它們可能是UDP協(xié)議。
UDP相對(duì)簡(jiǎn)單。當(dāng)你用插座發(fā)送貨物時(shí),物流公司不。;我不在乎你的朋友是否能和你聯(lián)系。它只負(fù)責(zé)送你的貨,完成它。沒(méi)有必要通知你的朋友,你和你的朋友不要。;不需要連接。這叫沒(méi)有聯(lián)系。
兩種協(xié)議的區(qū)別和應(yīng)用UDP常用于一次傳輸相對(duì)少量數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用,UDP也常用于多媒體應(yīng)用(如IP、實(shí)時(shí)視頻會(huì)議、流媒體等。).顯然,可靠的數(shù)據(jù)傳輸對(duì)于這些應(yīng)用來(lái)說(shuō)并不是最重要的,但是TCP的擁塞控制會(huì)導(dǎo)致數(shù)據(jù)出現(xiàn)較大的延遲,這是他們所不能容忍的。我們最熟悉的視頻通話,大部分都在使用UDP協(xié)議。
TCP是面向連接的,即在發(fā)送數(shù)據(jù)之前需要建立一個(gè)連接,TCP有擁塞機(jī)制。當(dāng)前部分?jǐn)?shù)據(jù)還沒(méi)有收到,后面部分?jǐn)?shù)據(jù)會(huì)被阻塞,直到第一部分?jǐn)?shù)據(jù)傳送OK,所以通過(guò)TCP連接傳輸?shù)臄?shù)據(jù)是無(wú)錯(cuò)、不丟失、不重復(fù)、按順序到達(dá)的;TCP協(xié)議需要用在對(duì)數(shù)據(jù)完整性和安全性要求較高的場(chǎng)景,比如發(fā)送重要的辦公文檔和圖片,會(huì)影響數(shù)據(jù)質(zhì)量。
tcp/ip協(xié)議簇中傳輸層采用的是?
tcp/ip協(xié)議族中傳輸層使用的主要協(xié)議是面向連接的傳輸控制協(xié)議tcp和無(wú)連接用戶數(shù)據(jù)報(bào)協(xié)議UDP。
UDP的主要特點(diǎn):
(1)UDP是無(wú)連接的,發(fā)送數(shù)據(jù)前不需要建立連接。
(2)UDP使用最大努力來(lái)傳送,并且不保證可靠的傳送。
(3)UDP是面向消息的。UDP會(huì)在應(yīng)用層傳遞的消息中添加一個(gè)報(bào)頭,然后直接傳遞給網(wǎng)絡(luò)層。
(4)UDP沒(méi)有擁塞控制,所以網(wǎng)絡(luò)擁塞不會(huì)降低源主機(jī)的發(fā)送速率,這一點(diǎn)對(duì)于一些實(shí)時(shí)應(yīng)用非常重要。
(5)UDP支持一對(duì)一、一對(duì)多、多對(duì)一、多對(duì)多的交互通信。
(6)6)UDP的報(bào)頭開(kāi)銷很小,只有8個(gè)字節(jié)。