用udp協議通訊時怎樣得知目標機是否獲得了數據包?_和相親對象聊天,你屬于UDP還是CDP?...

有人說

和相親對象聊天就像ping服務器

每發一條消息

就像發出一條Ping命令

等待對方回復從而得到響應速度結果

但是難受的是

這個響應速度永遠無法做到秒級

少點幾分鐘

多則幾十分鐘

甚至幾十個小時才有響應

有時候真希望對方不要響應了

就能判斷此處Ping不通

從此斷了念想...

你是否也像這位旁友一樣苦惱?

也許是你的TCP方式

對這位女生不管用啦

換換UDP方式,也許有奇效~

今天七夕節

小編就來給你支幾招

順便測一下和相親對象聊天的你

屬于哪種類型

首先了解什么是TCP?

TCP的中文名是傳輸控制協議(Transmission Control Protocol),其目的是提供可靠的數據傳輸,并在相互進行通信的設備或服務之間保持一個虛擬連接。

b5183ddf9ddb05a142edef9b2e11caf7.png

當一臺計算機想要與另一臺計算機通訊時,兩臺計算機之間的通信需要暢通且可靠,這樣才能保證正確收發數據

例如,當你想查看網頁或查看電子郵件時,希望完整且按順序查看網頁,而不丟失任何內容。當你下載文件時,希望獲得的是完整的文件,而不僅僅是文件的一部分,因為如果數據丟失或亂序,都不是你希望得到的結果,于是就用到了TCP。

關于TCP,最著名的是它的三次“握手”,也就是 一個TCP連接必須要經過三次對話才能建立起來。

第一次握手

客戶端向服務端發送連接請求報文段。該報文段中包含自身的數據通訊初始序號。請求發送后,客戶端便進入SYN-SENT狀態。

第二次握手

服務端收到連接請求報文段后,如果同意連接,則會發送一個應答,該應答中也會包含自身的數據通訊初始序號,發送完成后便進入SYN-RECEIVED狀態。

第三次握手

當客戶端收到連接同意的應答后,還要向服務端發送一個確認報文。客戶端發完這個報文段后便進入ESTABLISHED狀態,服務端收到這個應答后也進入ESTABLISHED狀態,此時連接建立成功。

三次“對話”的目的是使數據包的發送和接收同步, 經過三次“對話”之后,客戶端才向服務端正式發送數據。

什么是UDP?

再來說UDP。UDP的中文名是用戶數據報協議(User Datagram Protocol),在網絡中它與TCP協議一樣用于處理數據包。

UDP最大的特點是它是一種無連接的協議,所以在傳遞數據時非常快,并且當報文發送之后,是無法得知其是否安全完整到達的。

ec8a7c1c5ea8f58e9490979069bc2109.png

你是TCP還是UDP?

科普部分結束,我們進入正題。

為了方便理解什么是TCP和UDP,接下來我們請好人A好人B分辨扮演TCP和UDP,然后請女神來扮演服務端。這樣你就明白兩種和相親對象的聊天方式,區別在哪里了。

首先是TCP:

好人A很喜歡他的女神,但是女神對他愛理不理,于是好人A想辦法打聽到了女神喜歡吃的零食,想通過美食來拉近兩者的關系,而且好人A辦事比較周到,在送給女神零食前,先禮貌地問女神:

b62fc5226dcafa96366d1601163f4037.png

這就是TCP,好人A得先跟女神“三次握手”,確定女神在家并且想要零食再送。可以說是一位禮貌又得體的暖男

再來看看UDP:

好人B也喜歡這位女神,雖然女神對他愛理不理,但好人B總是很有自信的樣子。有一天,好人B得知女神喜歡吃零食,但對于喜歡吃哪種零食,好人B并不關心,所以買了好多好多零食送給女神,準備直接送過去!

faeeef2030ee278a3c7fcc67fc21a934.png

這就是UDP,在得知女神的地址后,立即發送大量數據(零食),但是數據并不可靠(里面也有女神不喜歡吃的零食)。可以說是一位渾身散發著自信的土豪

聽完上面的比喻,你該明白TCP和UDP的區別的了吧。總結一下

由TCP的三次握手可以看出,TCP使用面向連接的協議。面向連接意味著通信設備應在傳輸數據之前建立連接,并在傳輸數據之后關閉連接。因此TCP是可靠的,因為它可以確保將數據傳送到目標路由器,從而適合要求可靠傳輸的應用,例如文件傳輸

但另一方面,TCP傳輸數據速度比UDP慢,并且連接對象個數只能是一對一通信,因此從效率上來說比UDP要差。

而UDP由于是一種無連接的協議,維護連接和終止連接沒有開銷,因此UDP不能保證將數據傳送到目標,從而損失了可靠性

但同時UDP不止支持一對一的傳輸方式,同樣支持一對多,多對多,多對一的方式,也就是說UDP提供了單播,多播,廣播的功能,因此UDP對于廣播和多播類型的網絡傳輸非常有效。

bd9db5c9ff1106677c0b329457c9d4c2.png

專情暖男的好人A花心土豪的好人B

你是哪種類型呢?

當然,如果對方遲遲沒有響應

也不一定要從自己身上找問題

也許只是對方服務器過載,Ping的人太多

你排隊列后面去了

開個玩笑~

七夕節的今天

祝有情人終成眷屬

還是單身的你,明天脫單!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533253.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533253.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533253.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

三星w系列vip服務器,高端人士候機專屬特權 三星W2017一張行走的VIP卡

原標題:高端人士候機專屬特權 三星W2017一張行走的VIP卡17年春運時間為1月13日至2月21日,如今春節假期已過,億萬人開始踏上了離鄉之路追尋夢想。每年春運都給交通帶來巨大壓力,今年為期40天的春運預計全國發送旅客或超29億人次。鐵…

阿酷快捷鍵怎么使用_必須收藏!Linux用戶必須知道的常用終端快捷鍵

點擊上方[全棧開發者社區]→右上角[...]→[設為星標?]簡介:以下是一些每個 Linux 用戶必須使用的鍵盤快捷鍵。使用命令行時,這些 Linux 快捷鍵將提升你的工作效率。你知道什么把專業用戶和普通用戶分開的嗎?掌握鍵盤快捷鍵。好的&#xff01…

checkbox ajax 不選中的值,php – 無法通過ajax傳遞checkbox的值

我有從數據庫收到的表://$id $_SESSION[staff_id];$teamResult getQuarter($leader_id);$count1 0;if (mysqli_num_rows($teamResult) > 0){?>1st Quarterwhile($row mysqli_fetch_array($teamResult)){$staff_id $row[staff_id];$username $row[usern…

3dmax天光渲染設置_【扮家家云渲染效果圖】3dmax測試全局照明效果|干貨教程...

首先打開場景文件,首先按快捷鍵8,打開環境和效果控制面板。下面有一個全局照明這樣一個選項卡,有染色、級別、環境光三個參數。默認情況下染色為白色,級別為1,環境光為黑色。此時我們可以單擊渲染,查看一下…

手寫table用ajax遍歷,原生js把數據循遍歷到前端table

用前端框架去給表格賦值簡直不要太容易和簡單。但是原生js就會復雜一些了。特別是按鈕事件的那個(“ )和 (’)特別讓人腦瓜子疼。最近做了一個功能,里面用的就是原生js實現。寫在js里面的代碼:(用的ajax請求將文件保存到服務器,返回的數據遍歷…

dbv mysql_MariaDB與MySQL對比 --- 對分布式事務的支持

本文最初于2016年底發表在我的個人微信公眾號里面,現略有修訂后發布在這里。本文的技術信息針對的是mysql-5.7.x和mariadb-10.1.9。MariaDB和MySQL兩者對分布式事務的支持有所不同,總的來說MySQL的支持更好,是完備的和可靠的(盡管后來也陸續發…

centos7下載安裝mysql步驟_Linux-centos7安裝mysql步驟

Centos7.3 yum安裝MySQL5.7.25擴展:在CentOS中默認安裝有MariaDB,這個是MySQL的分支,但為了需要,還是要在系統中安裝MySQL,而且安裝完成之后可以直接覆蓋掉MariaDB。1 下載并安裝MySQL官方的 Yum Repository[rootlocal…

mysql 常用命令的使用_MySQL基本命令

基操操作命令創建數據庫CREATE DATABASE 數據庫名;指定要操作的數據庫USE 數據庫名;創建數據表CREATE TABLE 數據表名;查看數據表SHOW CREATE TABLE 數據表名;使用DESCRIBE語句查看數據表DESCRIBE 數據表名;為數據表重…

織夢數據庫支持mysql5.7_最新織夢DEDECMS5.7數據庫說明文檔

最新織夢DEDECMS5.7數據庫說明文檔:dede_arctype 欄目管理表ID int(10) 欄目編號(自動編號)reID int(10) 父欄目編號topID int(10)sortrank smallint(6) 排序編號typename varchar(30) 欄目名稱typedir varchar(100) 欄目目錄isdefault smallint(6) 欄目列表選項(1鏈…

mysql ddl dql_MySQL的DDL和DML及其DQL數據庫操作

數據庫的基本概念1. 數據庫的英文單詞: DataBase 簡稱 : DB2. 什么數據庫?* 用于存儲和管理數據的倉庫。3. 數據庫的特點:1. 持久化存儲數據的。其實數據庫就是一個文件系統2. 方便存儲和管理數據3. 使用了統一的方式操作數據庫 -…

python模糊圖像清晰化_視頻模糊圖像處理

隨著科學技術的不斷發展和進步以及人們的安防意識不斷加強,人們對于安防技術的要求越來越高。電子監控在許多領域中都得到了廣泛的應用,如交通監控、軍事偵查、公共場所安全防范等。清晰的圖像能夠準確地鎖定犯罪證據和犯罪嫌疑人,能夠清晰地…

mysql分頁 disti_MySql查詢性能優化

慢查詢判定1.開啟慢查詢日志記錄執行時間超過long_query_time 秒的sql語句2.通過show processlist命令查看線程執行狀態3.通過explain解析sql了解執行狀態慢查詢優化是否向服務器請求列不必要的數據查詢不需要的記錄(limit),多表關聯返回全部列,總是取出…

java atlas mysql_使用Atlas實現MySQL讀寫分離+MySQL-(Master-Slave)配置

參考博文:MySQL-(Master-Slave)配置 本人按照博友北在北方的配置已成功 我使用的是 mysql5.6.27版本。配置中 又進一步對mysql5.6的日志進行了了解 :mysql日志詳細解析1.安裝注意:只能安裝在64位的Linux操作系統上,CentOS官方建…

mysql dts_云樹·DTS - 產品系列 - 分布式數據庫系統_MySQL數據庫性能優化-愛可生...

災備復制實現本地數據中心MySQL數據庫高效復制及異地數據中心MySQL數據庫容災轉移,從而確保在主數據中心故障或災難時,備用數據中心數據的最大完整性。該服務通過對MySQL二進制日志進行解析、過濾、合并、壓縮、并行回放等技術,準實時的在主備…

python利用matplotlib做餅圖_python利用matplotlib庫繪制餅圖的方法示例

介紹matplotlib 是python最著名的繪圖庫,它提供了一整套和matlab相似的命令API,十分適合交互式地進行制圖。而且也可以方便地將它作為繪圖控件,嵌入GUI應用程序中。它的文檔相當完備,并且 Gallery頁面 中有上百幅縮略圖&#xff0…

react同步請求_React中setState同步更新策略

setState 同步更新我們在上文中提及,為了提高性能React將setState設置為批次更新,即是異步操作函數,并不能以順序控制流的方式設置某些事件,我們也不能依賴于this.state來計算未來狀態。典型的譬如我們希望在從服務端抓取數據并且…

DVWA設置mysql_dvwa安裝、配置、使用教程(Linux)

一、搭建LAMP環境二、安裝DVWA2.1 下載dvwa2.2 解壓安裝將下載的應用解壓到apache默認的主目錄/var/www/html:unzip DVWA-master.zip -d /usr/www/html2.3 啟用功能dvwa上的漏洞,需要些刻意的配置才能被利用。訪問:http://172.0.0.1/dvwa如下…

eclipse mysql jndi_Java開發網 - tomcat5配置jndi的問題 (jdbc:comp is not bound in this Context)...

Posted by:returnerPosted on:2004-11-09 22:42tomcat5配置jndi的問題;斑竹高手們來看看啊,情況緊急!!!!!!!!10萬分感謝這個問題我是搜索出來的,我也遇到了同…

java正則效率_善用Pattern提高你的應用處理正則表達式的效率(Java)

舉個簡單了例子,在一個需要用于注冊登錄的b/s模式的應用中,在瀏覽器驗證用戶注冊表單的合法性是必須的,但你為了防止hacker,在服務器再驗證一次肯定也是必須的。題目:在服務器端驗證郵箱是否合法:通常你可能…

java jwindow 鍵盤_各位老哥求救,JWINDOW無法接收到鍵盤監聽

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓下面po代碼啊。這是我的類。class DragWindow extends JWindow{int positionX;int positionY;public DragWindow() {try {jbInit();}catch(Exception e) {e.printStackTrace();}}private void jbInit() throws Exception {this.add…