评论

收藏

[其他] 【计算机网络】第九章:应用层

网络安全 网络安全 发布于:2021-07-13 18:39 | 阅读数:964 | 评论:0

  
  CN.StudyLog.Ch9.Application Layer.应用层

  • 域名解析协议DNS


    • 域名Domain


      • 域名的结构
      • 域名解析的过程

    • 实验:内网域名解析服务器

  • 动态主机配置协议DHCP


    • DHCP租约
    • DHCP地址分配过程
    • 实验:安装DHCP协议


      • 本网段内的地址分配
      • DHCP中继代理


  • 远程管理Win系统协议Telnet


    • 实验:Telnet管理网络设备和Windows系统

  • 远程桌面协议RDP
  • 超文本传输协议HTTP


    • URL 统一资源定位符
    • web服务器发布网站
    • HTTP 报文格式
    • Cookie
    • 代理服务器

  • 文件传输协议FTP


    • 主动&被动模式
    • 用户隔离

  • 电子邮件协议SMTP/POP3/IMAP协议


  
应用层的内容主要就是针对不同种类的应用程序使用的协议。对应的协议明确了网络交互时请求与响应的差别。应用层不同协议之间的差别非常大,每一种都有不同的功能。域名解析协议DNS  Domain Name System。计算机用到域名解析时就需要使用DNS协议。DNS协议是将域名转换为IP地址的工具,以便计算机在网络中的交互。

域名Domain
域名IP地址baidu.com61.135.169.121  对于用户而言,每一个要访问的网站都用IP地址来应用的话负荷过重。从而诞生出域名,域名就是为了方便用户更好使用而产生的,DNS协议会将用户方便使用的地址(域名)转换成电脑方便使用的地址(IP)。
而域名是全球唯一的,唯一的域名才能保证访问某一个网站时流量目标的确定性。为了保证全球唯一,则需要注册域名,如果域名已重复则不可使用当前域名,可以选择改一个其他域名或者花钱购买当前域名拥有者的域名持有权(阿里巴巴)。
  搜索引擎搜索域名注册,可以查询想要的域名是否被注册,也可以查询当前域名持有者的信息。域名要好记(简短),与功能相符,有特别意义。则会在建设初期吸引到比较多的流量以及日后的深入人心。
域名的结构
  严格来讲,www.baidu.com中域名是baidu.com。而www.baidu.com是域名下的一个主机,www是一个主机名。也就说允许不同域内有重名,但是个体不同。
我们以百度为例。stmp.baidu.com和ftp.baidu.com分别是同一个域下的不同主机。
主机名+域名=完全限定域名(FQDN)。完全限定域名可以被网络中的DNS服务器解析成IP地址。
DSC0000.png
只需要申请一个域名,就可以在该域名下的不同服务器搭建多个完全限定域名服务器,不是申请N个FQDN就需要N个域名。域名与IP不是一对一的,可能一对多、多对一。
DSC0001.png
(多对一)不同域名可以指向同一个IP地址, 可以由一个服务器提供多种服务。如图,不同FQDN解析到的是同一个IP。
(一对多)镜像web站点实现负载均衡:某网站因为比较热门,平常访问流量多,所以搭建了两个内容完全相同的服务器。两个服务器自然对应两个IP地址,则在DNS服务器上写入同一个域名,则用户访问该网站时,会随机解析到其中一个IP地址并访问,对于用户而言没有任何区别,都访问到了网站,对于企业而言减少了服务器压力。
nslookup
  该命令用于解析目标域名的服务器和IP地址。可以一定程度帮助我们分析原理。这种命令有两种表现方式,比ping命令得到的IP地址更全(ping只返回1个IP)。
DSC0002.png
服务器表示的是给我解析这个域名的服务器是哪一个。
DSC0003.png
看到这些我们能够得到的内容:
1.有两台服务器,服务器在一个网段,也就说在同一机房。
2.域名解析的随机性,解析了三次域名,两个域名出现的顺序是随机的,每次选择解析到的第一个IP地址,保证了用户访问服务器时,实现负载均衡。
DSC0004.png
上图也是,一个域名对应4个IP地址,每次用户访问时,访问到每一个IP的机会均等。

  域名的层次结构
DSC0005.png
域名级别如图所示,互联网上所有域名都是以 ′ . ′ '.' ′.′开始, ′ . ′ '.' ′.′称为域名的根。
  顶级域名:分为国家顶级域名和通用顶级域名。通用顶级域名一般具有对应的功能,比如.com是商业网站、CNDN等给别人提供信息门户的企业或者个人一般使用.net网站。
  二级域名:国家域名下可以使用顶级域名作为二级域名,且格式的定义可以和其他国家不同,比如教育网站可以不用edu来当做二级域名,是由该国家指定来表示的,他们可以随意更改。
三级/四级域名:个人和企业自己管理和规定。
DSC0006.png
ex)
DSC0007.png
www.blog.sina.com.cn就是一个四级域名。五级FQDN,可以理解为中国的商业用新浪博客网站。
而国内访问的网站,一般默认不写cn,也就说www.baidu.com.cn的.cn可以省略,实际上是一个三级域名,四级FQDN。但是如果直说www.baidu.com那就是一个二级域名,三级FQDN。
域名解析的过程
  互联网中的域名解析不是由一个服务器来完成的,是分到多个服务器上来承担的。
  域名解析:
类型功能根知道哪一种类型的域名由哪个子域名解析服务器负责,委派DNS解析请求子节点域名解析服务器知道具体的某一域名的IP地址,知道根是谁,可以上级委派下级N级子节点域名解析服务器知道具体的某一域名的IP地址,知道根是谁,不知道自己父节点是谁
DSC0008.png
如图:根域名解析服务器负责委派DNS解析请求;BC分别是二级/三级域名解析服务器。E是更加具体的,所有sohu域名下的服务器都可以解析的三级域名解析服务器,由C委派。

  图中访问www.inhe.net
权威应答:访问的域名解析服务器正好负责解析对象,返回本地查询结果,肯定没错。客户端发送一个数据包请求域名解析,服务器正好发现net是自己负责解析的且inhe这个域名自己有记录,则直接本地返回。
访问www.souhu.com:
非权威应答:服务器收到请求后,发现自己不负责解析这个域名,则发送到根服务器。根服务器会返回给B一个结果,返回值是C的IP地址。此时B会给C发一个域名解析请求,C发现自己不直接负责,但是知道该委派给谁,也会返回一个数据包给B,返回值是E的IP地址。然后B找E,E返回结果,得到想要的IP地址。然后该IP地址会在B服务器中缓存一会,然后把这个结果发给计算机,然后计算机也缓存一会。
缓存的作用:如果短时间还要访问sohu的网站,此时缓存内有结果,则可以直接访问。对于域名解析服务器,如果缓存内有则可以直接返回,否则需要费时间费尽周折返回。
  也就说计算中的DNS不管指向谁都能找到其他的DNS。因此我们最好记住几个比较好记的DNS地址可以方便手动设置DNS时的正确性。比如谷歌的8.8.8.8和电信的222.222.222.222。
  如果有一台设备域名指向了E,但是想要访问C服务器。此时域名解析时,仍然是E服务器找根,根返回C的地址再找C。并不因为C委派了E,E就可以直接找到C。
  家里的路由器,非常简单的设备,没有域名解析的功能,之所以能上网是因为会找根。不管访问哪一个网站,都找根域名解析服务器,从而以简单的构造完成全网访问。
  客户端测试域名解析
DNS客户端:只要配置了DNS的计算机,都可以叫做DNS客户端。
可以使用ping命令,返回的IP地址就是域名解析成功的标记,可以ping不通,但是只要返回了IP地址就说明域名解析是成功的。
ipconfig /displaydns
ipconfig /flushdns
  可以查看/清除缓存中的域名解析结果。
DSC0009.png

实验:内网域名解析服务器
  【计算机网络原理·实验·第九章】搭建内网域名解析服务器
动态主机配置协议DHCP  DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
静态地址使用场景:企业内服务器、台式机等这些不怎么移动的设备。方便访问与排错。
动态地址使用场景:笔记本/智能手机等移动设备。方便用户个人的使用(DHCP服务负责)

DHCP租约
  A计算机获得DHCP服务器分配的地址后,不是一直持有该IP地址,会有一个租约期限。这是避免当某一设备没有关机,直接拔网线然后移走设备。DHCP服务器会认为该地址一直在被A计算机使用,然后分配给A的地址就一直被使用且不可分配给其他用户,浪费资源。
租约:每次分配动态IP,会同时给定一个租约期限。租约期限到期若没有续约,则DHCP服务器会收回该IP地址;一般情况下当计算机正常使用到租约期限的50%时,就会发送请求给DHCP服务器续约。
DSC00010.png
租约更新1:如果租约期到达50%请求原来分给自己IP地址的DHCP服务器续约失败,此时PC会继续使用该IP并等待,等待到租约期限的75%时,再次试图联系原DHCP服务器请求续约。如果仍然失败(链路断路等原因),则PC会发起广播,试图找局域网内其他DHCP服务器请求IP地址,如果还有新的DHCP服务器可以联系上,则会返回给他一个新的IP地址。
如果租约期到达100%仍然没有DHCP服务器给予响应,则PC会将自己的IP设置为169.254.x.x网段,并等待合适的时机联网。
租约更新2:计算机开机时,即便原自动分配的IP租约没有到期,但是是有可能设备已经移动到其他网段的(下班后笔记本从单位带回家)。所以开机时,计算机会ping网关,如果ping不通,则认为不在同一网段,会发广播请求新的IP地址。如果能ping通,要检查租约是否到期以决定是否立刻续约。
手动租约更新:通过ipconfig命令实现
ipconfig /renew 请求DHCP服务器续约/分配IP地址
ipconfig /release  请求释放DHCP分配的地址
DHCP地址分配过程
DSC00011.png
广播方式:目标地址255.255.255.255,目标MAC地址全F(所有位全1)。对于未被分配IP地址的客户端而言,源IP地址是0.0.0.0,源MAC地址是自己的MAC地址。

  DHCP服务不可以随便设置,比如如果某网段内,有两台DHCP服务器,其中一台设置的DHCP服务不属于本网段。
ex)本网段是192.168.80.0,但是其中一台DHCP分配的地址是192.168.10.10~254的地址,因为DHCP服务器分配给其他设备的机会等价,就有可能分配给本网段一个192.168.10.0网段的地址,此时因为网关不同,一个是10.1一个是80.1会导致被分配10.1的设备无法上网。所以,如果局域网内出现部分计算机不能上网,应该考虑是否是由捣乱的DHCP服务器(设置不同网段)。

实验:安装DHCP协议
本网段内的地址分配
DSC00012.png
使用VMWare虚拟机做实验,该实验环境下要停掉物理机的DHCP服务。这样虚拟机就不会通过物理机的DHCP服务自动获取地址,然后我们配置一个DHCP服务器。

DSC00013.png
DHCP服务器要求:
1.服务器必须是该局域网内的一个静态地址
2.创建一个地址池(地址范围),这个范围必须属于服务器所在网段。否则将无法自动分配IP地址,因为不符合逻辑。
DSC00014.png
安装DHCP服务器并新建作用域。地址池范围是150~250.
DSC00015.png
排除服务器是指地址池内某些已经有特殊作用的IP地址,对其进行排除,此后DHCP不会分配这些地址给其他设备。
DSC00016.png
租约时间。
DSC00017.png
配置路由器和DNS服务器。然后开始使用该网段内另一台计算机请求DHCP分配地址。
DSC00018.png
查看租约。
DSC00019.png
cmd命令行:

DSC00020.png
抓包:
DSC00021.png

DHCP中继代理
  一般现实角度考虑,服务器一般会单独放在一个网段,而不同部门的办公室又分别是一个网段,这样DHCP服务器就需要有跨网段分配地址的能力。
而由于DHCP服务器是通过接受广播来分配局域网内IP,跨网段如何实现呢?
DSC00022.png
对于服务器机房的本网段PC而言,就像之前说的局域网内通过广播分配IP地址。而路由去隔断了广播,其他网段的PC如果想要通过DHCP分配地址,则需要向路由器指定DHCP服务器的地址,则其他网段内设备请求DHCP服务时,路由器的对应接口会把这个广播包变成一个定向的数据包发送给DHCP服务器,源地址为收到DHCP请求的路由器端口,目标地址指向DHCP服务器。DHCP服务器收到后,匹配作用域是否有对应网段、地址池是否富裕,都没问题就会返回一个定向数据包给路由器,然后路由器再将其转化成广播数据包给请求DHCP服务的计算机,就实现了跨网段分配地址。
DHCP服务器可以通过数据包地址来判断来自于哪个网段的,本网段是广播数据包,而其他网段有明确的源和目标地址。
上图中,假设70.0的某PC要申请DHCP分配地址,则数据包去向是:
PC-{广播数据包}-192.168.70.1-{定向数据包}-DHCP服务器
ip help-address 指定DHCP服务器的IP地址
DSC00023.png

  在图中端口输入
conf t
int f 0/0
ip help 192.168.50.100
  就是告诉该端口DHCP服务器指向哪一个具体的地址。实验之前要保证网络通。
在未配置DHCP中继时,IP地址因为无法被分配而变成了169.254网段。当配置后重启网络,已经发现分配了IP地址。
DSC00024.png
DSC00025.png
通过抓包结果,我们也可以发现,数据包是明确的有指向和来源的,并不是广播数据包。
远程管理Win系统协议Telnet
DSC00026.png
用户使用telnet客户端,就可以远程连接到telnet服务器。telnet服务器可以是网络设备(路由器、交换机)和操作系统(Win&Linux)。可以将键盘命令传入远程主机,并将主机执行的结果返回到telnet客户端。

DSC00027.png
不同的服务器,客户端实现相同命令的方法也可能不同。不同系统之间的命令可能无法解析和使用。
NVT:网络虚拟中端。Telnet在网络中传输时转换成的兼容性更高的格式。它是网络上的所有终端对任何主机进程提供相似的接口。这样,网络所支持的任何终端和网络上的任何主机系统可被一起使用。


实验:Telnet管理网络设备和Windows系统
DSC00028.png
DSC00029.png
1.测试网络连通性。确认网络畅通。
DSC00030.png
2.服务器启用telnet服务。
DSC00031.png
telnet命令:telnet 192.168.50.100
DSC00032.png
3.客户端使用telnet命令连接服务器。并使用抓包工具捕获网络中的数据包以观察telnet命令数据包。
DSC00033.png
DSC00034.png

DSC00035.png

DSC00036.png
telnet命令是以字符为单位传输的,每个数据包传输一个字符。

  使用的命令:登录,创建记事本,关机等。
4.开始输入命令,观察数据包。
  网络设备:
要先设定网络设备的密码,如果网络设备没有密码,则不允许远程访问。
line vry ? 查看这个路由器最大支持多少个telnet端口
line vty 871  设置允许最大871个telnet端口接入
password ***   设置telnet访问的密码
login          要求必须登录
enable password ***   设置进入特权模式的密码
DSC00037.png

  密码简写:命令输入高效性
conf t
lin v  0 871
pas chahot
logi
ena p 233
  1.设置GNS3路由器的密码。
DSC00038.png
  2.使用客户端telnet命令连接路由器。与本地操作是一样的。
  现在使用telnet命令操作linux和网络设备更常见。win系统随着图形化界面的优化,远程桌面已经完全替代了telnet。
远程桌面协议RDP  现在在windows系统管理上,已经替代了telnet协议,连接过去后已经是图形界面,非常方便直观。默认使用TCP的3389端口。
Win srv系统:多用户操作系统。该系统可以多个用户同时访问且互不影响。
XP/7/8/10等:单用户操作系统。某用户远程访问后,当前用户需要退出。只有一个用户可以在线。
执行命令:Win+R
mstsc
  连接者的键鼠操作互不影响,且可以使用同一个账号连接。默认只允许管理员连接,可以手动设置。
DSC00039.png
DSC00040.png
可以看到有两个用户在线
DSC00041.png
连接者还可以再远程桌面设置对应的选项。实现本地与远程计算机更方便的数据访问。

  如果远程桌面访问XP或win10等系统,则当前使用者将在允许远程接入后下线,只有一个使用者可以在线上操作。
超文本传输协议HTTP  最常见的协议。定义了客户端可以向web服务器发送哪些请求,数据包的格式是什么样的,服务器收到请求后返回哪些响应。HTTP协议是用于传输文本的,而超链接可以作为文本的形式传输,HTTP协议设计用于这些有超链接的文件,即超文本。
DSC00042.png
  浏览器的Internet选项可以查看支持的HTTP协议版本。
DSC00043.png
  HTTP1.0:访问web服务时,建立TCP连接并下载html文件。下载后再针对html文件内的文件建立新的TCP连接并下载。html文件内的文件可以是图片、JavaScript、CSS等。因此,效率比较低,现代的网页随着精美的外观,JS/CSS等文件也很多,频繁建立TCP连接对服务器开销也大,效率也低。
DSC00044.png
DSC00045.png
  HTTP1.1:改善了1.0的问题点,只建立一个TCP连接。从该连接内下载所有文件。且有流水线和非流水线两种方式,流水线方式更加充分利用资源。(流水线详细知识请查计算机原理,这里不多概述)。
  截止到目前为止,HTTP最新的已经到2.0版本。用的最多的是1.0和1.1。
DSC00046.png

URL 统一资源定位符
  URL:统一资源定位符:通过这一符号找到全球唯一路径的目标。
固定格式:
< 协 议 > : / / < 主 机 > : < 端 口 > / < 路 径 > / < 文 件 名 > <协议>://<主机>:<端口>/<路径>/<文件名> <协议>://<主机>:<端口>/<路径>/<文件名>
主机可以是IP地址,也可以是域名。
http://www.bilibili.com/
协议-主机-默认端口-默认文件名
https://www.bilibili.com/bangumi/play/ss5978
协议-主机-默认端口-路径bangumi/play-文件名ss5978
ftp://192.168.80.50/test/ss689
协议-主机-默认端口-路径test-文件名ss689
mms://192.168.80.50/racecar_300.wmv
协议-主机-默认端口-文件名
  我们在访问某一个网页时,HTTP协议默认访问80端口,如果web服务器改变了端口则无法访问;且路径名下如果没有具体到某一个文件名,则服务器需要设置默认打开的文件,否则客户端仍然无法访问。
  URL使用技巧:为了平常使用方便,快捷方式是一个很好的选择。一般我们使用快捷方式都是先打开网页,然后通过浏览器发送快捷方式到本地,其实也可以直接在本地创建快捷方式然后输入URL。
DSC00047.png
URL不仅仅可以使用HTTP,完全也可以使用其他协议来通过URL访问某些特殊服务,如流媒体服务,FTP服务等。只不过web服务对于一般用户最常用。
DSC00048.png
FTP的URL可以包含用户账号密码,图中的ID是stargate,密码是sg1,访问的目标是61.155.39.141的9921端口。如果将账号密码设置到URL快捷方式中,则以后每次访问都会直接打开对应界面;如果只是输入除身份信息的内容,则每次打开快捷方式需要先登录。

web服务器发布网站
  网站必须部署到web服务器,其他用户才能通过网络访问这个网站。一个web服务器可以部署多个网站,则对于用户访问这多个网站,如何区分它们?有三种方式。
1.多块网卡用IP地址标识:用不同的IP地址来提供不同网站服务。但是这种方法使用的比较少,因为IP地址现在在公网上比较紧张,属于应当珍惜利用的资源。
DSC00049.png
DSC00050.png
这样就可以用两个IP地址来区分两个网页,进行访问。
  2.一个IP地址多个端口:通畅情况下,一个服务器就配置一个IP地址,对应开放不同端口提供不同服务。这种方式也有弊端,对于用户而言更习惯使用默认端口,一些不具备相关知识的人甚至不知道端口是什么,再者每个企业公布端口给用户对于用户而言是相当麻烦的一件事。
DSC00051.png
通过192.168.50.100:更改的端口 访问。
  3.域名区分:当前使用的方法。绑定域名可以用与对应服务相贴合的命名方式,方便用户记忆。且文字相对于数字一般更容易接受。配置域名后,即使不改变端口和IP地址,也能让客户端通过域名访问到对应的网页。但是,这样就无法再使用IP地址进行对网站的访问。
  覆盖公网地址的网站:
DSC00052.png
修改本地web服务器的域名。
DSC00053.png
指定客户端使用本机当做DNS服务器,将解析到自己制作的taobao.com的IP地址,然后访问即可。可以让内网用户访问自己想让他们访问到的网站。

HTTP 报文格式
DSC00054.png
报文格式中,方法有很多种,GET/DELETE/POST等可以理解为命令。URL与版本号自然不用多说。
GET:请求网页
DELETE:删除网页中某内容
POST:身份验证后登录
**HTTP协议传输时,使用账号密码登录时,POST方法的报文会直接以明文的形式记录账号密码以及传输的内容消息。也就说如果有人截获该数据包,就毫无安全可言。
  为了方便理解首部行,下面跟LUA语言片段进行一下对比,能够更好的理解首部行的意思。
DSC00055.png
html文件中,由于每一行的代码串长度不等,所以无法像其他协议首部一样规定标准字节数,采用了一个特殊的标识符——换行符。CRLF就是代码中回车的作用。
<html>
<head>
<title>HELLO WORLD</title>
</head>
<body>
helloworld
</body>
</html>
  响应报文中状态行的状态码(200表示成功)。短语是对状态码的描述。
DSC00056.png
请求报文如上。
DSC00057.png
响应报文如上。状态码是200,描述是OK。表示成功。
DSC00058.png

Cookie
DSC00059.png
用户访问一个网站,每次都需要登录账号密码是一件很麻烦的事情,现在我们登陆任何APP基本都是认证一次之后,此后直接登陆。这就是Cookie技术。
Web服务器不记录用户身份验证信息,但是会读取Cookie来验证身份。当客户端的某用户登录web服务器时,服务器会把用户的身份验证信息写入客户端的Cookie,下次再次访问该网站时,服务器优先读取Cookie内的数据,在未删除和变更密码的情况下,Cookie内的数据被读取后服务器会自动识别并登录。
把Cookie想象成护照比较容易理解,一本护照一开始是空的,没有任何国家的签证,则每次去一个新的国家都需要有一套繁琐的流程去申请签证(体检+缴费+各种证明),而当申请到签证后,贴到护照内,有效期间内访问那个国家就不需要再走一遍最繁琐的步骤了,只需要拿着护照通行即可。


代理服务器
  代理:不直接访问,而是通过某一中转设备。例如我要访问百度下载东西,但是我在公司内网,无法访问外网,内网中总有几台设备可以访问外网,我通过这些设备访问外网下载到本地,然后再从这些设备传输到我原来的设备上。这些能够访问外网的设备就是代理。
代理服务器用途:
1.控制内网计算机对互联网的访问。在内网路由器上设置必须通过代理服务器流量才能出去,则内网内所有设备如果想上网则必须经过代理服务器。然后代理服务器可以设置上网的时间、MAC/IP、用户身份信息等方式管理内网设备上网。这相当于高级防火墙,与网络防火墙相结合,则更加强大。(CCProxy常用于企业)
  2.通过Web代理绕过防火墙。
DSC00060.png
技术部不允许上外网,但是有些技术紧急支援需要与外界能够直接交流,所以仅限一台电脑能够访问外网。但是技术人员闲暇之余也想放松放松,于是在能够访问外网的计算机上配置了代理服务器,所有计算机通过代理服务器就可以通过防火墙,然后访问互联网。
3.代理节省带宽(分情况)。企业内如果只使用web代理服务器访问网站,当设备访问一个其他本网段设备访问过的网站,则web代理服务器的缓存中有对应数据,也就会直接从缓存中读取数据,节省了主干道带宽。但是如果你用国外的代理访问国内的网页,那只会更加浪费带宽。
DSC00061.png
如图,某企业出现了一个奇怪的问题。自己公司的服务器,自己公司员工无法访问,但是客户(其他网络流量)可以访问。初步思考出现这种问题的原因是:由于内网做NAT地址转换成路由器的地址进行互联网访问,也就说,本公司内所有访问服务器的源IP都是唯一的。如果企业内人员访问该服务非常频繁,对于防火墙而言就可能把他视为流量继而屏蔽这个IP为源的所有数据包,然后该公司内所有人员就无法访问该服务器了。
临时解决方法:公司员工使用互联网络中的代理,进行地址变化后再进行访问。当然,不要使用一个代理去访问,而是使用网络中多个代理稀释流量后访问。
现在有很多代理服务,不再进行推荐。
文件传输协议FTP  单位内经常使用,相当于单位内部的网盘一样方便。
DSC00062.png
FTP客户端和FTP服务器之间需要建立两个TCP连接,一个连接用于命令控制(传输命令),这个连接是客户端连接的TCP的21端口(默认)。另一个连接用于传数据,而传数据的连接又分主动模式和被动模式。

主动&被动模式
DSC00063.png
FTP客户端使用PROT命令通知FTP服务器,告知服务器要连接的客户端端口,然后服务器主动发起连接请求的模式,是主动模式。主动模式下默认打开使用20端口传数据。
主动模式下,要求客户端必须打开相应的端口。

DSC00064.png
被动模式正好相反,是服务器被动等待客户端连接自己。客户端通信前,通过命令连接告知服务器使用被动模式,服务器会告诉客户端一个端口,然后客户端连接这端口并用于传数据。要求服务器需要开启相应的端口。服务器的端口是临时分配的,因此手动开启端口就显得没有意义了(要开的太多且不定向),因此,FTP服务器通讯连接时定义开启端口的范围,再操作防火墙。

  主动模式:服务器开启21和20端口。
被动模式:服务器开启21和一个地址范围的端口。
DSC00065.png
上图中,可以推断出为被动模式。因为默认情况下服务器开启的端口应该是21和20。TIME_WAIT表示传输已结束,连接释放掉了,只有传输过程中,才会是ESTABLISHED。
  更改为主动模式:使用Internet选项:
DSC00066.png

  切换为主动模式后,可能会出现无法连接到目标FTP服务器,原因是一般电脑的防火墙不会开启个别端口去配合FTP服务,需要手动设置或者临时关闭防火墙。
DSC00067.png
  FTP抓包与命令
DSC00068.png
明文传输的账号密码。
DSC00069.png
重命名命令。
DSC00070.png
更多命令使用?查询。FTP数据包基本承载着所有命令,可以直观的从数据包的描述中看到对应命令和操作要求,而不需要分析数字。


用户隔离
DSC00071.png
设置FTP服务器时,不隔离用户表示所有的用户都可以看到其他用户的操作,任何写操作都对任何用户可见。隔离用户则是用户之间相对独立,彼此互不影响,类似邮箱,都是使用谷歌邮箱,但是登入身份不同,显示的内容也不同。
DSC00072.png
允许写入就是允许删除/编辑/创建等操作,只读则只能浏览内容,不能进行任何更改。

  不隔离用户
DSC00073.png
虚拟机设置后,物理机可以看到且同样可以执行读写操作。
DSC00074.png
DSC00075.png
写操作完毕后,虚拟机同样也能看到物理机的操作。
  2.隔离用户
DSC00076.png
DSC00077.png
创建一个如上图所示的ftp站点。
DSC00078.png
创建两个可以访问本设备的用户。登录即可访问FTP站点。
DSC00079.png
DSC00080.png
以上图这种方式定义FTP目录,则不同用户登录时看到的就是自己相对独立的空间。图中就是User1和User2,简称U1,U2。U1和U2登录后的界面互相不可见,数据不共享,操作独立。但是一般我们也希望有一块公共区域提供共享资源,增加工作效率,此时我们使用在localuser目录下的public文件,登录FTP服务器时以匿名登录,则默认进入public区域,此时进行的读写操作对所有匿名访问FTP的都可见,可以利用这一块共享区域实现数据共享。

DSC00081.png
此外还可以通过硬盘挂载的方式共享文件,在不同用户的目录下创建一个同名文件夹,并将它挂载到新硬盘,则此后对Sharedata内部进行的写操作就相当于写入了服务器的另一硬盘,而这一块内容又被挂载,从而实现了数据共享和互通。
DSC00082.png
新建盘格式化并格式化后,右键点击选择更改驱动器号和路径,然后选择localuser文件夹下不同用户的共享文件(这里是Share)。
DSC00083.png
然后我们即可在服务器上看到,该文件夹变成了一个磁盘图标。然后我们对该磁盘进行授权。
DSC00084.png
然后我使用XP传了一个流媒体文件以及新建了文件夹。
DSC00085.png
我们观看服务器上的E盘和用物理机访问FTP站点的情况:
DSC00086.png
DSC00087.png

电子邮件协议SMTP/POP3/IMAP协议  发送电子邮件使用STMP协议;接收电子邮件使用POP3、IMAP、HTTP协议。本文不讲HTTP在邮件接收时的功能。
邮件收发过程:
DSC00088.png
用户一般使用已注册的邮件服务器来收发邮件。不同邮件服务器会对每一个用户分配一个收件箱和发件箱的空间,当邮件服务器收到发给该用户的邮件则会放入收件箱,用户写好的邮件上传到发件箱后即可发送。
用户之间邮件并不是将邮件直接发给目标服务器,需要用自己的邮件服务器中转。只有服务器向服务器投递邮件时不需要身份验证,客户端下载和上传邮件都需要身份验证。
用户不定期查看邮箱就相当于将收件箱空间内的邮件下载到客户端。对于POP3协议,只要用户将邮件下载到客户端,则收件箱内的对应邮件就会被清空;对于IMAP协议,即便用户下载到客户端,对应邮件仍然保留在收件箱空间内,只有当用户从客户端删除邮件时,服务器内的邮件才会对应删除。
  从网页上输入对应网址比如mail.qq.com写完邮件发出去,就没有使用客户端。这一过程是直接从服务器发过去的。
DSC00089.png
使用客户端还是有必要性的,它有强大记录联系人功能,与网页版邮箱最大的不同之处在于方便。你可以同时收发多个邮箱的邮件;可以记录联系人信息,下次发送时可以不输入繁琐的邮箱名,已经类似于好友列表一样的图形化界面;还可以定义对应联系人的记录项,比如计划生日/重要事务提醒等。当然,非企业用户和个人用户,单纯的使用邮件服务也是完全可以的。
  POP3/IMAP:
DSC00090.png
POP3:只要用户将邮件下载到客户端,则收件箱内的对应邮件就会被清空,现在已经可以设置下载到客户端后,邮件在服务器上存活多少天后再进行删除了。优点是可以下载下邮件后,脱机慢慢看。在信息化时代渐渐失去意义。
IMAP:联机协议,必须联网才能使用。
  电子邮件格式
DSC00091.png
DSC00092.png
telnet命令是可以用来写邮件的,邮件格式如下。其中每输入一个命令返回一个三位数字的代码代表着不同的意义。
对应到SMTP协议的写信格式后,如下图所示
DSC00093.png
  在向一个服务器发邮件之前,我们需要先解析它的IP地址。此时
DSC00094.png
用MX类型查找服务器,然后再用A类查找IP地址,然后使用telnet命令连接25端口。
DSC00095.png
DSC00096.png
  上图是交互过程。
  企业内网邮件服务器的必要性:
1.作为一个企业,使用一个专用服务器,显得高大上。在与客户交流时也便于识别和沟通。
2.资料交接方便,如果某些员工下岗,使用的是个人邮箱,则企业资料和客户资料也会随之而去,但是如果使用企业邮箱,则人事变动时可以交接,新入员工可立刻获得对应资源。
3.保证企业内部安全性。
DSC00097.png
这种情况下,可以存在域名冲突。但是,如果你想让互联网上其他用户访问你的邮件服务器,则需要考虑以下几种情况:
1.邮件服务器是否有公网地址。如果没有,则需要在路由器的端口上映射到服务器的私网地址。
2.需要给网络中的DNS服务器添加MX记录,能够让其他用户域名解析时通过DNS服务器解析到你的地址/路由器端口地址。
3.域名必须唯一。
  

  
关注下面的标签,发现更多相似文章