引言

从一台计算机向另一台计算机传送文件是在连网或互联网环境中最常见的任务。而FTP和TFTP就是这样的协议。

关于文件传输协议FTP?

端口21
使用服务TCP

【FTP模型】

FTP连接?

1.控制连接
a.服务器在熟知端口21发出被动打开命令,等待客户。
b.客户使用临时端口发出主动打开命令。
2.数据连接
数据连接使用服务器端的熟知端口20。
a.客户使用一个临时端口发出被动打开。
b.客户使用PORT命令把这个端口号发送给服务器。
c.服务器收到这个端口号,并使用熟知端口20和临时端口号发出主动打开。

FTP通信?

两台计算机可以使用不同的操作系统、不同的字符集、不同的文件结构以及不同的文件格式。FTP必须使这种异构性得到兼容。
FTP使用了两种解决问题的方法,一种用于控制连接,一种用于数据连接。
1.在控制连接上的通信
它使用NVT字符集


【图示】
2.在数据连接上的通信
异构性问题可以通过文件类型、数据结构以及传输方式三个通信属性来解决。
文件类型(ASCLL文件、EBCDIC文件、图像文件,非打印,TELNET)
数据结构
传输方式(流方式、块方式、压缩方式)

【图示】

FTP命令处理?

接入命令(USER、PASS,ACCT,REIN,QUIT,ABOR)
文件管理命令(CWD,CDUP,DELE,LIST,PWD等等)
数据格式化命令(TYPE,STRU,MODE)
端口定义命令(PORT,PASV)
文件传送命令
杂项命令(HELP、SYST)
响应
每一个FTP命令至少产生一个响应,由三位数字的数以及跟随后面的文本。

FTP文件传送?

从服务器把文件复制给客户,这称为读取文件。
从客户把文件复制到服务器称为存储文件。
从服务器向客户发送目录列表或文件名。是在LIST命令的监督下完成的。

【图例控制连接与数据连接】

简单文件传送协议(TFTP)?

有时候我们只需要复制一个文件而不需要FTP协议的全部功能。简单文件传送协议应运而生。
TFTP端口69
使用服务UDP

TFTP的报文?

共有五种类型,RRQ,WRQ,DATA,ACK和ERROR。

1.RRQ,读请求报文
2.WRQ,写请求
3.DATA,数据报文
4.ACK,确认报文
5.ERROR,错误报文
差错号
0    未定义
1    文件未找到
2    存取被破坏
3    磁盘满
4    非法操作
5    未知端口
6    文件已存在
7    无此用户

TFTP连接?

TFTP使用UDP服务。UDP不提供连接建立和终止,所以TFTP自己建立连接。

TFTP数据传送?

UDP没有流量控制和差错控制机制。TFTP必须创建流量控制和差错控制机制,以便传送由连续数据块构成的文件。
1.流量控制
TFTP使用DATA报文发送数据块,并等待ACK报文。若在超时之前发送端就收到了确认,它就发送下一个块。
读取文件,发送RPQ报文。存储文件发送WRQ报文。

2.差错控制
对称的,发送端和接收端都使用超时。

UDP端口?

【UDP通信过程】

TFTP案例?

客户打算读取名叫file1的2000字节的文件的内容。客户发送RRQ报文。服务器发送第一个报文,携带第一个512字节,它原封不动地被接收和确认了。
携带第二个512字节的数据块丢失了。超时后,服务器重新传送这个数据块,被收到了。
第三个512收到了,但确认丢失了。超时后,接收端重新确认。携带剩下464字节的最后一个数据块收到了,但受到损伤,因此客户简单地把它丢弃。超时后,服务器重新传送。
连接终止。


【图解】
tips:通过这个流程,在大脑中过了一遍,更加清晰了它的具体过程。

TCP/IP FTP/TFTP的更多相关文章

  1. TCP/IP 目录导航

    用了近二十天的时间,把一本800页的书看完,感觉收获还是很大的.对网络,对这些协议有了深刻的认识! 知道了路由器与交换机的区别. 知道了IP地址的特点. 知道了网络的分层,物理层,数据链路层,网络层, ...

  2. 聊聊Socket、TCP/IP、HTTP、FTP及网络编程

    1 这些都是什么 既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,另一个是如何进行可靠高效的数据传输.这里就要使用到TCP/IP协议. 1.1 TCP ...

  3. SOCKET,TCP/IP,UDP,HTTP,FTP总结

    一.TCP/UDP,SOCKET,HTTP,FTP简析   TCP/IP是个协议组(主要解决数据如何在网络中传输),可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议 ...

  4. 关于Socket、TCP/IP、HTTP、FTP及网络编程

    来源:陶邦仁 链接:http://blog.jobbole.com/99694/ 既然是网络传输,涉及几个系统之间的交互,那么首先要考虑的是如何准确的定位到网络上的一台或几台主机,再者如何进行可靠高效 ...

  5. Socket,TCP/IP,UDP,HTTP,FTP

    1.Socket:套接字,是传输层协议的一种编程API 作用:用于描述IP地址和端口,区分来自不同应用程序的通信,实现数据传输的并发服务 JDK  Socket:在java.net包下有两个类Sock ...

  6. TCP/IP详解学习笔记(11)-- TFTP:简单文本传输协议,BOOTP:引导程序协议

    1.TFTP:      TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,基于UD ...

  7. 网络通信 --> Socket、TCP/IP、HTTP、FTP及网络编程

    Socket.TCP/IP.HTTP.FTP及网络编程 聊聊Socket.TCP/IP.HTTP.FTP及网络编程

  8. 理解TCP/IP,SOCKET,HTTP,FTP,RMI,RPC,webservic

    TCP/IP:网络宽带,传输数据的基础协议,所有得数据要在网络上传输都是基于TCP/IP协议(或UDP),才能送达到指定的目的地(IP,服务器硬件地址). SOCKET:SOCKET只是面对编程人员的 ...

  9. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

随机推荐

  1. ASP.NET中常用重置数据的方法

    aspx: <asp:Repeater ID="rptProlist" runat="server" onitemdatabound="rptP ...

  2. day-8

    /* 倒数8天了 今天高考报名 两个班主任都来了23333 然后填班主任姓名就尴尬了23333 上午考试 挺不错的题目 都不是很水 但需要思考 而我是一脸的懵逼~~ 下午整理各种板子 主要是图论的 最 ...

  3. git使用备忘

    简单的记录下现在使用git的时候,暂时或者常用到的命令,纯粹自己备忘,没用到过的命令就不写了,日后有用到了在补充. 1.把远程仓库克隆到本地:git clone 远程地址 2.分支操作 新建分支:gi ...

  4. Big Data 應用:第二季(4~6月)台湾地区Game APP 变动分布趋势图

    图表简介: 该示意图表示了台湾地区第二季内所有Game APP类别的分布情形,经由该图表我们可以快速的了解到在这三个月内,哪类型的APP是很稳定:抑或者哪类型的APP是非常不稳定的. 名词解释: 类别 ...

  5. js 配置基础启动文件

    页面启动文件boot.js,获取存放该文件的路径,放置通用的css,js代码,方便html页面调用. __CreateJSPath = function (js) { var scripts = do ...

  6. html复选框多行排列布局

    前言:写这篇文章,主要是在于总结一下自己的心得体会... 公司的产品需要实现操作权限配置,我们实现的方式是,左边是“产品”=>“模块”树,右边是由“菜单”和“按钮”复选框按钮.如下图:

  7. 手把手教你Windows下Go语言的环境搭建

    1.想写GO语言首先得下载go语言的开发包 官方下载地址:https://code.google.com/p/go/downloads/list 我用的是Win7 64位的操作系统,截图如下: 2.把 ...

  8. (五)Struts2 标签

    所有的学习我们必须先搭建好Struts2的环境(1.导入对应的jar包,2.web.xml,3.struts.xml) 第一节:Struts2 标签简介 Struts2 自己封装了一套标签,比JSTL ...

  9. window远程连接linux

    一.字符界面连接Linux    1.直接使用window自带的telnet. 2.但现在Linux一般都不启用telnet,而是启用ssh.这样的话,window就要安装客户端来访问Linux了.这 ...

  10. 关于项目既要使用ant脚本又要使用maven pom.xml文件的问题

    背景:项目使用的是ant脚本打包,但又需要maven去执行sonar代码扫描.所以项目中既有build.xml又有pom.xml build.xml设置的打包后产物文件夹为target,maven运行 ...