TFTP

来源:https://www.cnblogs.com/shenxm/archive/2018/03/15/8577149.html
-Advertisement-
Play Games

TFTP ...


TFTP

1.tftp服務介紹
    1)TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與伺服器之間進行簡單文件傳輸的協議,提供不複雜、開銷不大的文件傳輸服務。
    2)tftp服務的埠號為69。
    3)TFTP是一個傳輸文件的簡單協議,它基於UDP協議而實現,但是我們也不能確定有些TFTP協議是基於其它傳輸協議完成的。
    4)此協議設計的時候是進行小文件傳輸的。因此它不具備通常的FTP的許多功能,它只能從文件伺服器上獲得或寫入文件,不能列出目錄,不進行認證,它傳輸8位數據。
    5)傳輸中有三種模式:
        1》netascii,這是8位的ASCII碼形式;
        2》另一種是octet,這是8位源數據類型;
        3》最後一種mail已經不再支持,它將返回的數據直接返回給用戶而不是保存為文件。
    
2.tftp傳輸過程
    1)任何傳輸起自一個讀取或寫入文件的請求,這個請求也是連接請求。
    2)如果伺服器批准此請求,則伺服器打開連接,數據以定長512位元組傳輸。
    3)每個數據包包括一塊數據,伺服器發出下一個數據包以前必須得到客戶對上一個數據包的確認。
    4)如果一個數據包的大小小於512位元組,則表示傳輸結束。如果數據包在傳輸過程中丟失,發出方會在超時後重新傳輸最後一個未被確認的數據包。
    5)通信的雙方都是數據的發出者與接收者,一方傳輸數據接收應答,另一方發出應答接收數據。
    6)大部分的錯誤會導致連接中斷,錯誤由一個錯誤的數據包引起。這個包不會被確認,也不會被重新發送,因此另一方無法接收到。如果錯誤包丟失,則使用超時機制。
    7)錯誤主要是由三種情況引起的:
        1》不能滿足請求。
        2》收到的數據包內容錯誤,而這種錯誤不能由延時或重發解釋。
        3》對需要資源的訪問丟失(如硬碟滿)。
    8)TFTP只在一種情況下不中斷連接,這種情況是源埠不正確,在這種情況下,指示錯誤的包會被髮送到源機。

3.tftp特點
    1)由於TFTP使用UDP,而UDP使用IP,IP可以還使用其它本地通信方法。因此一個TFTP包中會有以下幾段:本地媒介頭,IP頭,數據報頭,TFTP頭,剩下的就是TFTP數據了。
    2)TFTP在IP頭中不指定任何數據,但是它使用UDP中的源和目標埠以及包長度域。
    3)由於TFTP使用的包標記(TID)在這裡被用做埠,因此TID必須介於0到65,535之間。
    4)TFTP頭中包括兩個位元組的操作碼,這個碼指出了包的類型,大體上的TFTP包格式為:| Local Medium | Internet | Datagram | TFTP |
    
4.tftp優點
    1)TFTP可用於UDP環境;比如當需要將程式或者文件同時向許多機器下載時就往往需要使用到TFTP協議。
    2)TFTP代碼所占的記憶體較小,這對於較小的電腦或者某些特殊用途的設備來說是很重要的,這些設備不需要硬碟,只需要固化了TFTP、UDP和IP的小容量只讀存儲器即可。當電源接通後,設備執行只讀存儲器中的代碼,在網路上廣播一個TFTP請求。網路上的TFTP伺服器就發送響應,其中包括可執行二進位程式。設備收到此文件後將其放入記憶體,然後開始運行程式。這種方式增加了靈活性,也減少了開銷。
    
5.初始鏈接
    1)初始連接時候需要發出WRQ(請求寫入遠程系統)或RRQ(請求讀取遠程系統),收到一個確定應答,一個確定可以寫出的包或應該讀取的第一塊數據。
    2)通常確認包包括要確認的包的包號,每個數據包都與一個塊號相對應,塊號從1開始而且是連續的。因此對於寫入請求的確定是一個比較特殊的情況,因此它的包的包號是0。
    3)如果收到的包是一個錯誤的包,則這個請求被拒絕。
    4)創建連接時,通信雙方隨機選擇一個TID,因為是隨機選擇的,因此兩次選擇同一個ID的可能性就很小了。
    5)每個包包括兩個TID,發送者ID和接收者ID。這些ID用於在UDP通信時選擇埠,請求主機選擇ID的方法上面已經說過了,在第一次請求的時候它會將請求發到TID 69,也就是伺服器的69埠上。應答時,伺服器使用一個選擇好的TID作為源TID,並用上一個包中的TID作為目的ID進行發送。這兩個被選擇的ID在隨後的通信中會被一直使用。
    6)下例是一個寫入的例子,其中WRQ,ACK和DATA代表寫入請求,確認和數據。
        1》主機A向主機B發出WRQ,其中埠為69。
        2》B機向A機發出ACK,塊號為0,包括B和A的TID
            此時連接建立,第一個數據包以序列號1從主機開始發出。以後兩台主機要保證以開始時確定的TID進行通信。
            如果源ID與原來確定的ID不一樣,這個包會被認識為發送到了錯誤的地址而被拋棄。錯誤的包是被髮送到正確埠的,但是包本身有錯誤。
            設想發送方發出一個請求,這個請求在網路的那個設備中被覆製成兩個包,接收方先後接收到兩個包。接收方會認為為這是兩個獨立的請求,會返回兩個應答。
            當這兩個應答其中之一被接收到時,連接已經建立。第二個應答再到達時,這個包會被拋棄,而不會因為接收到第二個應答包而導致第一個建立的連接失敗。
6.正常終止
    1)傳輸的結束由DATA數據標記,其包括0-511個字元。這個包可以被其它數據包確認。
    2)接收方在發出對最後數據包的確認後可以斷開連接,當然,適當的等待是比較好的,如果最後的確定包丟失可以再次傳輸。
    3)如果發出確認後仍然收到最後數據包,可以確定最後的確認丟失。發送最後一個DATA包的主機必須等待對此包的確認或超時。
    4)如果響應是ACK,傳輸完成。如果發送方超時並不准備重新發送並且接收方有問題或網路有問題時,發送也正常結束。當然實現時也可以是非正常結束,但無論如何連接都將被關閉。
    
7.早終結
    如果請求不能被滿足,或者在傳輸中發生錯誤,需要發送ERROR包。這僅是一種傳輸友好的方式,這種包不會被確認也不會被重新傳輸,因此這種包可能永遠不會被接收到。因此需要用超時來偵測錯誤。

8.TFTP數據包
    TFTP支持五種類型的包,已經說明這五種類型的包:
    包頭中包括了這個包所指定的操作碼。
        opcode operation
        1.Read request (RRQ)
        2.Write request (WRQ)
        3.Data (DATA)
        4.Acknowledgment (ACK)
        5.Error (ERROR)

9.tftp命令
    man tftp
    tftp - Trivial File Transfer Protocol client
    tftp是一個客戶端,是一個不重要輕量級的文件傳輸協議,用於傳輸文件到遠程主機上或從遠程機器上下載數據。
    tftp [-4][-6][-v][-l][-m mode] [host [port]] [-c command]

10.in.tftpd命令
    man in.tftpd
    tftpd - Trivial File Transfer Protocol server
    in.tftpd [options...]  directory...
    
11.tftp實現
    tftp包有:tftp,tftp-server
    rpm -ql tftp
        /usr/bin/tftp
        /usr/share/doc/tftp-0.49
        /usr/share/doc/tftp-0.49/CHANGES
        /usr/share/doc/tftp-0.49/README
        /usr/share/doc/tftp-0.49/README.security
        /usr/share/doc/tftp-0.49/README.security.tftpboot
        /usr/share/man/man1/tftp.1.gz
    rpm -ql tftp-server
        /etc/xinetd.d/tftp
        /usr/sbin/in.tftpd
        /var/lib/tftpboot(庫)
        /usr/share/doc/tftp-server-0.49
        /usr/share/doc/tftp-server-0.49/CHANGES
        /usr/share/doc/tftp-server-0.49/README
        /usr/share/doc/tftp-server-0.49/README.security
        /usr/share/doc/tftp-server-0.49/README.security.tftpboot
        /usr/share/man/man8/in.tftpd.8.gz
        /usr/share/man/man8/tftpd.8.gz

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天在微軟開發人員官網上學習asp.net mvc5入門的時候,遇到一個棘手的問題,我是按照教程一步一步操作的,但期間遇到一個自己覺得莫名其妙的問題,教程中也沒有提到這個, 在添加新欄位這一章節,跟著教程操作到“update-database”後,程式包管理控制台報了一個錯誤,“Cannot att ...
  • 1、安裝 IIS(Windows專業版自帶,如果是server版系統,需要通過功能管理器安裝(無需下載)) urlrewrite插件,https://www.iis.net/downloads/microsoft/url-rewrite ARR插件(Application Request Routi ...
  • 小巧便捷配置簡單的小票雲列印是外賣微信小程式列印小票的首選方案,飛鵝雲列印是很受歡迎的雲列印服務商,本文詳細介紹瞭如何通過開放API與飛鵝雲列印對接。 ...
  • 前言 小伙伴們, 大家好,我是Rector。 最近Rector忙於換工作,沒有太多時間來更新我們的ASP.NET MVC 5系列文章 [\[一步一步創建ASP.NET MVC5程式Repository+Autofac+Automapper+SqlSugar\]][4],直到現在才擠些時間趕緊更新一篇 ...
  • 刪除網站下的PrecompiledApp.config文件即可。 ...
  • 先決條件 本教程假定RabbitMQ已經安裝,並運行在 標準埠(5672)。如果你使用不同的主機、埠或證書,則需要調整連接設置。 從哪裡獲得幫助 如果您在閱讀本教程時遇到困難,可以通過郵件列表 "聯繫我們" 。 1.介紹 RabbitMQ是一個消息代理:它接受並轉發消息。您可以把它想象成一個郵局 ...
  • 在機房運行的四台伺服器中均出現了藍屏dmp文件,經過整理髮現CDMS主備伺服器最近(2018年1月開始)藍屏的dmp很多。經過自己的學習分析發現不足以找到先關的原因和處理方法,希望得到大牛們的幫助。以儘快解決此藍屏問題。 一、CDMS的兩台伺服器是現在網路運行中十分重要的伺服器,感謝廣大博友大牛們的 ...
  • 答案是我在這個網站上找到的: 執行 ~~~~~ xset dpms force off ~~~~~ 命令就可以解決掉這個問題。 再次運行 svgatest 程式,得到了預期的結果,perfect! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...