linux網路傳輸協議之TCP IP

2021-08-19 09:37:37 字數 1631 閱讀 9923

(1)為了滿足兩個不同主機(包括能聯網的linux裝置、pc機等)程序間通訊,這個時候就需要用網路(有線或無線)

(1)低階應用層:直接基於作業系統原始socket介面程式設計,難度最大,所有的流程自己編寫,但是能滿足自己所有的需要,比如自己想做一些不一樣的功能

(2)高階應用層:基於網路通訊應用框架庫,比如jrtp庫,ortp庫,我們移植過來後,使用別人的庫裡面的函式去處理,它也是基於socket編寫的,但是被封裝的更簡單化,功能更硬性化

(3)更高階應用層:比如http、控制項,比如安卓裡面想上網,新增乙個網路控制項,就能上網,傻瓜式的,封裝更全,所有更硬性

前言:就像spi一樣是一種別人寫好了的協議,我們只需要去呼叫運用它,不需要自己從頭寫,對於應用程式設計者,學會呼叫基於tcp協議寫的庫函式提供的api使用功能即可,不需要管每一層的流程,庫裡面的api封裝好了一整套過程,但是還是那句話你可以自己從頭寫,按照自己的方式。

(2)tcp協議面向連線,通訊前必須先3次握手建立連線關係後才能開始通訊

(3)tcp協議提供可靠傳輸,不怕丟包、亂序等。

(4)udp也是一種傳輸協議,是基於非連線的

(1)tcp在傳輸有效資訊前要求通訊雙方必須先握手,建立連線才能通訊

(2)tcp的接收方收到資料報後會ack給傳送方,若傳送方未收到ack會丟包重傳

(3)tcp的有效資料內容會附帶校驗,以防止內容在傳遞過程中損壞

(4)tcp會根據網路頻寬來自動調節適配速率(滑動窗**術)

(5)傳送方會給各分割報文編號,接收方會校驗編號,一旦順序錯誤即會重傳。

(1)具有公網ip位址的伺服器(或者使用動態ip位址對映技術)

(2)伺服器端使用socket、bind(繫結)、listen(監聽)api函式,使自己處於監聽狀態

(3)客戶端socket後,直接主動connect去發起連線。

(4)伺服器收到並同意客戶端接入後會建立tcp連線,然後雙方開始收發資料,收發時是雙向的,而且雙方均可發起

(5)雙方均可發起關閉連線

(2)tcp協議中包含了專門的傳遞保證機制,當資料接收方收到傳送方傳來的資訊時,會自動向傳送方發出確認訊息;傳送方只有在接收到該確認訊息之後才繼續傳送其它資訊,否則將一直等待直到收到確認資訊為止。所以tcp必udp多了建立連線的時間。相對udp而言,tcp具有更高的安全性和可靠性。tcp協議傳輸的大小不限制,一旦連線被建立,雙方可以按照一定的格式傳輸大量的資料,而udp是乙個不可靠的協議,大小有限制,每次不能超過64k。

(3)相對於tcp協議,udp協議的另外乙個不同之處在於如何接收突法性的多個資料報。不同於tcp,udp並不能確保資料的傳送和接收順序。

表1 三種協議的效能對比

協議名稱

複雜性連線建 立時間

可靠性是否確保資料報傳送和接受順序

實時性適用範圍

是否支援組播

rtp/rtcp低少

低否是實時音視 頻**傳輸

支援tcp高多

高是否資料和控制信令傳輸

不支援udp低少

低否否支援

傳輸層協議之TCP協議

tcp將每個位元組的資料都進行了編號,即為序列號 每乙個ack都帶有對應的確認序列號,意思是告訴傳送者,我已經收到了哪些資料,下一步你該從 開始傳送 主機a傳送資料給b之後,可能因為網路擁堵等原因,資料無法到達主機b 如果主機a在乙個特定時間間隔內沒有收到b發來的確認應答,就會進行重發 但是,主機a...

網路原理 TCP協議(傳輸控制協議)

寫在前面 這篇文章講解的很詳細,但是建議從末尾的tcp的功能總結來看,先對tcp有乙個大致了解,在詳細的構建tcp的整體 定義 對資料傳輸進行控制的可靠協議,同時既要保證可靠性,又要具有高效性。特點 保證可靠性 校驗和 同時對資料體也進行校驗 序列號 按序到達 確認應答 每次傳送的訊息需要進行應答 ...

傳輸層之TCP協議

傳輸層 屬於較上面的一層。它的上面是應用層,下面是網路層!在端到端的傳輸中,必須通過傳輸層。傳輸層的作用域是 端裝置。傳輸層主要功能是 1 把從應用層的資料報進行復用,然後傳送到網路層 2 把從網路層接受到的資料報進行分用 不同的埠 然後傳遞給應用層。與網路層的區別 網路層是把主機的資料報傳到另一台...