繼續昨天的
設置端口TX/RX存儲信息,每個端口的基地址和屏蔽地址在這里確定并保存。W5500有一個通用寄存器,8個Socket寄存器去,以及對應每個Socket的收/發緩存區。每一個Socket的發送(接收)緩存區都在一個16KB的物理發送(接收)內存中,初始化分配為2KB。無論給每個Socket分配多大的收/發緩存,都必須在16位的偏移地址范圍內(從0x0000到0xFFFF)W5500有一個16KB發送內存用于Socket_n的發送緩存區,以及一個16KB的接收內存用于Socket_n接收緩存區。發送初始緩存被分配給了每個Socket發送緩存(2KB x 8 = 16KB),初始化分配的2KBSocket發送緩存,可以通過使用Socket發送緩存大小寄存器重新分配。一旦所有的Socket發送緩存大小寄存器配置完成,16KB的發送內存就會按照配置分配給每個Socket的發送緩存,并按照從Socket0到7順序分配。16KB的發送內存中分配了對應的發送緩沖區,用于為來自主機傳輸的數據做緩存。讀取內存同理。
四.應用層協議開發
以太網的應用層包括支撐協議和應用協議兩部分
支撐協議:域名服務系統(DNS),簡單網絡管理協議(SNMP)等,典型應用包括Web瀏覽,電子郵件,文件傳輸訪問,遠程登陸等。
應用協議:超文本傳輸協議(HTTP),簡單郵件傳輸協議(SMTP),文本傳輸協議(FTP),簡單文件傳輸協議(TFTP)和遠程登陸(Telnet)。
五.實例開發
1.TCP是TCP/IP體系中面向連接的傳輸層協議,他使用IP作為網絡層,提供全雙工的可靠交付的服務。(W5500在內部利用軟件實現了TCP/IP協議棧,即內部結構包含了物理層,數據鏈路層,網絡層和傳輸層)TCP建立通信的兩端,一段稱為服務器端,指網絡中能為用戶提供服務的計算機系統,另一端為客戶端,是與服務器相對應的,接受服務的一端,為客戶提供本地服務的程序。
這是一個通過互聯網進行交互的C/S模型,他是一個最典型最常用的通訊結構。此時服務器處于守候狀態,并偵聽客戶端的請求。客戶端發出請求,并請求經互聯網發送給服務器,一旦服務器接收到這個請求,就可以執行請求所制定的任務,并將執行的結果經互聯網互聯網回送給客戶。
TCP協議通過三個報文段完成連接的建立,這個過程叫做三次握手
第一次握手:建立連接時,客戶端發送SYN包(TCP/IP建立連接時使用的握手信號客戶機首先發出一個SYN消息,服務器使用SYN+ACK應答表示接收到了這個消息,最后客戶機再以ACK消息響應。)(seq = j)到服務器,并進入SYN_SEND狀態,等待服務器確認。
第二次握手:服務器收到SYN包,必須確認客戶的SYN(ack = j + 1),同時自己也發送一個SYN包,此時服務器進入SYN_RECV狀態。
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack = k + 1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
建立一個鏈接需要三次握手,但是終止一個鏈接要四次揮手,這是由于TCP的半關閉造成的。
1.第一次揮手:主動方發出了FIN位的報文,表示主動終止從本地到遠端的單向連接;此時,主動方進入FIN_WAIT1狀態,意思就是說他在等著遠端的FIN報文。
2.第二次揮手:遠端收到FIN后,會立即發送ACK;主動方接收到ACK之后,進入FIN_WAIT2狀態,所以FIN_WAIT1狀態持續時間非常短;此時遠端進入CLOSE_WAIT狀態,一條單向連接終止了,但另一條還沒有,處于HALF_CLOSE連接狀態。
3.第三次揮手:當遠端進行了必要的數據發送之后,他會發送FIN,表示從他出發的單向連接也要關閉;同時他進入LAST_ACK狀態。
4.第四次揮手:主動方收到FIN之后,回應一個ACK;遠端進入CLOSED狀態,連接關閉;主動方進入TIME_WAIT狀態;確保最后一個ACK沒有丟失,防止新連接占用剛剛關閉的主動方的地址端口,使網絡中流浪的老連接的分組被誤認為新連接的分組。
由于我們的工程中使用他作為客戶端使用,所以我們先看其作為TCP客戶端的數據收發
-
FPGA設計
+關注
關注
9文章
428瀏覽量
26604
發布評論請先 登錄
相關推薦
評論