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é)議應(yīng)用層學(xué)習(xí))

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

繼續(xù)昨天的

設(shè)置端口TX/RX存儲(chǔ)信息,每個(gè)端口的基地址和屏蔽地址在這里確定并保存。W5500有一個(gè)通用寄存器,8個(gè)Socket寄存器去,以及對(duì)應(yīng)每個(gè)Socket的收/發(fā)緩存區(qū)。每一個(gè)Socket的發(fā)送(接收)緩存區(qū)都在一個(gè)16KB的物理發(fā)送(接收)內(nèi)存中,初始化分配為2KB。無(wú)論給每個(gè)Socket分配多大的收/發(fā)緩存,都必須在16位的偏移地址范圍內(nèi)(從0x0000到0xFFFF)W5500有一個(gè)16KB發(fā)送內(nèi)存用于Socket_n的發(fā)送緩存區(qū),以及一個(gè)16KB的接收內(nèi)存用于Socket_n接收緩存區(qū)。發(fā)送初始緩存被分配給了每個(gè)Socket發(fā)送緩存(2KB x 8 = 16KB),初始化分配的2KBSocket發(fā)送緩存,可以通過(guò)使用Socket發(fā)送緩存大小寄存器重新分配。一旦所有的Socket發(fā)送緩存大小寄存器配置完成,16KB的發(fā)送內(nèi)存就會(huì)按照配置分配給每個(gè)Socket的發(fā)送緩存,并按照從Socket0到7順序分配。16KB的發(fā)送內(nèi)存中分配了對(duì)應(yīng)的發(fā)送緩沖區(qū),用于為來(lái)自主機(jī)傳輸?shù)臄?shù)據(jù)做緩存。讀取內(nèi)存同理。

四.應(yīng)用層協(xié)議開(kāi)發(fā)

以太網(wǎng)的應(yīng)用層包括支撐協(xié)議和應(yīng)用協(xié)議兩部分

支撐協(xié)議:域名服務(wù)系統(tǒng)(DNS),簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議(SNMP)等,典型應(yīng)用包括Web瀏覽,電子郵件,文件傳輸訪問(wèn),遠(yuǎn)程登陸等。

應(yīng)用協(xié)議:超文本傳輸協(xié)議(HTTP),簡(jiǎn)單郵件傳輸協(xié)議(SMTP),文本傳輸協(xié)議(FTP),簡(jiǎn)單文件傳輸協(xié)議(TFTP)和遠(yuǎn)程登陸(Telnet)。

五.實(shí)例開(kāi)發(fā)

1.TCP是TCP/IP體系中面向連接的傳輸層協(xié)議,他使用IP作為網(wǎng)絡(luò)層,提供全雙工的可靠交付的服務(wù)。(W5500在內(nèi)部利用軟件實(shí)現(xiàn)了TCP/IP協(xié)議棧,即內(nèi)部結(jié)構(gòu)包含了物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層和傳輸層)TCP建立通信的兩端,一段稱為服務(wù)器端,指網(wǎng)絡(luò)中能為用戶提供服務(wù)的計(jì)算機(jī)系統(tǒng),另一端為客戶端,是與服務(wù)器相對(duì)應(yīng)的,接受服務(wù)的一端,為客戶提供本地服務(wù)的程序。

這是一個(gè)通過(guò)互聯(lián)網(wǎng)進(jìn)行交互的C/S模型,他是一個(gè)最典型最常用的通訊結(jié)構(gòu)。此時(shí)服務(wù)器處于守候狀態(tài),并偵聽(tīng)客戶端的請(qǐng)求??蛻舳税l(fā)出請(qǐng)求,并請(qǐng)求經(jīng)互聯(lián)網(wǎng)發(fā)送給服務(wù)器,一旦服務(wù)器接收到這個(gè)請(qǐng)求,就可以執(zhí)行請(qǐng)求所制定的任務(wù),并將執(zhí)行的結(jié)果經(jīng)互聯(lián)網(wǎng)互聯(lián)網(wǎng)回送給客戶。

TCP協(xié)議通過(guò)三個(gè)報(bào)文段完成連接的建立,這個(gè)過(guò)程叫做三次握手

第一次握手:建立連接時(shí),客戶端發(fā)送SYN包(TCP/IP建立連接時(shí)使用的握手信號(hào)客戶機(jī)首先發(fā)出一個(gè)SYN消息,服務(wù)器使用SYN+ACK應(yīng)答表示接收到了這個(gè)消息,最后客戶機(jī)再以ACK消息響應(yīng)。)(seq = j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài),等待服務(wù)器確認(rèn)。

第二次握手:服務(wù)器收到SYN包,必須確認(rèn)客戶的SYN(ack = j + 1),同時(shí)自己也發(fā)送一個(gè)SYN包,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài)。

第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack = k + 1),此包發(fā)送完畢,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài),完成三次握手。

建立一個(gè)鏈接需要三次握手,但是終止一個(gè)鏈接要四次揮手,這是由于TCP的半關(guān)閉造成的。

1.第一次揮手:主動(dòng)方發(fā)出了FIN位的報(bào)文,表示主動(dòng)終止從本地到遠(yuǎn)端的單向連接;此時(shí),主動(dòng)方進(jìn)入FIN_WAIT1狀態(tài),意思就是說(shuō)他在等著遠(yuǎn)端的FIN報(bào)文。

2.第二次揮手:遠(yuǎn)端收到FIN后,會(huì)立即發(fā)送ACK;主動(dòng)方接收到ACK之后,進(jìn)入FIN_WAIT2狀態(tài),所以FIN_WAIT1狀態(tài)持續(xù)時(shí)間非常短;此時(shí)遠(yuǎn)端進(jìn)入CLOSE_WAIT狀態(tài),一條單向連接終止了,但另一條還沒(méi)有,處于HALF_CLOSE連接狀態(tài)。

3.第三次揮手:當(dāng)遠(yuǎn)端進(jìn)行了必要的數(shù)據(jù)發(fā)送之后,他會(huì)發(fā)送FIN,表示從他出發(fā)的單向連接也要關(guān)閉;同時(shí)他進(jìn)入LAST_ACK狀態(tài)。

4.第四次揮手:主動(dòng)方收到FIN之后,回應(yīng)一個(gè)ACK;遠(yuǎn)端進(jìn)入CLOSED狀態(tài),連接關(guān)閉;主動(dòng)方進(jìn)入TIME_WAIT狀態(tài);確保最后一個(gè)ACK沒(méi)有丟失,防止新連接占用剛剛關(guān)閉的主動(dòng)方的地址端口,使網(wǎng)絡(luò)中流浪的老連接的分組被誤認(rèn)為新連接的分組。

由于我們的工程中使用他作為客戶端使用,所以我們先看其作為TCP客戶端的數(shù)據(jù)收發(fā)

聲明:本文內(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)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TCP協(xié)議是什么

    在網(wǎng)絡(luò)通信的廣闊領(lǐng)域中,TCP(Transmission Control Protocol,傳輸控制協(xié)議)扮演著舉足輕重的角色。作為TCP/IP協(xié)議
    的頭像 發(fā)表于 10-09 13:54 ?212次閱讀

    串口服務(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 ?1249次閱讀

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

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

    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 ?376次閱讀

    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 ?3次下載

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

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

    通信網(wǎng)絡(luò)協(xié)議之UDP協(xié)議技術(shù)解析

    在通常的網(wǎng)絡(luò)協(xié)議中,TCP/IP協(xié)議是一個(gè)常見(jiàn)的示例,其中UDP和
    發(fā)表于 02-01 11:00 ?795次閱讀
    通信網(wǎng)絡(luò)<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>之UDP<b class='flag-5'>協(xié)議</b>技術(shù)解析

    tcpip協(xié)議作用 TCP/IP協(xié)議分為哪幾層

    TCP/IP協(xié)議是互聯(lián)網(wǎng)的基本協(xié)議,它定義了數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸方式和規(guī)則。它的作用是將數(shù)據(jù)從源主機(jī)傳輸?shù)侥繕?biāo)主機(jī),確保數(shù)據(jù)的可靠性和順序性。 TCP
    的頭像 發(fā)表于 01-25 10:34 ?2016次閱讀

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

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

    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 ?2297次閱讀
    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 協(xié)議深度解析

    頭部信息,此處是 TCP 協(xié)議 Hypertext Transfer Protocol:應(yīng)用層 HTTP 的信息 網(wǎng)絡(luò)分層 應(yīng)用層(Application Layer)
    的頭像 發(fā)表于 11-09 11:19 ?829次閱讀
    <b class='flag-5'>TCP</b> <b class='flag-5'>協(xié)議</b>深度解析

    TCP協(xié)議詳細(xì)解析

    TCPTCP/IP協(xié)議族中一個(gè)最核心的協(xié)議,它向下使用網(wǎng)絡(luò)
    的頭像 發(fā)表于 11-03 09:14 ?4115次閱讀
    <b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>詳細(xì)解析

    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)