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

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

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

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

學(xué)FPGA,慢慢來(lái) ? 2017-12-18 10:22 ? 次閱讀

一.為什么會(huì)有TCP/IP協(xié)議

首先呢,TCP/IP不是一個(gè)協(xié)議,而是一個(gè)協(xié)議族的統(tǒng)稱。他們的存在是為了在將電腦聯(lián)合起來(lái)的時(shí)候,利用他們可以和其他的計(jì)算機(jī)終端做自由的交流。

二.TCP/IP協(xié)議分層

1.TCP/IP族按照層次由上到下,層層包裝。每一層都有自己的功能,每一層都有下一層的支持。而用戶接觸的,只是最上邊一層,沒(méi)有感覺(jué)到下面一層層,但是理解的時(shí)候要從最下層由下向上來(lái)理解。最上邊是應(yīng)用層,這里有http,ftp等熟悉的協(xié)議。而第二層就是傳輸層,TCP和UDP協(xié)議就是在這個(gè)層次。第三層是網(wǎng)絡(luò)層,IP協(xié)議就在這里,他負(fù)責(zé)對(duì)數(shù)據(jù)加上IP地址和其他數(shù)據(jù)以確定傳輸?shù)哪繕?biāo)。第四層叫做數(shù)據(jù)鏈路層,這個(gè)層次為待傳輸?shù)臄?shù)據(jù)加上一個(gè)以太網(wǎng)協(xié)議頭,并進(jìn)行CRC編碼,為最后的數(shù)據(jù)傳輸做準(zhǔn)備。再往下就是硬件層次,負(fù)責(zé)網(wǎng)絡(luò)的傳輸,這個(gè)層次的定義包括網(wǎng)線的格式,網(wǎng)卡的定義等等。

2.發(fā)送協(xié)議的主機(jī)從上到下將數(shù)據(jù)按照協(xié)議封裝,而接收數(shù)據(jù)的主機(jī)則按照協(xié)議從得到的數(shù)據(jù)包解開(kāi),最后拿到需要的數(shù)據(jù)。這種結(jié)構(gòu)非常像棧,所以我們也把TCP/IP協(xié)議族稱為TCP/IP棧。

3.每一層都是為了完成一種功能,為了實(shí)現(xiàn)這些功能,需要大家每個(gè)人都要遵循共同的規(guī)則,而這個(gè)規(guī)則就叫做“協(xié)議”?;ヂ?lián)網(wǎng)的每一層都定義了許多協(xié)議。而這些協(xié)議的總稱,就叫做“互聯(lián)網(wǎng)協(xié)議”,他們是互聯(lián)網(wǎng)的核心。

三.基本常識(shí)

1.互聯(lián)網(wǎng)地址(IP地址):網(wǎng)絡(luò)上的每一個(gè)節(jié)點(diǎn)都必須有一個(gè)獨(dú)立的Internet地址,也叫IP地址。通常使用的IP地址是一個(gè)32bit的數(shù)字,這32bit的數(shù)字分成四組,也就是常見(jiàn)的255.255.255.255的樣式。需注意,IP地址是網(wǎng)絡(luò)號(hào)+主機(jī)號(hào)的組合,這十分重要。

2.域名系統(tǒng):域名系統(tǒng)就是一個(gè)分布的數(shù)據(jù)庫(kù),它提供將主機(jī)名(就是網(wǎng)址)轉(zhuǎn)換成IP地址的服務(wù)。

3.RFC:TCP/IP協(xié)議的標(biāo)準(zhǔn)文檔。他一共有4000多個(gè)協(xié)議的定義。

4.端口號(hào):這個(gè)號(hào)碼是用在TCP,UDP上的一個(gè)邏輯號(hào)碼,并不是一個(gè)硬件端口。平時(shí)所說(shuō)的把某某的端口封掉,也只是在IP層次把帶有這個(gè)號(hào)碼的IP包濾掉了而已。

5.應(yīng)用編程接口(API):現(xiàn)常用的編程接口有socket和TLI。主要是提供應(yīng)用程序和開(kāi)發(fā)人員以訪問(wèn)一組例程功能,而無(wú)需考慮其底層的源代碼是為何,或理解其內(nèi)部工作機(jī)制的細(xì)節(jié)。

四.實(shí)體層

就是把電腦連接起來(lái)的物理手段。它主要規(guī)定了網(wǎng)絡(luò)的一些電氣特性,作用是負(fù)責(zé)傳送0和1的電信號(hào)。

五.數(shù)據(jù)鏈路層

單純的0和1沒(méi)有任何意義,必須規(guī)定解讀方式:多少個(gè)電信號(hào)算一組?每個(gè)信號(hào)為有何意義?

這就是“連接層”的功能,他在“實(shí)體層”的上方,確定了0和1的分組方式。

數(shù)據(jù)鏈路層有三個(gè)目的:

1.為IP模塊發(fā)送和接收IP數(shù)據(jù)報(bào)。

2.為ARP模塊發(fā)送ARP請(qǐng)求和接收ARP應(yīng)答。

3.為RARP發(fā)送RARP請(qǐng)求和接收RARP應(yīng)答。

注:ARP:地址解析協(xié)議,是用IP地址換MAC地址(媒體訪問(wèn)地址,或稱為物理地址,硬件地址。MAC地址是網(wǎng)卡決定的,是固定的,共48位,實(shí)際上就是適配器地址,IP地址就如同一個(gè)職位,而MAC地址則好像是去應(yīng)聘這個(gè)職位的人才,職位既可以讓甲坐,也可以讓乙坐,同樣的道理一個(gè)結(jié)點(diǎn)的IP地址對(duì)于網(wǎng)卡是不做要求,基本上什么樣的廠家都可以用,也就是說(shuō)IP地址與MAC地址并不存在著綁定關(guān)系。)的一種協(xié)議,而RARP則叫做逆地址解析協(xié)議。

以太網(wǎng)的定義是指數(shù)字設(shè)備公司( Digital Equipment Corp.)、英特爾公司(Intel Corp.)和Xerox公司在1982年聯(lián)合公布的一個(gè)標(biāo)準(zhǔn)。以太網(wǎng)規(guī)定,一組電信號(hào)構(gòu)成一個(gè)數(shù)據(jù)包,叫做“幀”,每一幀分成兩個(gè)部分:標(biāo)頭(head)和數(shù)據(jù)(data)。

標(biāo)頭包含了數(shù)據(jù)包的一些說(shuō)明項(xiàng),比如發(fā)送者,接受者,數(shù)據(jù)類型等;“數(shù)據(jù)”包括了數(shù)據(jù)包的具體內(nèi)容。標(biāo)頭的長(zhǎng)度固定為18字節(jié)。數(shù)據(jù)的長(zhǎng)度最長(zhǎng)為1500字節(jié),最短為46字節(jié)。因此,整個(gè)“幀”最長(zhǎng)為1518字節(jié),最短為64字節(jié)。如果數(shù)據(jù)很長(zhǎng),就必須分割成多個(gè)幀進(jìn)行發(fā)送。

以太網(wǎng)規(guī)定,連入網(wǎng)絡(luò)的所有設(shè)備,都必須具有“網(wǎng)卡”接口。數(shù)據(jù)包必須是從一塊網(wǎng)卡,傳送到另一塊網(wǎng)卡。網(wǎng)卡的地址,就是數(shù)據(jù)包的發(fā)送地址和接收地址,這就是MAC地址。

定義地址只是第一步,在這之后要解決一塊網(wǎng)卡如何知道另一塊網(wǎng)卡的MAC地址?回答是一種ARP協(xié)議。而在以太網(wǎng)數(shù)據(jù)包必須知道接收方的MAC地址,然后才能發(fā)送。

之后就算有了MAC地址,系統(tǒng)如何才能把數(shù)據(jù)包準(zhǔn)確的發(fā)送到接收方?,而以太網(wǎng)采用用了一種很原始的方式,即向本網(wǎng)絡(luò)內(nèi)的所有計(jì)算機(jī)發(fā)送,讓每臺(tái)計(jì)算機(jī)自己判斷,是否為接收方。他們讀取這個(gè)包的“標(biāo)頭”,找到接收方的MAC地址,然后與自身的MAC地址進(jìn)行比較,如果兩者相同,就接受這個(gè)包,作進(jìn)一步處理,否則就丟棄這個(gè)包,這種發(fā)送方式就叫做廣播。

有了數(shù)據(jù)包的定義,網(wǎng)卡的MAC地址,廣播的發(fā)送方式,“連接層”就可以在多臺(tái)計(jì)算機(jī)之間傳輸數(shù)據(jù)。

六.網(wǎng)絡(luò)層

1.由來(lái):以太網(wǎng)協(xié)議,依靠MAC地址發(fā)送數(shù)據(jù)。但是,以太網(wǎng)采用廣播來(lái)發(fā)送數(shù)據(jù)包,效率低,而且局限在發(fā)送者所在的子網(wǎng)絡(luò)。因此,要找到一種方法,能夠區(qū)分那些MAC地質(zhì)屬于同一個(gè)子網(wǎng)絡(luò),那些不是。如果是同一個(gè)子網(wǎng)絡(luò),就采用廣播,否則采用路由(...)方式發(fā)送,而這是MAC地址無(wú)法實(shí)現(xiàn)的,他至于廠商有關(guān),與所處網(wǎng)絡(luò)無(wú)關(guān),這就導(dǎo)致了“網(wǎng)絡(luò)層”的誕生,他的作用就是引用一套新的地址,使得我們能夠區(qū)分不同的計(jì)算機(jī)是否屬于同一個(gè)子網(wǎng)絡(luò)。而這套地址就叫做“網(wǎng)絡(luò)地址”,簡(jiǎn)稱“網(wǎng)址”。于是,“網(wǎng)絡(luò)層”出現(xiàn)之后,每臺(tái)計(jì)算機(jī)有了兩種地址,一種是MAC地址,另一種是網(wǎng)絡(luò)地址。兩種地址之間沒(méi)有任何聯(lián)系,MAC地址是綁定在網(wǎng)卡上的,網(wǎng)絡(luò)地址則是管理員分配的,他們是隨機(jī)組合在一起的。

網(wǎng)絡(luò)地址幫助我們確定計(jì)算機(jī)所在的子網(wǎng)絡(luò),MAC地址則將數(shù)據(jù)報(bào)送到該子網(wǎng)絡(luò)中的目標(biāo)網(wǎng)卡,因此,先處理網(wǎng)絡(luò)地址,在處理MAC地址。

2.IP協(xié)議

規(guī)定網(wǎng)絡(luò)地址的協(xié)議,叫做IP協(xié)議。他所規(guī)定的地址,就被稱為IP地址。我們采用的一般是IPv4.這個(gè)版本規(guī)定,網(wǎng)絡(luò)地址由32個(gè)二進(jìn)制位組成。習(xí)慣上分為四段,如255.255.255.255,這個(gè)地址分成兩部分,前一部分代表網(wǎng)絡(luò),后一部分代表主機(jī)。但是單從IP地址,我們無(wú)法分辨網(wǎng)絡(luò)部分。因此,我們需要一個(gè)參數(shù)來(lái)判斷兩臺(tái)計(jì)算機(jī)是否屬于同一個(gè)子網(wǎng)絡(luò),這個(gè)參數(shù)就是“子網(wǎng)掩碼”,它在形式上等同于IP地址,也是一個(gè)32位的二進(jìn)制數(shù),他的網(wǎng)絡(luò)部分全部為1,主機(jī)部分為0.知道子網(wǎng)掩碼我們就可以判斷兩個(gè)IP地址是否屬于同一個(gè)自網(wǎng)絡(luò)下,方法就是將兩個(gè)IP地址與子網(wǎng)掩碼分別進(jìn)行AND運(yùn)算。,比較結(jié)果是否相同,如果是的話,就表明在同一個(gè)子網(wǎng)絡(luò)中。

所以,IP協(xié)議的作用主要有兩個(gè),一個(gè)是為每一臺(tái)計(jì)算機(jī)分配IP地址,另一個(gè)是確定那些地址在同一個(gè)子網(wǎng)絡(luò)。

3.IP數(shù)據(jù)包

根據(jù)IP協(xié)議發(fā)送的數(shù)據(jù),就叫做IP數(shù)據(jù)包。其中包含IP地址信息。但是由于以太網(wǎng)數(shù)據(jù)包只包含MAC地址,并沒(méi)有IP地址欄,但我們也并不需要為他添加一個(gè)欄位,我們將IP數(shù)據(jù)包直接放進(jìn)以太網(wǎng)數(shù)據(jù)包的“數(shù)據(jù)”中,而不用修改以太網(wǎng)的規(guī)格,這就是互聯(lián)網(wǎng)分層的好處:上層的變動(dòng)完全不涉及下層的結(jié)構(gòu)。IP數(shù)據(jù)也分為“標(biāo)頭”和“數(shù)據(jù)”兩部分,"標(biāo)頭"主要是版本,長(zhǎng)度,IP地址,“數(shù)據(jù)”部分則是IP數(shù)據(jù)包的具體內(nèi)容。他放在以太網(wǎng)數(shù)據(jù)包后,就是這樣

IP數(shù)據(jù)包的“標(biāo)頭”部分的長(zhǎng)度為20到60字節(jié),整個(gè)數(shù)據(jù)包的總長(zhǎng)度最大為65535字節(jié),因此,一個(gè)IP數(shù)據(jù)包的“數(shù)據(jù)”部分最長(zhǎng)為65515字節(jié)。

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

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598898
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18817

    瀏覽量

    298482
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    串口服務(wù)器和TCP/IP協(xié)議是什么關(guān)系

    串口服務(wù)器與TCP/IP協(xié)議之間存在著緊密而復(fù)雜的關(guān)系。這種關(guān)系主要體現(xiàn)在串口服務(wù)器如何利用TCP/I
    的頭像 發(fā)表于 08-25 17:35 ?1088次閱讀

    文了解TCP/IP協(xié)議

    TCP/IP協(xié)議是現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)通信的基礎(chǔ),是互聯(lián)網(wǎng)及局域網(wǎng)廣泛使用的協(xié)議。TCP/
    的頭像 發(fā)表于 08-07 15:38 ?364次閱讀
    <b class='flag-5'>一</b>文了解<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b>

    華納云:TCP IP協(xié)議的發(fā)展和優(yōu)勢(shì)

    TCP/IP(Transmission Control Protocol/Internet Protocol,傳輸控制協(xié)議/互聯(lián)網(wǎng)協(xié)議)是互聯(lián)網(wǎng)和現(xiàn)代計(jì)算機(jī)網(wǎng)絡(luò)的基礎(chǔ)
    的頭像 發(fā)表于 07-25 16:49 ?248次閱讀

    TCP IP協(xié)議屬性設(shè)置中的IP配置

    的分配、子網(wǎng)掩碼的設(shè)置、網(wǎng)關(guān)和DNS的配置等方面,旨在為網(wǎng)絡(luò)工程師和IT專業(yè)人士提供科學(xué)、學(xué)術(shù)且專業(yè)的指導(dǎo)。 1. TCP/IP協(xié)議概述 TCP/I
    的頭像 發(fā)表于 07-23 10:10 ?314次閱讀

    TCP/IP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_中文

    電子發(fā)燒友網(wǎng)站提供《TCP/IP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_中文.pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:28 ?2次下載

    LwIP協(xié)議源碼詳解—TCP/IP協(xié)議的實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《LwIP協(xié)議源碼詳解—TCP/IP協(xié)議的實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:22 ?1次下載

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

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

    TCP/IP協(xié)議數(shù)據(jù)的處理流程

    TCP/IP協(xié)議的設(shè)計(jì)目標(biāo)是提供種通用、靈活且可擴(kuò)展的協(xié)議體系,使得不同種類的設(shè)備和系統(tǒng)能夠互相通信,實(shí)現(xiàn)互聯(lián)網(wǎng)的互聯(lián)互通。
    發(fā)表于 02-03 16:30 ?1086次閱讀
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b>數(shù)據(jù)的處理流程

    tcp/ip協(xié)議包含哪幾層?tcp和udp有什么區(qū)別?

    tcp/ip協(xié)議包含哪幾層?tcp和udp有什么區(qū)別? TCP/IP
    的頭像 發(fā)表于 11-29 17:40 ?926次閱讀

    linux TCP/IP 協(xié)議源碼分析

    socket結(jié)構(gòu)體現(xiàn)。這部分的文件 主要有:/net/socket.c /net/protocols.c etc INET socket層:BSD socket是個(gè)可以用于各種網(wǎng)絡(luò)協(xié)議的接口,而當(dāng)用于tcp
    的頭像 發(fā)表于 11-09 15:04 ?2077次閱讀
    linux <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é)議通信接口的實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《TCP/IP 協(xié)議通信接口的實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 09:21 ?1次下載
    <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b> <b class='flag-5'>協(xié)議</b>通信接口的實(shí)現(xiàn)

    tcp/ip協(xié)議和opc協(xié)議對(duì)比詳解

    TCP/IP協(xié)議和OPC協(xié)議是兩種重要的網(wǎng)絡(luò)協(xié)議,它們?cè)诓煌木W(wǎng)絡(luò)層級(jí)上運(yùn)行,并為數(shù)據(jù)傳輸和通信提供了不同的功能。
    的頭像 發(fā)表于 10-21 10:11 ?1171次閱讀

    TCP/IP協(xié)議和OPC協(xié)議的區(qū)別

    隨著計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)通信已經(jīng)成為現(xiàn)代工業(yè)自動(dòng)化控制系統(tǒng)中不可或缺的部分。在眾多的網(wǎng)絡(luò)通信協(xié)議中,傳輸控制協(xié)議TCP)和網(wǎng)際協(xié)議
    的頭像 發(fā)表于 10-20 17:34 ?3971次閱讀

    基于PIC單片機(jī)的TCP/IP協(xié)議實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于PIC單片機(jī)的TCP/IP協(xié)議實(shí)現(xiàn).ppt》資料免費(fèi)下載
    發(fā)表于 10-20 10:03 ?2次下載
    基于PIC單片機(jī)的<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>實(shí)現(xiàn)

    中文應(yīng)用筆記《利用 MPLAB? Harmony v3 TCP/IP 協(xié)議在SAM E54 MCU上實(shí)現(xiàn)文件傳輸協(xié)議

    提供的標(biāo)準(zhǔn)Internet協(xié)議,用于將文件從個(gè)設(shè)備傳輸?shù)搅?b class='flag-5'>一個(gè)設(shè)備。它是TCP/IP協(xié)議
    的頭像 發(fā)表于 09-26 17:30 ?7599次閱讀
    中文應(yīng)用<b class='flag-5'>筆記</b>《利用 MPLAB? Harmony v3 <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b> <b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>在SAM E54 MCU上實(shí)現(xiàn)文件傳輸<b class='flag-5'>協(xié)議</b>》