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