吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Socket通信正確流程是怎樣?

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 作者:黃工的嵌入式技術 ? 2020-01-16 10:33 ? 次閱讀

我微信公開之后,加我的人也越來越多,也就會經常收到各種各樣的消息。

有些消息我看到之后立馬就回復了,有些消息我看到之后真的不想回復。比如:在嗎?

關于“在嗎?”這個問題,我在這里統(tǒng)一回復:以后微信找我有話直說,不要老是在嗎在嗎,不出意外的話,幾十年內我都是在的。

三次握手,通信還是失敗了:

上面這個通信,三次握手都失敗了,看著確實讓人著急。當然,本文說的重點是:Socket網絡通信

一、關于Socket

學習過網絡編程,或者網絡開發(fā)的朋友都應該聽說過socket。

socket又叫套接字,是一個抽象層,應用程序可以通過它發(fā)送或接收數(shù)據(jù),可對其進行像對文件一樣的打開、讀寫和關閉等操作。套接字允許應用程序將I/O插入到網絡中,并與網絡中的其他應用程序進行通信。網絡套接字是IP地址與端口的組合。

Socket是網絡通訊經常采用的一種方式,它不是一個具體的物件也不是像http類的通訊協(xié)議。你可以把它看成是一組基于TCP和UDP通信協(xié)議的接口,Socket其實就是一個門面模式,它把復雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議。

二、Socket基本概念

在了解Socket之前你需要對計算機通訊的分層有個大概的了解,網絡七層協(xié)議,OSI:Open System Interconnection,也叫開放式系統(tǒng)互聯(lián)參考模型。

這里不詳解OSI,放一張很好的圖分享給大家:

上面圖詳細講了基本整個計算機通信的分層架構,很多我也不了解沒我們只看我們關心的TCP/IP,其分層簡化圖示如下:

三、理解Socket

好,了解了基本分層機構后,我們現(xiàn)在來形象的理解一下Socket到底是什么。這里有一個很形象的實例可以幫助我們很好的理解Socket,以物流為例。

我們要傳送的數(shù)據(jù)就是物流中的貨物,ip就是發(fā)貨人和收貨人的聯(lián)系方式,那么Socket是什么?大家想想這送貨這這一流程還缺少啥?對呀,物流公司啊,對吧!物流公司就是那個Socket,他負責幫你處理送貨的瑣碎事情,比如你的貨物該怎么打包、該怎么防止易碎物品破碎、該用什么方式運輸、等等,如果是境外貨物還牽涉到報關等等一系列復雜瑣碎的事情,這些物流公司(Socket)幫你處理好了。示意圖如下:

四、理解TCP與UDP的區(qū)別以及三次握手和四次揮手

然后我們來說一下TCP和UDP的區(qū)別。前面講到Socket就相當于是物流公司,那么TCP協(xié)議就相當于是:假設你是寄貨方,你要寄給你朋友一份禮物,你首先得去物流公司去寄,這樣你在物流公司就相當于建立了一個事物(Socket實例)。然后物流公司有兩種服務方式讓你選擇(TCP和UDP)。

先說TCP,TCP這個協(xié)議它比較保守,物流公司說我必須確保你朋友會接收這份禮物,不然它不送。于是物流公司就回去聯(lián)系你朋友。然后聯(lián)系內容大致如下:

物流:你好,我這里有個你朋友寄的禮物要給你,你收嗎? 你朋友:OK,收,什么時候發(fā),多久到? 物流:現(xiàn)在就發(fā),大概要12小時到。

然后物流才開始發(fā)貨,并且會給你們一個物流單號,這個單號就是關于這份貨物你和你朋友的發(fā)貨收貨憑證。這就是所謂的三次握手。示意圖:

物流發(fā)送完后還會聯(lián)系你朋友,大致對話內容:

物流:你好,貨物已發(fā)送,請注意查收 你朋友:好的。 貨物送到,你朋友:OK,貨物收到,你們可以結案 物流:好的,我結案了。

這就是所謂的四次揮手(拜拜);

(注釋:三次握手四次揮手這都是Socket在你建立的時候根據(jù)你選擇的協(xié)議確定好的)

這樣是不是很麻煩,估計也就順豐有這服務了,其他大部分公司還是沒有這么貼心的服務的,他們可能就是UDP協(xié)議方式了。

UDP比較簡單,當你用物流(Socket)寄貨物的時候物流公司并不會管你朋友是否能聯(lián)系上,是否愿意接收,它只負責將你的貨物發(fā)出去就完事。這中間是不需要通知你朋友的,你和你朋友也不需要有連接,這就是所謂的無連接。

五、兩種協(xié)議區(qū)別

UDP 常用于一次性傳輸比較少量數(shù)據(jù)的網絡應用中,UDP 也常用于多媒體應用(如 IP 電話、實時視頻會議、流媒體等),顯然,可靠數(shù)據(jù)傳輸對于這些應用來說并不是最重要的,但 TCP 的擁塞控制會導致數(shù)據(jù)出現(xiàn)較大的延遲,這是它們不能容忍的,我們最熟悉的視頻通話大部分就是用的UDP協(xié)議。

TCP面向連接,即發(fā)送數(shù)據(jù)之前需要建立連接,并且TCP是擁有擁塞機制的,當前部分數(shù)據(jù)還沒有被接收完,后部分的數(shù)據(jù)會被阻塞知道前部分數(shù)據(jù)傳遞OK后才會繼續(xù)傳遞后半部分,所以通過TCP連接傳送的數(shù)據(jù),無差錯,不丟失,不重復,且按序到達;在數(shù)據(jù)完整性、安全性要求較高的場景需要使用TCP協(xié)議,比如你傳送重要辦公文件、圖片等,這些東西丟包都是會影響數(shù)據(jù)品質的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6070

    瀏覽量

    136423
  • Socket
    +關注

    關注

    0

    文章

    212

    瀏覽量

    34885
  • 物流
    +關注

    關注

    1

    文章

    265

    瀏覽量

    18147
收藏 人收藏

    評論

    相關推薦

    socket 和 UDP 協(xié)議的對比

    在現(xiàn)代互聯(lián)網技術中,數(shù)據(jù)傳輸是核心功能之一。為了實現(xiàn)這一功能,我們依賴于各種通信協(xié)議和接口。Socket 和 UDP 是兩種廣泛使用的網絡通信技術,它們在實現(xiàn)網絡通信方面各有特點和用途
    的頭像 發(fā)表于 11-12 14:28 ?398次閱讀

    socket 與 RESTful API 的使用

    在現(xiàn)代網絡應用中,數(shù)據(jù)傳輸和通信是核心功能之一。為了實現(xiàn)這一功能,開發(fā)者通常會使用兩種主流的技術:Socket和RESTful API。 1. Socket的概念和特點 1.1 Socket
    的頭像 發(fā)表于 11-12 14:22 ?371次閱讀

    socket 加密通信的實現(xiàn)方式

    在網絡通信中,數(shù)據(jù)的安全性至關重要。Socket 編程作為網絡通信的基礎,實現(xiàn)加密通信是保護數(shù)據(jù)不被竊取或篡改的重要手段。 1. SSL/TLS 加密 SSL(Secure
    的頭像 發(fā)表于 11-12 14:18 ?581次閱讀

    socket 與 HTTP 協(xié)議的關系

    在計算機網絡中,Socket和HTTP協(xié)議是兩個非常重要的概念,它們在數(shù)據(jù)傳輸和網絡通信中扮演著關鍵的角色。 1. Socket的概念 Socket是一種
    的頭像 發(fā)表于 11-12 14:12 ?321次閱讀

    socket 發(fā)送和接收數(shù)據(jù)方法

    1. Socket 基本概念 在網絡編程中,socket 是一個通信端點。它允許程序發(fā)送和接收數(shù)據(jù)。根據(jù)通信協(xié)議的不同,socket 可以分
    的頭像 發(fā)表于 11-12 14:07 ?678次閱讀

    socket 網絡通信協(xié)議解析

    通信機制,它允許兩個程序(通常位于不同的計算機上)進行雙向通信。在網絡編程中,Socket被用來實現(xiàn)客戶端和服務器之間的數(shù)據(jù)交換。一個Socket由一個IP地址和一個端口號唯一標識,這
    的頭像 發(fā)表于 11-12 14:04 ?896次閱讀

    socket 編程基礎入門

    Socket 編程基礎入門 在計算機網絡中,Socket 是一個抽象層,它將網絡通信的細節(jié)隱藏起來,為開發(fā)者提供了一個簡單的接口來發(fā)送和接收數(shù)據(jù)。Socket 編程是網絡編程的基礎,它
    的頭像 發(fā)表于 11-12 14:03 ?424次閱讀

    C語言中的socket編程基礎

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網絡編程的基礎。通過使用
    的頭像 發(fā)表于 11-01 16:51 ?467次閱讀

    如何在Python中使用socket

    1. 基本概念 在開始使用socket之前,我們需要了解一些基本的網絡通信概念: IP地址 :用于標識網絡上的設備。 端口 :用于標識設備上的特定服務。 協(xié)議 :用于規(guī)定數(shù)據(jù)傳輸?shù)囊?guī)則,如TCP
    的頭像 發(fā)表于 11-01 16:10 ?283次閱讀

    什么是socket編程 socket與tcp/ip協(xié)議的關系

    什么是Socket編程 Socket編程是一種網絡編程技術,它允許程序之間進行通信。在計算機科學中,socket是一個抽象的概念,它代表了兩個應用程序之間的一個
    的頭像 發(fā)表于 11-01 16:01 ?476次閱讀

    NB_IOT類產品Socket通信功能研發(fā)測試方案

    一、物聯(lián)網行業(yè)中存在的問題 在產品的研發(fā)階段,針對 NB 產品的 Socket 通信展開了全方位且細致入微的測試工作。測試期間,嚴格遵循預先制定的詳盡測試計劃和嚴謹流程,對通信的穩(wěn)定性
    的頭像 發(fā)表于 09-23 16:16 ?400次閱讀
    NB_IOT類產品<b class='flag-5'>Socket</b><b class='flag-5'>通信</b>功能研發(fā)測試方案

    socket和http區(qū)別是什么

    Socket和HTTP是兩種不同的網絡通信協(xié)議,它們在網絡編程中扮演著重要的角色。 定義 Socket(套接字)是一種通信端點,它提供了一個抽象層,使得進程能夠通過網絡進行
    的頭像 發(fā)表于 08-16 11:04 ?1016次閱讀

    socket的基本概念和原理

    Socket是一種通信協(xié)議,用于在網絡中實現(xiàn)進程間的通信。它是一種抽象的編程接口,允許應用程序通過網絡發(fā)送和接收數(shù)據(jù)。 1. 什么是Socket
    的頭像 發(fā)表于 08-16 10:51 ?1410次閱讀

    如何理解socket編程接口

    Socket編程接口是一種網絡編程的基本概念,它提供了一種在不同計算機之間進行通信的方法。 Socket編程接口的基本概念 1.1 Socket的定義
    的頭像 發(fā)表于 08-16 10:48 ?511次閱讀

    RTOS SDK中的socket怎么正確使用?

    sockaddr_in(我已包含頭文件sockets.h)。在sockets.h中發(fā)現(xiàn)要定義宏 LWIP_SOCKET 為真,才能讓該結構體定義生效,但在lwipopts.h中定義該宏以后還是不行,同時發(fā)現(xiàn)似乎SDK中l(wèi)wip頭文件包含路徑有些問題。 請問rtos sdk中的
    發(fā)表于 07-22 07:05
    百家乐棋牌作弊器| 石渠县| 百家乐官网那里可以玩| 大发888真人体育| 诺贝尔百家乐官网的玩法技巧和规则 | 澳门百家乐官网小| 六合彩号码| 百家乐3带厂家地址| 邹平县| 百家乐庄闲点| 百家乐官网美国玩法| 太阳城管理| 皇室百家乐官网的玩法技巧和规则| 德州扑克与梭哈| 网上百家乐投注法| 百家乐官网资金注码| 梦幻城百家乐的玩法技巧和规则| HG百家乐官网大转轮| 百家乐官网娱乐平台真人娱乐平台| 爱玩棋牌官方下载| 百家乐筹码方形筹码| 宝马百家乐官网的玩法技巧和规则| 佳豪娱乐| 现金网信誉排行| 现金网注册送彩金| 百家乐冲动| 海王星百家乐官网技巧| 百家乐官网策略| 真人百家乐的玩法技巧和规则 | 百家乐赢钱战略| 百家乐官网投注之对冲投注| 在线博弈游戏| 二八杠游戏下载| 百家乐赌博是否违法| 台中市| 大发888棋牌乐城下载| 百家乐买对子技巧| 罗马百家乐娱乐城| 功夫百家乐官网的玩法技巧和规则 | 职业百家乐官网的玩法技巧和规则 | 江山百家乐官网的玩法技巧和规则|