溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

Internet 套接字(TCP、UDP) 基礎(chǔ)概念

發(fā)布時(shí)間:2020-07-03 20:36:21 來(lái)源:網(wǎng)絡(luò) 閱讀:390 作者:堅(jiān)韌的石頭 欄目:編程語(yǔ)言

個(gè)人博客首頁(yè)(點(diǎn)擊查看詳情)-- https://blog.51cto.com/11495268
個(gè)人微信公眾號(hào)(點(diǎn)擊查看詳情)-- https://blog.51cto.com/11495268/2401194
????

1、簡(jiǎn)介

????這個(gè)世界上有很多種套接字(socket)-- 如 DARPA Internet 地址(Internet 套接字)、本地節(jié)點(diǎn)的路徑名(Unix套接字)、CCITT X.25地址(X.25 套接字)等;Internet 套接字 是最具代表性的,也是最經(jīng)典最常用的(我們?nèi)粘V?提及套接字,指的都是 Internet 套接字);網(wǎng)絡(luò)編程 肯定 離開(kāi) 套接字 這個(gè)概念,本文 描述 Internet 套接字(TCP、UDP) 基礎(chǔ)概念 相關(guān) 的基礎(chǔ)概念
????

2、Internet 套接字

????DARPA Internet 地址(Internet 套接字) 常用的套接字 主要有 流式套接字、數(shù)據(jù)報(bào)式套接字、原始套接字

  • 流式套接字(SOCK_STREAM) -- TCP
    • 提供面向連接的、可靠的傳輸服務(wù),數(shù)據(jù)無(wú)差錯(cuò),無(wú)重復(fù)的發(fā)送,且按發(fā)送順序接收
  • 數(shù)據(jù)報(bào)式套接字(SOCK_DGRAM) -- UDP
    • 提供無(wú)連接服務(wù),不提供無(wú)差錯(cuò)保證,數(shù)據(jù)可能丟失或者重復(fù),并且接收順序混亂
  • 原始套接字(SOCK_RAW)

????

3、流格式套接字(SOCK_STREAM)

3.1 概述

????流格式套接字(Stream Sockets)也叫 "面向連接的套接字",在代 碼中使用 SOCK_STREAM 表示;SOCK_STREAM 是一種可靠的、雙向的通信數(shù)據(jù)流,數(shù)據(jù)可以準(zhǔn)確無(wú)誤地到達(dá)另一臺(tái)計(jì)算機(jī),如果損壞或丟失,重新發(fā)送
????

3.2 特點(diǎn)

  • 數(shù)據(jù)在傳輸過(guò)程中不會(huì)消失
  • 數(shù)據(jù)是按照順序傳輸?shù)?/li>
  • 數(shù)據(jù)的發(fā)送和接收不是同步的(也稱(chēng) "不存在數(shù)據(jù)邊界")
    ????

3.3 協(xié)議

????SOCK_STREAM 使用了 TCP 協(xié)議(The Transmission Control Protocol,傳輸控制協(xié)議),TCP 協(xié)議會(huì)控制你的數(shù)據(jù)按照順序到達(dá)并且沒(méi)有錯(cuò)誤

  • TCP 用來(lái)確保數(shù)據(jù)的正確性
  • IP(Internet Protocol,網(wǎng)絡(luò)協(xié)議)用來(lái)控制數(shù)據(jù)如何從源頭到達(dá)目的地,也就是常說(shuō)的 "路由"
    ????

3.4 數(shù)據(jù)的發(fā)送/接收

????發(fā)送端有自己的節(jié)奏,接收端也有自己的節(jié)奏,它們是不一致的(不管數(shù)據(jù)分幾次傳送過(guò)來(lái),接收端只需要根據(jù)自己的要求讀取,不用非得在數(shù)據(jù)到達(dá)時(shí)立即讀取)
????

3.5 緩沖區(qū)

????流格式套接字的內(nèi)部有一個(gè)緩沖區(qū)(也就是字符數(shù)組),通過(guò) socket 傳輸?shù)臄?shù)據(jù)將保存到這個(gè)緩沖區(qū);接收端在收到數(shù)據(jù)后并不一定立即讀取,只要數(shù)據(jù)不超過(guò)緩沖區(qū)的容量,接收端有可能在緩沖區(qū)被填滿以后一次性地讀取,也可能分成好幾次讀取
????

3.6 應(yīng)用場(chǎng)景

????瀏覽器所使用的 http 協(xié)議就基于面向連接的套接字,因?yàn)楸仨氁_保數(shù)據(jù)準(zhǔn)確無(wú)誤,否則加載的 HTML 將無(wú)法解析
????

4、數(shù)據(jù)報(bào)式套接字(SOCK_DGRAM)

4.1 概述

????數(shù)據(jù)報(bào)格式套接字(Datagram Sockets)也叫 "無(wú)連接的套接字",在代碼中使用 SOCK_DGRAM 表示;計(jì)算機(jī)只管傳輸數(shù)據(jù),不作數(shù)據(jù)校驗(yàn),如果數(shù)據(jù)在傳輸中損壞,或者沒(méi)有到達(dá)另一臺(tái)計(jì)算機(jī),是沒(méi)有辦法補(bǔ)救的(也就是說(shuō),數(shù)據(jù)錯(cuò)了就錯(cuò)了,自身無(wú)法重傳)
????

4.2 特點(diǎn)

  • 強(qiáng)調(diào)快速傳輸而非傳輸順序
  • 傳輸?shù)臄?shù)據(jù)可能丟失也可能損毀
  • 限制每次傳輸?shù)臄?shù)據(jù)大小
  • 數(shù)據(jù)的發(fā)送和接收是同步的(也稱(chēng) "存在數(shù)據(jù)邊界")
    ????

4.3 數(shù)據(jù)的發(fā)送/接收

????"數(shù)據(jù)的發(fā)送和接收是同步的"(接收次數(shù)應(yīng)該和發(fā)送次數(shù)相同)
????

4.4 協(xié)議

  • 它不使用 TCP 協(xié)議,而是使用 UDP 協(xié)議(User Datagram Protocol,用戶(hù)數(shù)據(jù)報(bào)協(xié)議)
  • 數(shù)據(jù)報(bào)套接字也使用 IP 協(xié)議作路由
    ????

4.5 應(yīng)用場(chǎng)景

????QQ 視頻聊天和語(yǔ)音聊天就使用 SOCK_DGRAM 來(lái)傳輸數(shù)據(jù)

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI