RM新时代网站-首页

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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux下網(wǎng)絡(luò)編程

嵌入式技術(shù) ? 來源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-08-26 20:53 ? 次閱讀

Linux網(wǎng)絡(luò)編程

1.TCP/IP簡介

TCP/IP協(xié)議源于1969年,是針對Internet開發(fā)的一種體系結(jié)構(gòu)和協(xié)議標(biāo)準(zhǔn),目的在于解決異種計算機網(wǎng)絡(luò)的通信問題。使得網(wǎng)絡(luò)在互聯(lián)時能為用戶提供一種通用、一致的通信服務(wù)。是Internet采用的協(xié)議標(biāo)準(zhǔn)。

TCP/IP是一組通信協(xié)議的代名詞,是由一系列協(xié)議組成的協(xié)議簇。它本身指兩個協(xié)議集:

TCP(傳輸控制協(xié)議)。

IP(互聯(lián)網(wǎng)絡(luò)協(xié)議)。

TCP/IP協(xié)議的基本傳輸單位是數(shù)據(jù)包(Datagram)。

TCP/IP傳輸協(xié)議,即傳輸控制/網(wǎng)絡(luò)協(xié)議,也叫作網(wǎng)絡(luò)通訊協(xié)議。它是在網(wǎng)絡(luò)的使用中的最基本的通信協(xié)議。TCP/IP傳輸協(xié)議對互聯(lián)網(wǎng)中各部分進行通信的標(biāo)準(zhǔn)和方法進行了規(guī)定。并且,TCP/IP傳輸協(xié)議是保證網(wǎng)絡(luò)數(shù)據(jù)信息及時、完整傳輸?shù)膬蓚€重要的協(xié)議。TCP/IP傳輸協(xié)議是嚴(yán)格來說是一個四層的體系結(jié)構(gòu),應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層都包含其中。

2.TCP/IP協(xié)議分層模型

TCP/IP協(xié)議族是一組不同層次上的多個協(xié)議的組合。TCP/IP通常被認(rèn)為是一個四層協(xié)議系統(tǒng)。

poYBAGMIwi-AHC0OAABCbjmnYwE238.png#pic_center

應(yīng)用層(Application Layer)

包含各種網(wǎng)絡(luò)應(yīng)用協(xié)議。如HTTP、FTP、telnet、SMTP、DNS、SNMP等。

傳輸層(Transport Layer)

負(fù)責(zé)在源主機和目的主機的應(yīng)用程序間建立、管理和拆除可靠而又有效的端到端連接 。主要有TCP和UDP兩個傳輸協(xié)議。

網(wǎng)絡(luò)互聯(lián)層(Internet Layer)

負(fù)責(zé)將分組獨立地從信源傳送到信宿,主要解決路由選擇、擁塞控制和網(wǎng)絡(luò)互聯(lián)等問題。如最重要的協(xié)議——IP。

網(wǎng)絡(luò)接口層(Network Access Layer)

負(fù)責(zé)將IP分組封裝成適合在物理網(wǎng)絡(luò)上傳輸?shù)膸袷讲鬏?;或?qū)奈锢砭W(wǎng)絡(luò)接收到的幀解封,取出IP分組交給網(wǎng)絡(luò)互聯(lián)層。當(dāng)前幾乎所有的物理網(wǎng)絡(luò)上都可運行TCP/IP協(xié)議。

3.傳輸控制協(xié)議TCP

TCP協(xié)議, 即傳輸控制協(xié)議,是一個可靠的、面向連接的協(xié)議。所謂連接,就是兩個對等實體為進行數(shù)據(jù)通信而進行的一種結(jié)合。面向連接服務(wù)是在數(shù)據(jù)交換之前,必須先建立連接。當(dāng)數(shù)據(jù)交換結(jié)束后,則應(yīng)終止這個連接。面向連接服務(wù)具有:連接建立、數(shù)據(jù)傳輸和連接釋放這三個階段。在傳送數(shù)據(jù)時是按序傳送的。

3.1 TCP數(shù)據(jù)格式

pYYBAGMIwi-AEfrFAAH0QjScnUk951.png#pic_center

3.2 三次握手

pYYBAGMIwi-AUFL5AAA8j0mimhU637.png#pic_center

第一次握手:

建立連接時,客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)。

第二次握手:

服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務(wù)器進入SYN_RECV狀態(tài)。

第三次握手:

客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務(wù)器進入ESTABLISHED狀態(tài),完成三次握手。

為什么握手是三次, 而不是兩次或者四次?

為了保證雙方都具備收發(fā)能力,則雙方都需要發(fā)送SYN和ACK,兩次握手則只能確一方具備收發(fā)能力;三次握手則可剛好可確定雙方都是可以進行收發(fā)的。

第一次握手是客戶端發(fā)送 SYN, 服務(wù)端接收, 服務(wù)端得出客戶端的發(fā)送能力和服務(wù)端的接收能力都正常;

第二次握手是服務(wù)端發(fā)送 SYN+ACK, 客戶端接收, 客戶端得出客戶端發(fā)送接收能力正常, 服務(wù)端發(fā)送接收能力也都正常, 但是此時服務(wù)器并不能確認(rèn)客戶端的接收能力是否正常;

第三次握手客戶端發(fā)送 ACK, 服務(wù)器接收, 服務(wù)端才能得出客戶端發(fā)送接收能力正常,服務(wù)端自己發(fā)送接收能力也都正常。

3.3 四次揮手

poYBAGMIwjCAMOa5AATbrN2IQR0409.png#pic_center

TCP 一個特別的概念叫作半關(guān)閉, 這個概念是說, TCP 的連接是全雙工(可以同時發(fā)送和接收) 連接, 因此在關(guān)閉連接的時候, 必須關(guān)閉發(fā)送和接收兩個方向上的連接。

第一次揮手: 客戶端發(fā)出釋放 FIN=1, 自 己序列號 seq=u, 進入 FIN-WAIT-1 狀態(tài)。

第二次揮手: 服務(wù)器收到客戶端的后, 發(fā)出 ACK=1 確認(rèn)標(biāo)志和客戶端的確認(rèn)號 ack=u+1,自己的序列號 seq=v, 進入 CLOSE-WAIT 狀態(tài)。

第三次揮手: 客戶端收到服務(wù)器確認(rèn)結(jié)果后, 進入 FIN-WAIT-2 狀態(tài)。 此時服務(wù)器發(fā)送釋放 FIN=1 信號, 確認(rèn)標(biāo)志 ACK=1, 確認(rèn)序號 ack=u+1, 自 己序號 seq=w, 服務(wù)器進入LAST-ACK(最后確認(rèn)態(tài))。

第四次揮手: 客戶端收到回復(fù)后, 發(fā)送確認(rèn) ACK=1, ack=w+1, 自 己的 seq=u+1, 客戶端進入 TIME-WAIT(時間等待) 。 客戶端經(jīng)過 2 個最長報文段壽命后, 客戶端 CLOSE;服務(wù)器收到確認(rèn)后, 立刻進入 CLOSE 狀態(tài)。

為么需要四次揮手

因為為在斷開連接時,服務(wù)器收到客戶端斷開請求時可能此時還沒有完成數(shù)據(jù)傳輸,所以需要先回復(fù)客戶端我收到你的請求了,等將數(shù)據(jù)傳輸完成后,再通知客戶開端可以斷開連接了,所以服務(wù)器需要將應(yīng)答ack和FIN分兩次發(fā)送,因此需要四次揮手。

審核編輯 黃昊宇





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

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209318
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3614

    瀏覽量

    93685
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1353

    瀏覽量

    79054
收藏 人收藏

    評論

    相關(guān)推薦

    Linux開發(fā)_采用線程處理網(wǎng)絡(luò)請求

    介紹Linux下網(wǎng)絡(luò)編程、線程編程,select機制,利用子線程響應(yīng)TCP服務(wù)器的請求。
    的頭像 發(fā)表于 09-17 15:21 ?839次閱讀

    LINUX網(wǎng)絡(luò)編程

    linux開發(fā)編程教程資料——LINUX網(wǎng)絡(luò)編程,感興趣的小伙伴們可以看一看。
    發(fā)表于 08-23 16:23 ?0次下載

    Linux下的網(wǎng)絡(luò)編程總結(jié)

    linux開發(fā)編程教程資料——Linux下的網(wǎng)絡(luò)編程總結(jié),感興趣的小伙伴們可以看一看。
    發(fā)表于 08-23 16:23 ?0次下載

    Linux-socket網(wǎng)絡(luò)編程

    linux開發(fā)編程教程資料——Linux-socket網(wǎng)絡(luò)編程,感興趣的小伙伴們可以看一看。
    發(fā)表于 08-23 16:23 ?0次下載

    Linux網(wǎng)絡(luò)編程

    linux開發(fā)編程教程資料——Linux網(wǎng)絡(luò)編程,感興趣的小伙伴們可以看一看。
    發(fā)表于 08-23 16:23 ?0次下載

    Linux__C網(wǎng)絡(luò)編程

    linux開發(fā)編程教程資料——Linux__C網(wǎng)絡(luò)編程,感興趣的小伙伴們可以看一看。
    發(fā)表于 08-23 16:23 ?0次下載

    linux-網(wǎng)絡(luò)編程-socket編程

    linux開發(fā)編程教程資料——linux-網(wǎng)絡(luò)編程-socket編程,感興趣的小伙伴們可以看一看
    發(fā)表于 08-23 16:23 ?0次下載

    Linux網(wǎng)絡(luò)編程實例詳解

    網(wǎng)絡(luò)通訊教程學(xué)習(xí)之Linux網(wǎng)絡(luò)編程實例詳解
    發(fā)表于 09-01 14:55 ?0次下載

    LINUX網(wǎng)絡(luò)編程

    網(wǎng)絡(luò)通訊教程學(xué)習(xí)之 LINUX 網(wǎng)絡(luò)編程
    發(fā)表于 09-01 14:55 ?0次下載

    linux下網(wǎng)卡配置詳解

    linux下網(wǎng)卡配置詳解
    發(fā)表于 12-15 22:38 ?0次下載

    Linux網(wǎng)絡(luò)編程

    Linux網(wǎng)絡(luò)編程
    發(fā)表于 10-27 15:31 ?16次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>網(wǎng)絡(luò)</b>的<b class='flag-5'>編程</b>

    Linux網(wǎng)絡(luò)編程

    linux網(wǎng)絡(luò)編程筆記
    發(fā)表于 12-04 14:23 ?0次下載

    Linux下網(wǎng)絡(luò)怎樣來配置總結(jié)

    Linux下網(wǎng)絡(luò)配置總結(jié)
    發(fā)表于 11-07 11:35 ?898次閱讀

    Linux下網(wǎng)絡(luò)編程TCP并發(fā)服務(wù)器和TCP客戶端程序免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是Linux下網(wǎng)絡(luò)編程TCP并發(fā)服務(wù)器和TCP客戶端程序免費下載
    發(fā)表于 01-08 15:12 ?9次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>下網(wǎng)絡(luò)</b><b class='flag-5'>編程</b>TCP并發(fā)服務(wù)器和TCP客戶端程序免費下載

    Linux下網(wǎng)絡(luò)編程-UDP協(xié)議探測在線好友

    UDP協(xié)議 相對TCP協(xié)議來講屬于不可靠協(xié)議,UDP協(xié)議是廣播方式發(fā)送數(shù)據(jù),沒有服務(wù)器和客戶端的概念。 在Linux下使用socket創(chuàng)建UDP的套接字時,屬性要選擇數(shù)據(jù)報類型SOCK_DGRAM。
    的頭像 發(fā)表于 08-14 09:23 ?994次閱讀
    RM新时代网站-首页