目录
一. FTP的简介
二. FTP的主要作用
三. 搭建FTP服务器
3.1 开启防火墙
3.2 创建组
3.3 创建用户
3.4 用户绑定组
3.5 安装FTP服务器
3.6 配置FTP服务器
3.7 配置FTP文件夹的权限
3.8 连接测试
3.8.1 服务器本机测试
3.8.2 外部服务器测试
3.8.3 借助工具MobalXterm
四. 计算机端口
4.1 简介
4.2 分类
4.3 常见端口
4.4 Proto协议
五. 思维导图
一. FTP的简介
FTP就是文件传输协议。用于互联网双向传输,控制文件下载空间在服务器复制文件从本地计算机或本地上传文件复制到服务器上的空间。
FTP 的目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。它能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间,会非常长;并且不时的必须执行一些冗长的登录进程。
二. FTP的主要作用
1. 文件上传和下载:FTP允许用户将文件从本地计算机上传到远程服务器,或从远程服务器下载到本地计算机。这对于在不同计算机之间共享文件非常有用。
2. 远程文件管理:通过FTP,用户可以远程管理服务器上的文件。可以创建、删除、重命名、移动和复制文件和文件夹,以及设置文件权限和属性。
3. 网站维护:FTP常用于网站维护,允许网站管理员通过FTP客户端上传、更新和删除网站的文件。这包括网页文件、图像、脚本和其他相关文件。
4. 数据备份和恢复:FTP可以用作数据备份和恢复的工具。通过将重要数据上传到远程服务器,可以确保数据的安全性和可靠性。
5. 文件共享:FTP还可以用于文件共享。用户可以创建FTP服务器,并授权其他用户访问特定的文件或目录。这对于团队合作、文件共享和远程访问非常有用。
6. 远程备份:FTP可以用于将重要文件备份到远程服务器。通过将文件上传到远程服务器,可以确保文件的安全性和可靠性,以防止本地计算机出现故障或数据丢失。
三. 搭建FTP服务器
博主是在虚拟机(Windows server 2012)中进行搭建的,大家也可以在虚拟机中进行实验。
环境要求:安装有windows server 2012或者其他服务器版本的window操作系统的机器。
3.1 开启防火墙
确保你的电脑防火墙是开启的
3.2 创建组
server 2012对用户组和用户的管理比较严格,而且我们作为一个ftp服务器,肯定涉及到非常多的用户,单独使用用户来管理工作量非常大而且不显示,所以这里我们首先创建一个用户组(名称可自定义)。
第一步:找到服务器---->点击上面的工具----->选择计算机管理
第二步:找到本地用户和组----->组----->右键新建组
第三步:填写组名和描述------>点击创建
点击新建组,页面是不会关闭的,而且也没有之前的数据,需要手动关(组已经创建成功)
创建成功
3.3 创建用户
第一步:点击用户--->右键---->新建用户
第二步:填写用户名、描述,设置密码,权限默认是第一个,根据自己的需求进行选择
创建成功
3.4 用户绑定组
第一步:选择你想要绑定用户--->右键属性
第二步:选择隶属于---->选中原来的Users----->点击删除----->再点击添加
第三步:点击高级
第四步:选择对象类型(我们选组)--->点击立即查找 --->选择刚创建的组 --->选中组后点击确定
第五步:点击确定
第六步:选中刚刚绑定的组---->点击应用---->再点击确定,就完成了
3.5 安装FTP服务器
第一步:找到管理--->选择添加角色和功能
第二步:点击下一步
第三步:服务器角色:勾选Web服务器(IIS)-----> 弹框---->点击添加功能
随后点击下一步
第四步:角色服务:勾选FTP服务器三个框,然后点击下一步
确认:点击安装 ---> 等待安装 ----> 安装成功后关闭界面
注:在点击安装前请确保电脑有网络。
第五步:安装完成以后会发现旁边会出现IIS
3.6 配置FTP服务器
第一步:点击IIS管理器(只有成功安装了FTP服务器才有它)
第二步:点击网络---->右键添加FTP站点
第三步:命名和添加存放路径----->点击下一步
第四步:端口号是默认的21----->看自身需求决定是否开SSL----->点击下一步
第五步:选择基本(匿名:不需要账号登录)-----> 选中指定角色或用户组---->输入刚刚创建的组名----->勾选读取(只能下载)和写入(可以上传,删除,修改)-----> 点击完成
第六步:配置成功
3.7 配置FTP文件夹的权限
第一步:找到文件夹---->点击属性
第二步:选择安全--->点击编辑
第三步: 点击添加
第四步: 点击高级---->点击对象类型---->勾选组---->点击立即查询---->选择我们需要的组
设置完之后的界面
第五步:赋予组权限
3.8 连接测试
3.8.1 服务器本机测试
第一步:在地址栏输入ftp://localhost--->再回车
第二步:输入用户名和密码---->回车或者点击登录
登录成功
3.8.2 外部服务器测试
第一步:点击入站规则----->找到FTP服务器--->双击--->选择程序和服务---->复制路径
第二步:点击入站规则---->右键新建规则--->选中程序---->点击下一步
第三步: 选择此程序路径---->输入我们刚刚复制的路径---->点击下一步
第四步:前面有个防火墙的弹出提示,选择是---->选择允许连接---->点击下一步
第五步: 给规则添加名字和描述----->点击完成
第六步:成功界面
第七步:在外部服务器中测试:ftp://+要访问的ip地址,输入自己的用户名和密码就能登录了
3.8.3 借助工具MobalXterm
第一步:右键新建文件夹--->在新建的文件夹右键-----新建会话
第二步: 点击FTP----->输入IP和用户名----点击Ok--->会弹框要求输入登录的密码
第三步:测试成功
四. 计算机端口
4.1 简介
计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。
4.2 分类
1、公认端口(Well Known Ports):从0到1023
2、注册端口(Registered Ports):从1024到49151
3、动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535(SUN的RPC端口从32768开始)
4.3 常见端口
- 21: FTP (文件传输协议-----服务器所开放的端口,用于上传、下载)
- 22: SSH (安全外壳协议)
- 23: Telnet (远程登录) 服务
- 25: SMTP (简单邮件传输协议)
- 80: HTTP (超文本传输协议)
- 110: POP3 (邮局协议版本3)
- 143: IMAP (互联网消息访问协议)
- 443: HTTPS (安全超文本传输协议)
- 3306: MySQL数据库系统
- 3389: 远程桌面协议 (RDP)
- 8080: 代理服务器常用端口(为http服务的备用端口)tomcat
- 80用于网页浏览,默认没有显示的端口号
4.4 Proto协议
查看电脑端口使用情况
先输入netstat -tulnp,再去判断自己电脑后面接什么
1. 关于Proto,Recv-Q,Send-Q等列的具体含义
Proto:协议名
协议名(tcp协议还是udp协议)
recv-Q:网络接收队列
表示收到的数据已在本地接收缓冲,但是还有多少没有被进程取走,recv()。如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
send-Q:网路发送队列
对方没有收到的数据或者说没有Ack的,还是本地缓冲区.
如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
recv-Q、send-Q这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。
2. Local Address:本地地址
1) 0.0.0.0:2000:表示监听服务器上所有ip地址的2000端口(0.0.0.0表示本地所有ip)
2) :::2000:也表示监听本地所有ip的2000端口。和 0.0.0.0:2000 的 区别是这里表示的是 IPv6地址,0.0.0.0表示的是本地所有 IPv4地址。
3) ":::" 这三个 : 的前两个 "::" ,是 "0:0:0:0:0:0:0:0" 的缩写,相当于IPv6的 "0.0.0.0" 。表示本机的所有IPv6地址,第三个 : 是IP和端口的分隔符
4) 127.0.0.1:8080:表示监听本机的loopback地址的8080端口。如果某个服务只监听了回环地址,那么只能在本机进行访问,无法通过tcp/ip 协议进行远程访问
5) ::1:9000:表示监听IPv6的回环地址的9000端口,::1这个表示IPv6的loopback地址
3. Foreign Address:外部地址
与本机端口通信的外部socket。显示规则与 Local Address 相同
4. State:状态
链路状态,共有11种。state列共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的。
状态参数主要有:
- LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN。来自远方TCP端口的连接请求
- SYN_SENT:客户端通过应用程序调用connect进行active open。于是客户端tcp发送一个SYN以请求建立一个连接,状态置为SYN_SENT。在发送连接请求后等待匹配的连接请求
- SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN,状态置为SYN_RECV。在收到和发送一个连接请求后等待对连接请求的确认
- ESTABLISHED:代表一个打开的连接,双方可以进行或已经在数据交互了。代表一个打开的连接,数据可以传送给用户
- FIN-WAIT-1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态。等待远程TCP连接中断请求,或先前的连接中断请求的确认
- CLOSE-WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT。等待从本地用户发来的连接中断请求
- FIN-WAIT-2:主动关闭端接到ACK后,就进入了 FIN-WAIT-2。从远程TCP等待连接中断请求
- LAST-ACK:被动关闭端一段时间后,接收到文件结束符的应用程序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK,这就进入了LAST-ACK。等待原来发向远程TCP的连接中断请求的确认
- TIME-WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态。等待足够的时间以确保远程TCP接收到连接中断请求的确认
- CLOSING:比较少见。等待远程TCP对连接中断的确认
- CLOSED:被动关闭端在接受到ACK包后,就进入了closed的状态。链接结束,没有任何连接状态
- UNKNOWN:未知的Socket状态