<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

全硬件TCP/IP協議棧學習筆記(第二天:TCP/IP協議學習二)

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

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

第二種情況,如果兩臺主機在一個子網絡,那么我們可以使用ARP協議,得到對方的MAC地址。ARP協議也是發出一個數據包,其中包含他要查詢的的主機的IP地址,在對方IP一欄,填的是FF:FF:FF:fFF:FF,表示這是一個“廣播”地址,他所在的子網絡的每一臺主機,都會收到這個數據包,從中取出IP地址,與自己的IP地址進行比較。如果兩者相同,都做出回復,向對方報告自己的MAC地址,否則就丟棄這個包。有了ARP協議之后,我們就可以得到同一個子網絡中的主機MAC地址,可以把數據包發送到任意一個主機之上。

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

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

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

搜索路由表,優先搜索匹配主機,如果能找到和IP地址完全一致的目標主機,則將該包發向目標主機

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

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

搜索陸游表,如果以上都失敗了,就搜索默認路由,如果默認路由存在,則發包

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

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

盡管在大多數情況下,錯誤的包傳送應該給出ICMP報文,但是在特殊情況下,是不產生ICMP錯誤報文的。如下

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

目的地址是廣播地址或多播地址的IP數據報。

作為鏈路層廣播的數據報。

不是IP分片的第一片。

源地址不是單個主機的數據報。這就是說,源地址不能為零地址、環回地址、廣播地 址或多播地址。

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

七.傳輸層

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

“傳輸層”的功能,就是建立“端口到端口”的通信。相比之下,網絡層只能“主機到主機”的通信。只要能確定主機和端口,我們就能實現程序之間的交流。

因此,Unix系統就把主機+端口,叫做“套接字”。有了它,就可以進行網絡應用的開發了

2.UDP協議

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

UDP數據包,也是由“標頭”和“數據”兩部分構成。標頭部分主要定義了發出端口和接收端口,“數據”部分就是具體的內容。然后把整個UDP數據包放入IP數據包的數據部分,而IP數據包在以太網的數據包中,所以整個以太網數據包現在就變成了這個樣子:

具體的協議信息我們明天再續

學海無涯...

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 以太網
    +關注

    關注

    40

    文章

    5135

    瀏覽量

    166785
  • TCP
    TCP
    +關注

    關注

    8

    文章

    1282

    瀏覽量

    78445
  • 大數據
    +關注

    關注

    64

    文章

    8720

    瀏覽量

    136724
收藏 人收藏

    評論

    相關推薦

    硬件TCP/IP協議學習筆記(第一天:TCP/IP協議學習一)

    1.TCP/IP族按照層次由上到下,層層包裝。每一層都有自己的功能,每一層都有下一層的支持。而用戶接觸的,只是最上邊一層,沒有感覺到下面一層層,但是理解的時候要從最下層由下向上來理解。最上邊是應用層,這里有http,ftp等熟悉的協議
    的頭像 發表于 12-18 10:22 ?5205次閱讀
    全<b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</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'>協議</b><b class='flag-5'>學習</b>一)

    硬件TCP/IP協議學習筆記(第四天:全硬件TCP/IP協議模塊學習

    /IP協議棧的不同歸類為兩大類,第一類是傳統的軟件TCP/IP協議棧;第二類是最新的
    的頭像 發表于 12-18 10:27 ?8394次閱讀
    全<b class='flag-5'>硬件</b><b class='flag-5'>TCP</b>/<b class='flag-5'>IP</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'>協議</b>模塊<b class='flag-5'>學習</b>)

    為什么會有TCP/IP協議

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

    TCP/IP網絡協議

    TCP/IP網絡協議TCP/IP協議是網絡的基礎,是Internet的語言,可以說沒有
    發表于 01-05 14:54

    剖析:WIZnet以太網核心技術–硬件TCP/IP協議

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

    如何去簡化Simplified TCP/IP協議?

    Simplified TCP/IP協議的特點是什么?如何去簡化Simplified TCP/IP
    發表于 05-26 07:23

    基于ARM的TCP/IP協議LwlP是如何實現的?

    嵌入式網絡通信系統的硬件平臺由哪幾個部分組成?基于ARM的TCP/IP協議LwlP是如何實現的?
    發表于 06-04 06:37

    TCP/IP協議有何功能

    TCP/IP協議是什么?TCP/IP協議
    發表于 10-14 06:39

    TCP/IP協議連接指南

    中扮演什么角色了。文章目錄ESP32 單片機學習筆記 - 07 - TCP連接一、例程實踐1)建立TCP客戶端 - tcp_client2)
    發表于 02-17 07:45

    TCP/IP協議簡介

    TCP/IP協議簡介 TCP/IP傳輸層協議概攬 傳輸控制
    發表于 06-09 23:07 ?1272次閱讀
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協議</b>簡介

    TCP/IP協議,TCP/IP協議內容和作用是什么?

    TCP/IP協議,TCP/IP協議內容和作用是什么? TC
    發表于 03-19 13:55 ?5715次閱讀

    tcp ip協議_什么是tcp ip協議

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

    TCP-IP協議學習教程全解

    TCP-IP協議學習教程全解,壓縮包內一共30章
    發表于 08-24 18:31 ?0次下載

    TCP/IP協議進階課程:TCP協議(2)

    TCP/IP協議進階課程:6、TCP協議02
    的頭像 發表于 07-05 00:10 ?3900次閱讀

    TCP-IP協議講解

    TCP-IP協議講解(嵌入式開發要學習哪些內容)-TCP-IP協議講解,講解了TCP的三次握手
    發表于 08-04 12:39 ?46次下載
    <b class='flag-5'>TCP-IP</b><b class='flag-5'>協議</b>講解
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>