日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LwIP之网络技术基础

發布時間:2025/3/15 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LwIP之网络技术基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、協議模型

TCP/IP協議模型(Transmission Control Protocol/Internet Protocol),包含了一系列構成互聯網基礎的網絡協議,是Internet的核心協議,通過20多年的發展已日漸成熟,并被廣泛應用于局域網和廣域網中,目前已成為事實上的國際標準。TCP/IP協議簇是一組不同層次上的多個協議的組合,通常被認為是一個四層協議系統,與OSI的七層模型相對應。

? ? ? ? ? ? ? ? ??

  • 鏈路層

  用來處理連接網絡的硬件部分。包括控制操作系統、硬件的設備驅動、網卡,及光纖等物理可見部分。

  • 網絡層

  用來規定通過怎樣的路徑把數據包傳送給對方計算機。

  • 傳輸層

  主要為兩臺主機上的應用程序提供端到端的通信。

  • 應用層

應用層負責處理特定的應用程序細節。?

?

二、各層協議

?各種協議在TCP/IP協議模型中所處的層次如下:

? ? ? ? ? ? ? ? ? ? ? ? ?? ?

ARP:通過IP地址獲取MAC地址。

RARP:通過MAC地址獲取IP地址。

IP:盡快將數據包從一個主機傳送到另一個主機,不保證可靠性。

ICMP:IP層用它來與其他主機或路由器交換錯誤報文和其他重要信息。

IGMP:Internet組管理協議,用來把UDP數據報多播到多個主機。

UDP:簡單地將數據包從一個應用程序發送到另一個應用程序,不保證可靠性。

TCP:提供一個應用程序到另一個應用程序的可靠傳輸。

?

三、IP地址及分類

互聯網中采用一套獨立的編址技術,使任何主機的編址不受其物理環境的影響。設計人員為每一臺主機分配了一個唯一的32bit整數地址,稱之為IP地址。

目前IP地址采用了分類的概念,把所有地址劃分為A、B、C、D、E五類。

? ? ? ? ? ? ? ? ? ? ? ? ??

其中,有一些特殊用途的IP地址

環回地址:127.x.x.x,通常使用127.0.0.1。

網絡地址:主機號全0的地址,如85.0.0.0、134.89.0.0、213.89.89.0等。

直接廣播地址:用于向所在網絡廣播消息。主機號全1的地址,如85.255.255.255、134.89.255.255、213.89.89.255等。

受限廣播地址:255.255.255.255,用于向本地網絡廣播消息。

不確定IP地址:0.0.0.0,表示整個網絡

錯誤地址:169.254.x.x,DHCP分配失敗時系統自動分配。

本網絡特定主機地址:網絡號全0的地址,如0.x.x.x、0.0.x.x、0.0.0.x。

/* 不確定IP地址(表示本機所有網絡接口IP地址)指針 */ #define IP_ADDR_ANY ((struct ip_addr *)&ip_addr_any) /* 廣播IP地址指針 */ #define IP_ADDR_BROADCAST ((struct ip_addr *)&ip_addr_broadcast)/* A類地址 */ #define IN_CLASSA(a) ((((u32_t)(a)) & 0x80000000UL) == 0) //是否為A類地址 #define IN_CLASSA_NET 0xff000000 //A類網絡地址掩碼 #define IN_CLASSA_NSHIFT 24 //A類網絡地址偏移量 #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) //A類主機地址掩碼 #define IN_CLASSA_MAX 128 //A類網絡地址最大數/* B類地址 */ #define IN_CLASSB(a) ((((u32_t)(a)) & 0xc0000000UL) == 0x80000000UL) //是否為B類地址 #define IN_CLASSB_NET 0xffff0000 //B類網絡地址掩碼 #define IN_CLASSB_NSHIFT 16 //B類網絡地址偏移量 #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) //B類主機地址掩碼 #define IN_CLASSB_MAX 65536 //B類網絡地址最大數/* C類地址 */ #define IN_CLASSC(a) ((((u32_t)(a)) & 0xe0000000UL) == 0xc0000000UL) //是否為C類地址 #define IN_CLASSC_NET 0xffffff00 //C類網絡地址掩碼 #define IN_CLASSC_NSHIFT 8 //C類網絡地址偏移量 #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) //C類主機地址掩碼/* D類地址(組播) */ #define IN_CLASSD(a) (((u32_t)(a) & 0xf0000000UL) == 0xe0000000UL) //是否為D類地址 #define IN_CLASSD_NET 0xf0000000 //D類網絡地址掩碼 #define IN_CLASSD_NSHIFT 28 //D類網絡地址偏移量(高4位1110) #define IN_CLASSD_HOST 0x0fffffff //D類主機地址掩碼 #define IN_MULTICAST(a) IN_CLASSD(a) //是否為組播地址/* 保留未用地址 */ #define IN_EXPERIMENTAL(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) //是否為保留未用地址 /* 廣播地址 */ #define IN_BADCLASS(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) //是否為廣播地址

?

四、子網劃分與子網掩碼

標準IP地址使用網絡號和主機號兩層地址結構,當大量個人用戶和小型局域網用戶接入互聯網,即使為其分配一個C類網絡也會造成IP地址的大量浪費。隨著互聯網用戶的劇烈增長,IP地址的分配變得格外緊張,為每個物理網絡分配一個網絡號的做法變得很不現實。

因此,通過子網掩碼的方式將網絡進一步劃分為多個子網,將原來的二級結構變為三級結構。如果按照下面的方式進行劃分一個B類網絡來,則可以在整個網絡中劃分出254個子網,每個子網可以有254臺主機。這樣做可以大大減少標準IP編址中地址浪費現象。

? ? ? ? ? ?

網掩和IP地址一樣是一個32位數,其對應網絡地址(包括網絡號和子網號)的所有位置都為1,對應于主機地址的所有位置都為。按照上圖這種方式劃分一個B類網絡時,子網掩碼為255.255.255.0。

對于一個主機或者路由器,當接收到一個數據包時2。若要判斷發送數據的源主機和自己是否在同一網絡時,可以將源IP地址和子網掩碼進行與運算,得到源主機網絡地址,并同樣的方式得到自己的網絡地址,然后進行比較。

/* 判斷網段是否相同 */ #define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \(mask)->addr) == \((addr2)->addr & \(mask)->addr))

?使用了子網掩碼之后,各個子網也同樣存在廣播地址。下面這段代碼用于判斷IP地址是否為廣播地址

/* 判斷IP地址是不是廣播地址 */ u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) {u32_t addr2test;addr2test = addr->addr;/* 全0或全1 */if ((~addr2test == IP_ADDR_ANY_VALUE) || (addr2test == IP_ADDR_ANY_VALUE))return 1;/* 網絡接口不支持廣播 */else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0)return 0;/* 本機地址 */else if (addr2test == netif->ip_addr.addr)return 0;/* 子網廣播 */else if (ip_addr_netcmp(addr, &(netif->ip_addr), &(netif->netmask)) && ((addr2test & ~netif->netmask.addr) == (IP_ADDR_BROADCAST_VALUE & ~netif->netmask.addr)))return 1;elsereturn 0; }

?

五、NAT轉換協議

隨著互聯網的發送,IP地址短缺現象越來越嚴重,即使是擁有幾百臺的大型企業,也很難申請到幾個IP地址。為了解決這個問題,產生了局域網技術。對于局域網外部來說,所有主機公用一個合法IP地址。但是在局域網內部,用戶使用專用IP進行相互通信。

NAT協議的功能簡單來說:數據發送到外部時,將局域網內部主機的IP地址轉換成一個外部公用的IP地址;數據從外部接收時,將外部公用的IP地址轉換成局域網內部主機的IP地址。

NAT最常見的實現方式是端口多路復用,它基于TCP或UDP協議端口號以及IP地址來實現。

?

例如:某公司IP地址為222.178.197.21,局域網內部某主機IP地址為192.168.1.178,該主機正在使用TCP協議與某外部服務器進行通信,該外部主機IP地址為130.21.45.20。TCP雙方,內部主機TCP端口號為1234,外部主機TCP端口號為80。

具有NAT功能的路由器會在內部維護一個NAT轉換表,當路由器收到該分組時,會在表中為連接(192.168.1.78:1234,130.21.45.20:80)分配一個路由器內部的端口,假設為5678。數據發送到外部時,路由器會將數據包中的源IP和端口號,由192.168.1.78:1234改為222.178.197.21:5678;數據從外部接收時,路由器會將數據包中的目的IP和端口號,由222.178.197.21:5678改為192.168.1.78:1234。

這樣經過兩次NAT轉換,局域網用戶就實現了與外部網絡的數據交互。

?

六、數據包格式

Ethernet II幀格式

? ? 前導碼:由8個8‘b10101010構成。

? ? 以太網首部目的地址:目的設備的MAC物理地址。

? ? 源地址:發送設備的MAC物理地址。

? ? 類型:0x0800為IP協議包,0x0806為ARP協議包。

? ? 數據:數據長度最小為46字節,不足46字節時,填充至46字節。

? ? FCS: 就是CRC校驗值

?

其中,目的地址、源地址和類型,共同組成以太網首部

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

?

IP數據包和ARP數據包格式分別如下:

?

?

TCP數據幀封裝過程舉例:

? ? ? ? ? ? ?

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的LwIP之网络技术基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 俄罗斯女人裸体性做爰 | 最新地址在线观看 | 久久久久久久久久久久久久久久久久久 | 福利影院在线观看 | 国产精品一区二区三区四区在线观看 | 91网址入口 | 一区小视频 | 久草视频国产 | 999久久精品 | 捆绑裸体绳奴bdsm亚洲 | 国产又黄又猛又粗又爽 | 国产中文字幕久久 | 99久久久无码国产精品免费麻豆 | 日本xxxx免费 | 美女露出粉嫩尿囗让男人桶 | 青娱乐av | 国产伦精品一区二区三区视频我 | 亚洲一二三四区 | 日韩一级片中文字幕 | 免费看欧美成人a片无码 | 天天干天天操天天舔 | 精品国产黄色 | 蜜臀av性久久久久av蜜臀妖精 | 朝桐光av一区二区三区 | 欧美特级黄色大片 | 成人h片在线观看 | 九九视频国产 | 国产精品3p视频 | 影音先锋亚洲一区 | 丰满多毛的大隂户视频 | 成人不卡 | 激情五月激情综合网 | 日韩美女中文字幕 | 99久草| 久久香视频 | 欧美又粗又深又猛又爽啪啪九色 | 99国产在线观看 | 久久99久久98精品免观看软件 | 床戏高潮做进去大尺度视频网站 | www夜色| 亚欧日韩av | av在线不卡免费 | 国产亚洲av片在线观看18女人 | 干美女av | 成人午夜大片 | 一区二区三区国产在线 | 欧美激情aaa | 91精品国产综合久久久蜜臀图片 | 中文字幕人成乱码熟女香港 | 国产精品麻豆一区二区三区 | 一色av| 老熟妇午夜毛片一区二区三区 | 69xxx中国| 日韩专区在线播放 | 在线观看国产精品视频 | 欧美在线视频一区二区三区 | 无码一区二区三区免费视频 | 黄色一级片. | 婷婷俺去也 | av片毛片| 天堂网2020| 黑人操亚洲人 | 精品一区二区在线播放 | 天天干天天操天天摸 | 国产美女无遮挡永久免费观看 | 日本成人在线一区 | 北条麻妃一区二区三区四区五区 | 在线色站 | 免费精品在线 | 搡老熟女国产 | jizz免费在线观看 | 日韩电影网址 | 日韩国产成人无码av毛片 | 熟睡人妻被讨厌的公侵犯 | 波多野结衣免费视频观看 | 欧美一区二区三区久久妖精 | 精品乱子伦| 免费无码国产v片在线观看 三级全黄做爰在线观看 | 青青伊人久久 | 亚洲成人a v| 男人私人影院 | 日本中文字幕一区二区 | 亚洲国产精品一 | 日本三级韩国三级美三级91 | 亚洲欧洲成人精品久久一码二码 | 欧美激情一区在线 | 在线亚洲天堂 | 亚洲黄色影院 | 变态另类ts人妖一区二区 | 男女激情在线观看 | 午夜久久影院 | 日韩一区在线观看视频 | 久久久久久国产视频 | 国产三级av在线播放 | 一区www| 久久精品99久久 | 911国产视频 | 亚洲综合99| 国产一级淫片免费 |