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

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

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

全硬件TCP/IP協(xié)議棧學(xué)習(xí)筆記(第二天:TCP/IP協(xié)議學(xué)習(xí)二)

學(xué)FPGA,慢慢來 ? 2017-12-18 10:25 ? 次閱讀

關(guān)于昨天的“網(wǎng)絡(luò)層”,還有最后一點(diǎn)說明,由于IP數(shù)據(jù)包是放在以太網(wǎng)數(shù)據(jù)包里發(fā)送的,所以我們必須同時知道兩個地址,一個是對方的MAC地址,另一個是對方的IP地址。但是在通常情況下,對方的IP地址是已知的,但是我們不知道他的MAC地址。而這又分為兩種情況,第一種情況,如果兩臺主機(jī)不在同一個子網(wǎng)絡(luò),那么事實(shí)上沒有辦法得到對方的MAC地址,只能把數(shù)據(jù)包傳送到兩個子網(wǎng)絡(luò)連接處的“網(wǎng)關(guān)”,讓網(wǎng)關(guān)去處理。

第二種情況,如果兩臺主機(jī)在一個子網(wǎng)絡(luò),那么我們可以使用ARP協(xié)議,得到對方的MAC地址。ARP協(xié)議也是發(fā)出一個數(shù)據(jù)包,其中包含他要查詢的的主機(jī)的IP地址,在對方IP一欄,填的是FF:FF:FF:fFF:FF,表示這是一個“廣播”地址,他所在的子網(wǎng)絡(luò)的每一臺主機(jī),都會收到這個數(shù)據(jù)包,從中取出IP地址,與自己的IP地址進(jìn)行比較。如果兩者相同,都做出回復(fù),向?qū)Ψ綀蟾孀约旱腗AC地址,否則就丟棄這個包。有了ARP協(xié)議之后,我們就可以得到同一個子網(wǎng)絡(luò)中的主機(jī)MAC地址,可以把數(shù)據(jù)包發(fā)送到任意一個主機(jī)之上。

IP協(xié)議是TCP/IP的核心,所有的TCP,UDP,IMCP,IGCP的數(shù)據(jù)都是以IP數(shù)據(jù)格式。但是IP不是可靠的協(xié)議,這就是說,IP協(xié)議沒有提供一種數(shù)據(jù)未傳達(dá)以后的處理機(jī)制。而這被認(rèn)為是上層協(xié)議要做的事,所以這也就是出現(xiàn)了TCP是一個可靠的協(xié)議,而UDP就沒有那么可靠。

其中有一個8位生存時間(TTL)字段,該字段規(guī)定了該數(shù)據(jù)包在穿過多少個路由之后才會被拋棄,而這就證明IP協(xié)議是不可靠的,他不能保證數(shù)據(jù)被送達(dá),某個IP數(shù)據(jù)包每穿過,該數(shù)據(jù)包的TTL數(shù)值就會減少1,當(dāng)這個數(shù)據(jù)包的TTL成為0時,它就會被拋棄。這個數(shù)段的最大值就是255,也就是說一個協(xié)議包也就是在路由器中穿行了255次之后就會被拋棄,根據(jù)系統(tǒng)的不同,這個數(shù)據(jù)也不太一樣。

如果IP數(shù)據(jù)包的TTL(生命周期)以到,則該IP數(shù)據(jù)包就被拋棄。

搜索路由表,優(yōu)先搜索匹配主機(jī),如果能找到和IP地址完全一致的目標(biāo)主機(jī),則將該包發(fā)向目標(biāo)主機(jī)

搜索路由表,如果匹配主機(jī)失敗,則匹配同子網(wǎng)的路由器,這需要“子網(wǎng)掩碼(1.3.)”的協(xié)助。如果找到路由器,則將該包發(fā)向路由器。

搜索路由表,如果匹配同子網(wǎng)路由器失敗,則匹配同網(wǎng)號(第一章有講解)路由器,如果找到路由器,則將該包發(fā)向路由器。

搜索陸游表,如果以上都失敗了,就搜索默認(rèn)路由,如果默認(rèn)路由存在,則發(fā)包

如果都失敗了,就丟掉這個包。

由于IP協(xié)議不是一個可靠的協(xié)議,他不能保證數(shù)據(jù)被送達(dá),而保證數(shù)據(jù)送達(dá)的工作應(yīng)該由其他的模塊來完成。其中一個很重要的模塊就是ICMP(網(wǎng)絡(luò)控制報文)協(xié)議。當(dāng)傳送IP數(shù)據(jù)包發(fā)生錯誤時,比如主機(jī)不可達(dá),路由不可達(dá)等等,ICMP會把錯誤信息封包,然后傳回給主機(jī)。給主機(jī)一個處理錯誤的機(jī)會,這正是建立在IP層以上的協(xié)議就是可以做到安全的原因。ICMP數(shù)據(jù)包由8bit的錯誤類型和16bit的校驗(yàn)位組成。

盡管在大多數(shù)情況下,錯誤的包傳送應(yīng)該給出ICMP報文,但是在特殊情況下,是不產(chǎn)生ICMP錯誤報文的。如下

ICMP差錯報文不會產(chǎn)生ICMP差錯報文(出IMCP查詢報文)(防止IMCP的無限產(chǎn)生和傳送)

目的地址是廣播地址或多播地址的IP數(shù)據(jù)報。

作為鏈路層廣播的數(shù)據(jù)報。

不是IP分片的第一片。

源地址不是單個主機(jī)的數(shù)據(jù)報。這就是說,源地址不能為零地址、環(huán)回地址、廣播地 址或多播地址。

雖然里面的一些規(guī)定現(xiàn)在還不是很明白,但是所有的這一切規(guī)定,都是為了防止產(chǎn)生ICMP報文的無限傳播而定義的。

七.傳輸層

1.由來:有了MAC地址和IP地址,我們已經(jīng)可以在互聯(lián)網(wǎng)上任意兩臺主機(jī)上建立通信。而你在多個進(jìn)程的時候,許多程序都要使用網(wǎng)絡(luò),如一邊瀏覽網(wǎng)絡(luò),一邊與朋友聊天。當(dāng)一個數(shù)據(jù)包從互聯(lián)網(wǎng)上發(fā)過來的時候,你怎么知道他是網(wǎng)絡(luò)的內(nèi)容還是在線聊天的內(nèi)容。因此我們還需要一個參數(shù),表示這個數(shù)據(jù)包到底供哪個程序使用,這個參數(shù)就叫做“端口”,他其實(shí)就是每一個使用網(wǎng)卡程序的編號。每個數(shù)據(jù)發(fā)送到主機(jī)指定端口,所以不同的程序就能取到自己所需要的數(shù)據(jù)?!岸丝凇笔?到65535之間的一個整數(shù),正好是16個二進(jìn)制位。而0到1023的端口被系統(tǒng)占用,用戶只能選取大于1023的端口。不管是瀏覽網(wǎng)頁還是在線聊天,應(yīng)用程序會隨機(jī)選用一個端口,然后與服務(wù)器的相應(yīng)端口聯(lián)系。

“傳輸層”的功能,就是建立“端口到端口”的通信。相比之下,網(wǎng)絡(luò)層只能“主機(jī)到主機(jī)”的通信。只要能確定主機(jī)和端口,我們就能實(shí)現(xiàn)程序之間的交流。

因此,Unix系統(tǒng)就把主機(jī)+端口,叫做“套接字”。有了它,就可以進(jìn)行網(wǎng)絡(luò)應(yīng)用的開發(fā)了

2.UDP協(xié)議

我們現(xiàn)在必須在數(shù)據(jù)包中加入端口信息,這就需要新的協(xié)議,最簡單的實(shí)現(xiàn)就是UDP協(xié)議,他的格式幾乎就是在數(shù)據(jù)前邊加上端口號。

UDP數(shù)據(jù)包,也是由“標(biāo)頭”和“數(shù)據(jù)”兩部分構(gòu)成。標(biāo)頭部分主要定義了發(fā)出端口和接收端口,“數(shù)據(jù)”部分就是具體的內(nèi)容。然后把整個UDP數(shù)據(jù)包放入IP數(shù)據(jù)包的數(shù)據(jù)部分,而IP數(shù)據(jù)包在以太網(wǎng)的數(shù)據(jù)包中,所以整個以太網(wǎng)數(shù)據(jù)包現(xiàn)在就變成了這個樣子:

具體的協(xié)議信息我們明天再續(xù)

學(xué)海無涯...

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

    關(guān)注

    40

    文章

    5319

    瀏覽量

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

    關(guān)注

    8

    文章

    1337

    瀏覽量

    78863
  • 大數(shù)據(jù)
    +關(guān)注

    關(guān)注

    64

    文章

    8832

    瀏覽量

    137138
收藏 人收藏

    評論

    相關(guān)推薦

    硬件TCP/IP協(xié)議學(xué)習(xí)筆記(第一TCP/IP協(xié)議學(xué)習(xí)一)

    1.TCP/IP族按照層次由上到下,層層包裝。每一層都有自己的功能,每一層都有下一層的支持。而用戶接觸的,只是最上邊一層,沒有感覺到下面一層層,但是理解的時候要從最下層由下向上來理解。最上邊是應(yīng)用層,這里有http,ftp等熟悉的協(xié)議
    的頭像 發(fā)表于 12-18 10:22 ?5408次閱讀
    <b class='flag-5'>全</b><b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(第一<b class='flag-5'>天</b>:<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>學(xué)習(xí)</b>一)

    硬件TCP/IP協(xié)議學(xué)習(xí)筆記(第三TCP/IP協(xié)議學(xué)習(xí)三)

    ,并不是所有系統(tǒng)都對UDP數(shù)據(jù)包加以檢驗(yàn),但是 RFC中標(biāo)準(zhǔn)要求發(fā)送端應(yīng)該計算檢驗(yàn)和。 UDP檢驗(yàn)和覆蓋UDP協(xié)議頭和數(shù)據(jù),這和IP的檢驗(yàn)和不一樣,IP的檢驗(yàn)和只覆蓋IP數(shù)據(jù)頭,并不覆
    的頭像 發(fā)表于 12-18 10:26 ?4898次閱讀
    <b class='flag-5'>全</b><b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(第三<b class='flag-5'>天</b>:<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>學(xué)習(xí)</b>三)

    硬件TCP/IP協(xié)議學(xué)習(xí)筆記(第四硬件TCP/IP協(xié)議模塊學(xué)習(xí)

    /IP協(xié)議的不同歸類為兩大類,第一類是傳統(tǒng)的軟件TCP/IP協(xié)議
    的頭像 發(fā)表于 12-18 10:27 ?8649次閱讀
    <b class='flag-5'>全</b><b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b><b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>(第四<b class='flag-5'>天</b>:<b class='flag-5'>全</b><b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b>模塊<b class='flag-5'>學(xué)習(xí)</b>)

    為什么會有TCP/IP協(xié)議

    協(xié)議。而第二層則是傳輸層,著名的TCP和UDP協(xié)議就在這個層次(不要告訴我你沒用過udp玩星際)。第三層是網(wǎng)絡(luò)層,IP
    發(fā)表于 01-05 14:52

    剖析:WIZnet以太網(wǎng)核心技術(shù)–硬件TCP/IP協(xié)議

    WIZnet,是全球第一家專注于硬件TCP/IP協(xié)議技術(shù)(iOffloadTM Tech)的
    發(fā)表于 04-09 09:44

    tcp ip協(xié)議_什么是tcp ip協(xié)議

    什么是tcp ip協(xié)議,tcp ip協(xié)議詳解,深刻講述了tc
    發(fā)表于 05-14 16:29 ?5951次閱讀
    <b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>協(xié)議</b>_什么是<b class='flag-5'>tcp</b> <b class='flag-5'>ip</b><b class='flag-5'>協(xié)議</b>

    TCP-IP協(xié)議學(xué)習(xí)教程

    TCP-IP協(xié)議學(xué)習(xí)教程解,壓縮包內(nèi)一共30章
    發(fā)表于 08-24 18:31 ?0次下載

    TCP/IP協(xié)議之路由器簡要分析

    讀完這個系列的第一篇淺談TCP/IP協(xié)議(一)入門知識和第二篇淺談TCP/
    發(fā)表于 10-10 11:46 ?1次下載

    Microchip TCP/IP協(xié)議

    的開發(fā)人員可以很容易找到許多Microchip產(chǎn)品的商業(yè)和非商業(yè)的TC P/IP實(shí)現(xiàn)方案。本應(yīng)用筆記詳細(xì)說明了Microchip公司自己免費(fèi)提供的TC P/IP協(xié)議
    發(fā)表于 04-20 16:04 ?4次下載
     Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>

    Microchip的TCPIP協(xié)議的詳細(xì)中文資料免費(fèi)下載

    。感興趣的開發(fā)人員可以很容易找到許多 Microchip 產(chǎn)品的商業(yè)和非商業(yè)的 TCP/IP 實(shí)現(xiàn)方案。本應(yīng)用筆記詳細(xì)說明了 Microchip 公司自己免費(fèi)提供的 TCP/
    發(fā)表于 06-15 08:27 ?35次下載
    Microchip的<b class='flag-5'>TCP</b>和<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>的詳細(xì)中文資料免費(fèi)下載

    Microchip TCP/IP精簡協(xié)議

    本應(yīng)用筆記描述 Microchip 傳輸控制協(xié)議 / 互聯(lián)網(wǎng)協(xié)議TCP/IP)精簡協(xié)議
    發(fā)表于 04-01 15:36 ?17次下載
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>精簡<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>

    Microchip TCP/IP協(xié)議

    。感興趣的開發(fā)人員可以很容易找到許多 Microchip 產(chǎn)品的商業(yè)和非商業(yè)的TCP/IP 實(shí)現(xiàn)方案。本應(yīng)用筆記詳細(xì)說明了 Microchip 公司自己免費(fèi)提供的 TCP/
    發(fā)表于 04-02 14:28 ?22次下載
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>

    TCP-IP協(xié)議講解

    TCP-IP協(xié)議講解(嵌入式開發(fā)要學(xué)習(xí)哪些內(nèi)容)-TCP-IP協(xié)議講解,講解了TCP的三次握手
    發(fā)表于 08-04 12:39 ?46次下載
    <b class='flag-5'>TCP-IP</b><b class='flag-5'>協(xié)議</b>講解

    到底什么是TCP/IP協(xié)議,看完這篇你就明白!

    一談到TCP/IP協(xié)議,相信不少小白都處于暴躁的邊緣,只懂其一不知其。沒關(guān)系,看完這篇你就知道啦!我們先簡單了解下
    的頭像 發(fā)表于 12-09 15:21 ?1351次閱讀
    到底什么是<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>,看完這篇你就明白!

    Microchip TCP/IP 協(xié)議應(yīng)用筆記

    電子發(fā)燒友網(wǎng)站提供《Microchip TCP/IP 協(xié)議應(yīng)用筆記.pdf》資料免費(fèi)下載
    發(fā)表于 04-17 14:16 ?0次下載