udp如何知道对方关闭_聊聊tcp和udp那些事
“說起tcp/ip協(xié)議中最復(fù)雜的一個(gè)協(xié)議,我覺得非tcp協(xié)議莫屬,tcp協(xié)議位于傳輸層,是傳輸層兩個(gè)協(xié)議其中之一,另一個(gè)就是udp協(xié)議”
傳輸層位于應(yīng)用層和網(wǎng)絡(luò)層之間,是應(yīng)用程序發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的必經(jīng)之地,如果你了解傳輸層的端口號(hào),想必對(duì)數(shù)據(jù)如何給到真正的應(yīng)用應(yīng)該會(huì)熟悉,我們這里不做過多表述
現(xiàn)在我們講講兩個(gè)應(yīng)用以何種方式傳送數(shù)據(jù),這就涉及到tcp和udp的不同
tcp就如同是一對(duì)情侶分隔兩個(gè)山頭,當(dāng)他們想把自己的東西送給對(duì)方時(shí),由于看不見對(duì)方,他們需要喊話來確認(rèn)對(duì)方是否準(zhǔn)備好:
男:喂,你在嗎?
女:我在,你在嗎?
男:我在
我們把上面的步驟稱之為tcp通信前的三次握手,這是建立連接的一個(gè)必要的過程
雙方確定了自己和對(duì)方都準(zhǔn)備好后,就可以把自己準(zhǔn)備的東西扔給對(duì)方了:
男:我給你扔一個(gè)蘋果
女:好的,我給你扔一個(gè)梨
男:收到了,我再給你扔第二個(gè)蘋果
......
他們就這樣開始了互相投遞食物的過程。這是tcp在三次握手以后通信的過程,發(fā)送的每份數(shù)據(jù)都會(huì)做標(biāo)記,對(duì)方收到后都要做確認(rèn)和回復(fù)。
如果在扔的過程中水果掉到了山谷中,怎么辦?
男:我給你扔一個(gè)蘋果女:......男:(這么長(zhǎng)時(shí)間沒回復(fù),是沒接到嗎?)我再重新給你扔一個(gè)蘋果女:好,我收到你扔的第一個(gè)蘋果了即使數(shù)據(jù)在傳送的途中丟失,只要有超時(shí)重傳機(jī)制,就可以實(shí)現(xiàn)數(shù)據(jù)的超時(shí)重傳如果某一方扔的速度太快,對(duì)方接不過來怎么辦呢?男:我給你扔一個(gè)蘋果女:好的,我給你扔一個(gè)梨男:收到了,我再給你扔三個(gè)蘋果女:慢點(diǎn),砸到我頭了,我一次只能接二個(gè)
男:好,收到,我給你扔二個(gè)
tcp在通信過程中會(huì)不斷地告知對(duì)方自己的最大接收能力,在tcp頭中用window size表示,對(duì)方根據(jù)window size來調(diào)整自己發(fā)送數(shù)據(jù)的大小
如果他們的東西都扔完了,需要告訴對(duì)方,不然對(duì)方不知道,還在傻傻地等待
男:我東西扔完了哈
女:了解,我再看看我還有東西要給你嗎?
女:我也沒有了,那我可以撤了
男:好的,收到,我也撤了
tcp在數(shù)據(jù)發(fā)送完成后,需要斷開連接,通過四次揮手完成,就像上面這樣
聰明的你可能會(huì)問,一方完成傳輸后,發(fā)起了主動(dòng)關(guān)閉的請(qǐng)求,但是對(duì)方數(shù)據(jù)沒發(fā)完怎么辦?
男:我東西扔完了哈女:了解,我再看看我還有東西要給你嗎?女:你再等等,我還有水果沒扔完,我扔一個(gè)給你女:我再扔一個(gè)給你......
女:好了,我沒有了,我撤了
男:收到,撤吧
當(dāng)主機(jī)A發(fā)送完數(shù)據(jù)后,主動(dòng)發(fā)起關(guān)閉連接請(qǐng)求,這時(shí)候主機(jī)B收到關(guān)閉連接的請(qǐng)求,先回復(fù)一個(gè)確認(rèn)信息給A,同時(shí)B這邊不再接收數(shù)據(jù),A收到確認(rèn)信息后,也不再具有發(fā)送數(shù)據(jù)的能力,這是一個(gè)半關(guān)閉的狀態(tài)。主機(jī)A雖然不具有發(fā)送的能力,但是有接收的能力,主機(jī)B雖然不具有接收的能力,但是有發(fā)送的能力,此時(shí)如果主機(jī)B還有數(shù)據(jù)未發(fā)送,仍然會(huì)繼續(xù)發(fā)送,直到發(fā)送完畢。發(fā)送完畢后主機(jī)B會(huì)被動(dòng)地發(fā)送一個(gè)斷開連接的請(qǐng)求給A,A收到后,回復(fù)一個(gè)確認(rèn)信息給B,這才是一個(gè)完整的關(guān)閉連接的過程就這樣,他們各自甜蜜地吃著對(duì)方送的東西,由于雙方有不斷喊話和確認(rèn)的過程,他們都沒有白白等待和遺漏對(duì)方的心意然而有一天,他們吵架了,不再理睬對(duì)方,但是又還關(guān)心著對(duì)方,所以他們還是會(huì)把自己的水果扔給對(duì)方男:我扔一個(gè)蘋果男:我再扔女:我扔兩個(gè)梨女:我再扔男:我再扔兩個(gè)......男:扔完了,回去了,也不知道她收沒收到女:還剩幾個(gè),都扔過去......女:扔完了,走了,哼,管你接沒接到,餓沒餓死這就是udp的傳輸過程,你只要有數(shù)據(jù),知道對(duì)方在哪,你就一個(gè)勁地扔,你并不會(huì)問對(duì)方在不在,也不關(guān)心我的東西有沒有掉,更不關(guān)心對(duì)方是不是會(huì)砸到頭。udp就像一個(gè)二傳手,負(fù)責(zé)把應(yīng)用層的數(shù)據(jù)傳遞給網(wǎng)絡(luò)層,至于其他,它并不關(guān)心,它只關(guān)心它自己,呸!如果覺得文章不錯(cuò),記得在下方 分享 收藏 點(diǎn)贊 在看 四連擊
總結(jié)
以上是生活随笔為你收集整理的udp如何知道对方关闭_聊聊tcp和udp那些事的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中frame中的元素怎么识别
- 下一篇: wav文件头修复_标记管理音频文件工具: