女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

數(shù)據(jù)是怎么樣保證準確的從客戶端發(fā)送到服務(wù)器端

馬哥Linux運維 ? 來源:杰哥的IT之旅 ? 作者:杰哥的IT之旅 ? 2022-07-01 10:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

你有想過嗎,在計算機網(wǎng)絡(luò)當中,數(shù)據(jù)是怎么樣保證準確的從客戶端發(fā)送到服務(wù)器端的?中間涉及到了哪些理論?

01 客戶端各層對數(shù)據(jù)的封裝

java實現(xiàn)客戶端的代碼如下:

356decc0-f3c3-11ec-ba43-dac502259ad0.png

應(yīng)用層會指定發(fā)送的服務(wù)器的域名(或者IP)和端口號、以及要發(fā)送數(shù)據(jù)的內(nèi)容,傳遞給下一層傳輸層。

傳輸層會在把應(yīng)用層的報文當成自己的數(shù)據(jù),然后在前面拼接源端口號,和目標端口號。

其中源端口號就是客戶端進程監(jiān)聽的端口號,這個端口號一般不是固定的,由操作系統(tǒng)在49152~65535范圍內(nèi)動態(tài)分配,而目標端口號就是服務(wù)器接收數(shù)據(jù)的端口號,一般是固定的,在java代碼中會指明。

網(wǎng)絡(luò)層會在傳輸層報文的基礎(chǔ)上增加源IP和目標IP,其中源IP就是本地網(wǎng)卡的IP地址,目標IP是服務(wù)器的IP,如果java代碼中指定的是服務(wù)器的域名。

那么,首先需要通過DNS服務(wù)器將域名解析為IP,域名解析的流程:

先查瀏覽器緩存->操作系統(tǒng)緩存->hosts文件->DNS服務(wù)器。

數(shù)據(jù)鏈路層會在網(wǎng)絡(luò)層的基礎(chǔ)上增加源MAC地址和目標MAC地址,其中源MAC地址就是本機網(wǎng)卡的MAC地址,目標MAC地址是下一跳網(wǎng)絡(luò)設(shè)備(一般是交換機或路由器)的MAC地址。

注意,目標MAC地址一般不是服務(wù)器的MAC地址(如果客戶端和服務(wù)器端在同一個網(wǎng)段,那么目標MAC地址就是服務(wù)器的MAC地址),因為客戶端根本就無法得知服務(wù)器的MAC地址,所以數(shù)據(jù)鏈路層采用下一跳的機制轉(zhuǎn)遞數(shù)據(jù)。

那么怎么知道我的下一跳是誰呢?

下面就要請出ARP協(xié)議了,ARP會發(fā)出一個廣播,告訴全世界:“大家好,我的IP地址是192.168.1.6,我的MAC地址是00-50-56-C0-88-01”

當同一個網(wǎng)段上的主機接收到ARP報文時,會將這些信息添加自己的ARP緩沖區(qū)中的ARP列表,同時將自己的IP地址和MAC地址回應(yīng)給發(fā)送者,這樣每個位于同一個網(wǎng)段的主機都有整個網(wǎng)段內(nèi)各個主機的IP與MAC地址的對應(yīng)關(guān)系了。

357b3fce-f3c3-11ec-ba43-dac502259ad0.png

ARP列表的具體內(nèi)容如下:

3588eb74-f3c3-11ec-ba43-dac502259ad0.png

現(xiàn)在我的目標IP是192.168.3.6,又不在這個ARP列表中,那我怎么知道目標MAC地址要填啥呢?填下一跳的MAC地址,那么下一跳是又是誰呢?這里就要請出路由表了。

35941292-f3c3-11ec-ba43-dac502259ad0.png

這個路由表是計算機的路由表,而不是路由器的路由表,這個路由表怎么來的呢?根據(jù)/etc/sysconfig/network-scripts/ifcfg-eth0這個文件生成的。

359eaa40-f3c3-11ec-ba43-dac502259ad0.png

那么這個路由表怎么使用呢?將目標IP與每一條記錄的子網(wǎng)掩碼(Genmask)一一按位與運算,匹配度最高的Destination字段的IP就是下一跳的IP192.168.1.100,也就是網(wǎng)關(guān)地址GATEWAY,然后根據(jù)下一跳的IP去查ARP列表獲得MAC地址00-30-F2-C1-2E-89。

就這樣客戶端完成了對報文的組裝,交給物理層把數(shù)據(jù)從網(wǎng)卡發(fā)送出去,發(fā)送到交換機A。

02 交換機的交換

交換機收到客戶端的報文后,會進行解析,只解析到數(shù)據(jù)鏈路層,從中獲得目標MAC地址,然后查找ARP列表,將報文轉(zhuǎn)發(fā)給對應(yīng)的網(wǎng)卡端口。

交換機中的ARP列表:

35aee52c-f3c3-11ec-ba43-dac502259ad0.png

根據(jù)目標MAC地址00-30-F2-C1-2E-89找到交換機的端口為Fa2/1,這樣交換機就會把報文從這個端口發(fā)送出去,發(fā)送到路由器,這里的端口是交換機的物理端口,也就是插入網(wǎng)線的插口。

35d323ce-f3c3-11ec-ba43-dac502259ad0.png

03 路由器的路由

路由器可以連接兩個不同的網(wǎng)絡(luò)。

路由器有一張路由表,路由表可以通過網(wǎng)絡(luò)工程師配置或者從其他路由器學(xué)習(xí)得到。

35e424e4-f3c3-11ec-ba43-dac502259ad0.png

路由器會解析報文到網(wǎng)絡(luò)層,然后發(fā)現(xiàn)目的IP是192.168.3.6,從上面的路由表可以可以發(fā)現(xiàn),想要去192.168.3.0網(wǎng)段,只需要將數(shù)據(jù)從FastEthernet0/1端口發(fā)送出去即可。

另外路由器會將目標MAC地址替換成下一跳的MAC地址(在這里是服務(wù)器的MAC地址,如果中間還有其他路由器,那么就是下一個路由器的MAC地址),怎么替換呢?還是查ARP表:

35fc3052-f3c3-11ec-ba43-dac502259ad0.png

查詢IP192.168.3.6的MAC地址為0030.A396.5DE7然后將目標MAC替換成這個,然后將數(shù)據(jù)從FastEthernet0/1端口發(fā)送出去,交給交換機B,交換機B再將數(shù)據(jù)轉(zhuǎn)發(fā)到服務(wù)器端。

360cd920-f3c3-11ec-ba43-dac502259ad0.png

04 服務(wù)器端各層對數(shù)據(jù)的解析

361c32ee-f3c3-11ec-ba43-dac502259ad0.png

服務(wù)器端收到數(shù)據(jù)后會逐層進行解析,最后將真正的數(shù)據(jù)交應(yīng)用程序進行處理,至此一個數(shù)據(jù)從客戶端到服務(wù)器端就完成了,服務(wù)器端會發(fā)送響應(yīng)報文給客戶端,大體的流程類似,但是數(shù)據(jù)不一定是原路返回的,因為中間經(jīng)過的路由可能不同。

05 擴展

查看域名對應(yīng)的IP:

362d52c2-f3c3-11ec-ba43-dac502259ad0.png

查看本機到服務(wù)器中間經(jīng)過了多少個路由節(jié)點:

364afb2e-f3c3-11ec-ba43-dac502259ad0.png

原文標題:數(shù)據(jù)在網(wǎng)絡(luò)中是如何傳輸?shù)?/p>

文章出處:【微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

審核編輯:彭靜

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

原文標題:數(shù)據(jù)在網(wǎng)絡(luò)中是如何傳輸?shù)?/p>

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    使用lwip socket udp功能,開發(fā)板為客戶端時不能夠接收服務(wù)器端發(fā)送過來的數(shù)據(jù)

    調(diào)用,間隔10ms */ void Socket_UDP_ClientTX(void) //開發(fā)板為客戶端數(shù)據(jù)發(fā)送到服務(wù)器端是成功的 ok { volatile u8 _KeyCod
    發(fā)表于 04-16 06:01

    MKW45B41Z客戶端無法服務(wù)器獲取服務(wù)是為什么?

    。MKW45B41Z (自定義板) 充當中央設(shè)備客戶端角色。MKW45 客戶端掃描外圍設(shè)備(NRF 連接)設(shè)備并連接到外圍設(shè)備(NRF 連接)設(shè)備。連接 MKW45(自定義板卡)后,客戶端無法
    發(fā)表于 03-28 07:40

    用隊列實現(xiàn)的1對N的TCP服務(wù)器端,自動回復(fù)信息總發(fā)錯客戶端

    本帖最后由 kaneiqi1210 于 2014-7-17 12:43 編輯 如題,我仿照教材用隊列做的TCP一對多的服務(wù)器端,在1對1時,沒問題,而在1對多時,就出現(xiàn),自動回復(fù)信息至不正確的客戶端(即非發(fā)送信息的
    發(fā)表于 07-17 09:31

    labview TCP客戶端

    最近在做一個labview 客戶端測試小程序,服務(wù)器采用MFC編寫,客戶端采用TCP偵聽函數(shù),通信可以連接,數(shù)據(jù)也正確,但是服務(wù)器端檢測
    發(fā)表于 06-30 23:15

    qt tcp程序在服務(wù)器端發(fā)送數(shù)據(jù)之前能接收客戶端發(fā)送數(shù)據(jù)嗎?

    寫了一個tcp的客戶端服務(wù)器端,是服務(wù)器端客戶端發(fā)送文件,但是我想在服務(wù)器端
    發(fā)表于 04-22 20:06

    labview怎么實現(xiàn)服務(wù)器端一直等待客戶端發(fā)送數(shù)據(jù)

    我現(xiàn)在在做labview的服務(wù)器端,但是當客戶端發(fā)送數(shù)據(jù)結(jié)束后,我的服務(wù)器端會報錯。報錯的意思就是說客戶
    發(fā)表于 08-12 14:34

    怎么用key0,key2控制服務(wù)器端客戶端知道有數(shù)據(jù)發(fā)送請求的?

    原子用key0,key2控制服務(wù)器端客戶端有請求數(shù)據(jù)發(fā)送,是如何知道有數(shù)據(jù)發(fā)送請求的,沒看明白
    發(fā)表于 07-29 04:17

    TCP:多個客戶端服務(wù)器發(fā)送數(shù)據(jù)

    本帖最后由 埥茬適里瀭叺妏牸 于 2019-8-23 10:27 編輯 就是當多個客戶端第一次連接上服務(wù)器發(fā)送數(shù)據(jù)沒問題,但是途中更改客戶
    發(fā)表于 08-22 15:05

    Tcp/ip客戶端示例:將數(shù)據(jù)發(fā)送到服務(wù)器的最佳方法是什么?

    H/WPIC32以太網(wǎng)啟動套件2MPLABX3.2,和聲1.6AM,我會把正確的數(shù)據(jù)發(fā)送到我的服務(wù)器嗎?問題是我對Microchip給出的泛型Tcp/ip
    發(fā)表于 09-11 12:37

    為什么LWIP的TCP客戶端服務(wù)器端斷開后繼續(xù)發(fā)送數(shù)據(jù)就無法檢測到連接狀態(tài)?

    發(fā)現(xiàn)LWIP的TCP客戶端有個BUG,當服務(wù)器端開之后,如果還繼續(xù)發(fā)送數(shù)據(jù),那就不能檢測到連接狀態(tài)。求助求助
    發(fā)表于 10-29 20:26

    DHCP客戶端如何將主機名發(fā)送到服務(wù)器

    有沒有人知道,如果DHCP客戶端和諧,可以將設(shè)備的主機名返回DNS服務(wù)器。我很感激服務(wù)器在許多情況下把主機名發(fā)送客戶端。應(yīng)用程序是當你第一
    發(fā)表于 05-01 06:44

    請問如何處理客戶端服務(wù)器的寫操作?

    我的項目涉及一個 Nucleo-64+X-NUCLEO-BNRG2A1 通過藍牙與 Android 手機通信。我成功地將數(shù)據(jù)服務(wù)器 (BNRG2A1) 發(fā)送到
    發(fā)表于 01-04 08:22

    網(wǎng)絡(luò)調(diào)試和串口調(diào)試集合UDP TCP客戶端和TCP服務(wù)器端應(yīng)用程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是網(wǎng)絡(luò)調(diào)試和串口調(diào)試集合UDP TCP客戶端和TCP服務(wù)器端應(yīng)用程序免費下載。
    發(fā)表于 08-30 08:00 ?16次下載
    網(wǎng)絡(luò)調(diào)試和串口調(diào)試集合UDP TCP<b class='flag-5'>客戶端</b>和TCP<b class='flag-5'>服務(wù)器端</b>應(yīng)用程序免費下載

    服務(wù)器端使用內(nèi)存來存儲客戶端發(fā)送過來的數(shù)據(jù)

    在實現(xiàn)數(shù)據(jù)存儲之前,我們先在客戶端使用Clap庫來解析命令行參數(shù),并封裝成命令發(fā)送服務(wù)器
    的頭像 發(fā)表于 09-29 10:03 ?1378次閱讀

    MQTT中服務(wù)端客戶端

    (broker),它是 MQTT 信息傳輸?shù)臉屑~,負責將 MQTT 客戶端發(fā)送來的信息傳遞給 MQTT 客戶端;MQTT 服務(wù)端還負責管理 MQTT
    的頭像 發(fā)表于 07-30 14:55 ?3158次閱讀