Deepin下tftp客户端传送升级文件失败问题分析
一, 安裝過程
sudo apt-get install tftpd-hpa 命令下載tftp服務(wù)端
udo apt-get install tftp-hpa 命令下載客戶端
二,使用中的問題
開始通過tftp 客戶端向服務(wù)器傳送文件升級(jí),發(fā)現(xiàn)設(shè)備升級(jí)不成功,分析為數(shù)據(jù)異常。
三,問題分析
于是進(jìn)行了抓包分析
?
從圖上可以看出,傳輸過程中,tftp client 為數(shù)據(jù)增加了00操作。即為0d后面多了一個(gè)00。
默認(rèn)傳輸模式為netascii
tftp> mode
Using netascii mode to transfer files.
tftp>
修改為binary后,可以進(jìn)學(xué)傳輸
tftp> binary
tftp> mode
Using octet mode to transfer files.
tftp>
| 模式名稱 | 模式含義 | 說明 |
| netascii | 文本傳輸模式,按照一個(gè)字節(jié)8位解析 | 文本模式 |
| octet | 二進(jìn)制模式,數(shù)據(jù)無需解析 | 二進(jìn)制模式 |
| | 已過時(shí),不使用 | 已過時(shí) |
tftp -m binary 192.168.1.6 -c put RTK0_MAGIC_upgradefile.bin
四,深入源碼
windows下tftpd32程序,同樣配置為netascii模式,但沒有問題,那至到底實(shí)現(xiàn)上差異在哪里呢, 必須的深入源碼
# apt list tftp
正在列表... 完成
tftp/未知 0.17-22 amd64
tftp/未知 0.17-22 i386
參考源碼 Index of /pub/software/network/tftp/
實(shí)現(xiàn):(還是看代碼直接且舒服) 原因是將OD(cr)轉(zhuǎn)換為 cr 00 。
?
RFC參考
https://www.rfc-editor.org/rfc/rfc1350.txt
資料參考
https://oomake.com/question/1831481
A host which receives netascii mode data must translate the data to its own format.
例如,使用EBCDIC作為其本機(jī)編碼的主機(jī)可能會(huì)將netascii轉(zhuǎn)換為該編碼,但會(huì)單獨(dú)留下“八位字節(jié)”數(shù)據(jù)。 如果您在使用LF進(jìn)行行結(jié)束的Unix(或其他)系統(tǒng)上實(shí)現(xiàn)TFTP服務(wù)器,則需要為netascii傳輸添加CR(以及將文件中的實(shí)際CR字符轉(zhuǎn)換為CR / NUL)序列。
windows下tftpd32程序, 對(duì)于模式?jīng)]有額外配置,表現(xiàn)為netascii模式,實(shí)際均為binary (octet),所以以前沒有出過這樣的問題
總結(jié)
以上是生活随笔為你收集整理的Deepin下tftp客户端传送升级文件失败问题分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: deepin终端配置为英文
- 下一篇: 对家庭网络设备行业的理解