计算机网络笔记四(应用层:DNS协议、FTP协议)

2023-10-29

1.DNS协议

1.1DNS协议基本概念

1.1.1什么是域名?

域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。例如:百度的域名是www.baidu.com。

1.1.2为什么使用DNS协议?

IP地址可以唯一标识计算机网络中的主机,但是那是一串数字并不方便记忆与使用,所以我们便使用DNS协议将域名转换为IP地址,同时,也可以将IP地址转换为相应的域名地址。也就是说可以使用DNS协议将IP地址与域名进行相互映射(一个ip是可以供多个域名解析的,但是域名解析到的一个地址是一对一的)。人们可以只记忆域名即可,通过DNS自然可以转换成IP地址,通过域名,最终得到该域名对应的IP地址的过程叫做域名解析DNS协议运行在UDP协议之上,使用端口号53。

1.1.3当我们使用浏览器浏览网站时,这个流程是怎么样的呢??

在internet上,就需要有一台服务器,记录着网站域名(即网址)与服务器ip的对应关系。类似于表格,当我们上网时,在浏览器地址栏中输入网址,客户端则会向DNS服务器发出询问请求,DNS服务器通过查表得到对应服务器的IP,返回给客户端,客户端再以这个ip地址寻址到达服务器,申请访问web页面。所以步骤如下:
1> 浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP
2> 然后通过IP地址找到IP对应的服务器后,要求建立TCP连接
3> 发送HTTP请求等,这后面的一系列见《计算机网络笔记三》中关于HTTP与HTTPS的部分

注:域名包含在URL中

1.2DNS名字空间

既然DNS可以负责全球网络的域名解析工作,那么全球的网络必然或有一套严谨的命名规范,那就是DNS命名空间的功能。

我们假设将全球的网络资源都放到一个总的虚拟的域之下,这个总域我们称为根域即.域(点域)。在根域之下,划分为多个二级域,这些域被称为顶级域,顶级域是不允许企业或个人直接申请的,顶级域是由全球的网络维护商按照国家、地区、行业等分配的,如:.cn.表示中国地区,.hk.表示香港,.org.表示国际组织,.com.表示工商企业的,.net.表示网络提供商等等。因为所有域都在根域(即.域)之下,所以,一般书写时我们可以把最后的.省略,如:.com .cn等

作为企业或个人,只可以在顶级域下申请子域,申请到子域后即可在子域下指定自己的网络层次了。如下图:
在这里插入图片描述

举例:
图中,最右侧,假设有个企业在.com顶级域下申请了子域pp,该企业下有一台主机,主机名叫www,所以,它的完整域名就是把域的线路由下向上写上去,之间用.做分隔,即:www.pp.com;
图中中间部分,有另一个企业在.cn下注册了子域rzz,rzz下又设置了一个子域bbs,在bbs下有四台主机,那么它们的完整名字即是:www.bbs.rzz.cn等。
因为整个域名空间都是在虚拟的域体系之下,所以,每个主机的主机名也都是虚拟的,即是在网络环境中的名字(类似于每个人有真名,但是平时上网时可以使用网名一样,都是虚拟的名字)。只是,在网络上,各企业已经习惯使用www的主机名作为网站服务器的名字,所以大多数网站的域名都是www.XXX.XXX的格式的。

参考:https://blog.csdn.net/xiaowoniuwzx/article/details/105080547

1.3DNS查询与缓存

1.3.1DNS查询基本概念

1>DNS查询的步骤
客户端当有网络访问需要做解析时,先查看本地的hosts文件中有无相关记录,若有,就按该记录执行了,不再去询问DNS服务器;若此文件中无相关记录,则再去询问DNS服务器做解析。
这里解析过程分为两种:
第一:主机向本地域名服务器的查询一般采用递归查询!也就是说主机问本地域名服务器时,如果查不出,那么本地域名服务器就以DNS客户的身份向上查询,而不是由主机自己继续查询。
第二:本地域名服务器向根域名服务器的查询通常采用迭代查询,当根域名服务器收到了本地域名服务器的查询请求时,要么给出结果告诉IP地址,要么告诉本地域名服务器去哪里查询。
2>DNS查询类型
A 查询主机的IP地址
PTR 指针查询,用于查询IP对应的域名地址
CNAME,查询主机的规范名字
MX交换记录,用来说明邮件被发到哪里,可以有多个,有自己的优先级
HINFO,主机信息

linux下的查询举例
host -t a baidu.com

3>DNS报文信息
基本为12子节首部和四个可以变的字段(问题,回答,授权,额外信息)

4>DNS支持的解析模式
客户端就会有两种询问情况:一种是客户端拿着域名,请求DNS给查询出ip;另一种是客户端拿着ip,请求DNS给查询出对应的域名。针对这两种情况,在DNS中定义其为两种解析模式:
正向解析:客户端拿着域名,请求DNS解析,获取到ip。
反向解析:客户端拿着ip,请求DNS解析,获取到域名。

1.3.2DNS缓存

DNS缓存指DNS返回bai了正确的IP之后,系统du就会将这个结果临时储存起来。并zhi且它会为缓存设dao定一个失效时zhuan间 (例如N小时),在这N小时之内,当你再次访问这个网站时,系统就会直接从你电脑本地的DNS缓存中把结果交还给你,而不必再去询问DNS服务器,变相“加速”了网址的解析。当然,在超过N小时之后,系统会自动再次去询问DNS服务器获得新的结果。不仅仅主机会缓存,那些域名服务器也广泛地使用了高速缓存。比如说,即使主机删除了缓存,但本地域名服务器没有删除,那么在主机向本地服务器进行查询时就能直接得到结果。

2.FTP协议

2.1FTP协议基础概念

2.1.1FTP协议是什么?

文件传输协议(FTP) 作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性可靠高效地传送数据。FTP为了保证可靠性使用的是TCP传输服务
FTP协议是基于C/S的协议,用户通过客户机程序连接到远程计算机上的服务器程序。
FTP服务器:提供FTP服务,进行文件传输的计算机。
FTP客户端:连接FTP服务器。遵循FTP协议进行文件传送的计算机。

2.1.2FTP协议的优势

FTP 协议与操作系统无关,任何操作系统上的程序只要符合 FTP 协议,就可以相互传输数据,提高文件的共享性以及可靠传输

2.2控制连接和数据连接

一个FTP服务器进程可同时为多个客户进程提供服务,FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;若干个从属进程,负责处理单个请求。
主进程的工作步骤如下:
1> 打开熟知端口(端口号为21),使客户进程能够连接上。
2> 等待客户进程发出连接请求。
3> 启动从属进程处理客户进程发来的请求。 从属进程对客户进程的请求处理完毕后就终止上,但从属进程在运行期间根据需要还可能创建其他子进程。
4>回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的。

在这里插入图片描述如上图,服务端有两个从属进程:控制进程和数据传送进程,同样用户端也有这两个进程而且还有一个用户界面进程。而且FTP使用两个并行的TCP连接来传输文件,一个是控制连接,一个是数据连接。控制连接用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“put”和“get:”文件的命令,使用端口21。数据连接用于实际传输一个文件,使用端口20
当服务器接收到FTP客户端发送的文件传输请求后,就创建了“数据传送进程”和”数据连接“,控制连接在整个会话期间一直打开,而当传送结束后数据传送连接就会断开。

2.2.1控制连接

一般来说,客户端有一个 Socket 用来连接 FTP 服务器的相关端口,它负责 FTP 命令的发送和接收返回的响应信息。一些操作如“登录”、“改变目录”、“删除文件”,依靠这个连接发送命令就可完成
数据端口。

2.2.2数据连接

主要是显示目录列表,上传、下载文件,我们需要依靠另一个 Socket来完成。

2.3两种工作模式

如果使用被动模式,通常服务器端会返回一个端口号。客户端需要用另开一个 Socket 来连接这个端口,然后我们可根据操作来发送命令,数据会通过新开的一个端口传输。

如果使用主动模式,通常客户端会发送一个端口号给服务器端,并在这个端口监听。服务器需要连接到客户端开启的这个数据端口,并进行数据的传输。

简单说:主动模式是客户端在建立控制连接后,数据传送连接是由服务器发起建立的,但容易被客户端的防火墙拦截。被动模式就是客户端自动连接服务器端口建立数据传送连接。
下面对 FTP 的主动模式和被动模式做一个简单的介绍。

2.3.1主动模式 (PORT)

主动模式下,客户端随机打开一个大于 1024 的端口向服务器的命令端口 P,即 21 端口,发起连接,同时开放N +1 端口监听,并向服务器发出 “port N+1” 命令,由服务器从它自己的数据端口 (20) 主动连接到客户端指定的数据端口 (N+1)

FTP 的客户端只是告诉服务器自己的端口号,让服务器来连接客户端指定的端口。对于客户端的防火墙来说,这是从外部到内部的连接,可能会被阻塞。

2.3.2被动模式 (PASV)

为了解决服务器发起到客户的连接问题,有了另一种 FTP 连接方式,即被动方式。命令连接和数据连接都由客户端发起,这样就解决了从服务器到客户端的数据端口的连接被防火墙过滤的问题。

被动模式下,当开启一个 FTP 连接时,客户端打开两个任意的本地端口 (N > 1024 和 N+1) 。

第一个端口连接服务器的 21 端口,提交 PASV 命令。然后,服务器会开启一个任意的端口 (P > 1024 ),返回如“227 entering passive mode (127,0,0,1,4,18)”。 它返回了 227 开头的信息,在括号中有以逗号隔开的六个数字,前四个指服务器的地址,最后两个,将倒数第二个乘 256 再加上最后一个数字,这就是 FTP 服务器开放的用来进行数据传输的端口。如得到 227 entering passive mode (h1,h2,h3,h4,p1,p2),那么端口号是 p1*256+p2,ip 地址为h1.h2.h3.h4。这意味着在服务器上有一个端口被开放。客户端收到命令取得端口号之后, 会通过 N+1 号端口连接服务器的端口 P,然后在两个端口之间进行数据传输。

2.4各种指令与响应码

2.4.1FTP 命令

FTP 每个命令都有 3 到 4 个字母组成,命令后面跟参数,用空格分开。每个命令都以 "\r\n"结束。

要下载或上传一个文件,首先要登入 FTP 服务器,然后发送命令,最后退出,这个过程中,主要用到的命令有 USER、PASS、SIZE、REST、CWD、RETR、PASV、PORT、QUIT。

USER: 指定用户名。通常是控制连接后第一个发出的命令。“USER gaoleyi\r\n”: 用户名为gaoleyi 登录。

PASS: 指定用户密码。该命令紧跟 USER 命令后。“PASS gaoleyi\r\n”:密码为 gaoleyi。

SIZE: 从服务器上返回指定文件的大小。“SIZE file.txt\r\n”:如果 file.txt 文件存在,则返回该文件的大小。

CWD: 改变工作目录。如:“CWD dirname\r\n”。

PASV: 让服务器在数据端口监听,进入被动模式。如:“PASV\r\n”。

PORT: 告诉 FTP 服务器客户端监听的端口号,让 FTP 服务器采用主动模式连接客户端。如:“PORT h1,h2,h3,h4,p1,p2”。

RETR: 下载文件。“RETR file.txt \r\n”:下载文件 file.txt。

STOR: 上传文件。“STOR file.txt\r\n”:上传文件 file.txt。

REST: 该命令并不传送文件,而是略过指定点后的数据。此命令后应该跟其它要求文件传输的 FTP 命令。“REST 100\r\n”:重新指定文件传送的偏移量为 100 字节。

QUIT: 关闭与服务器的连接。

2.4.2FTP 响应码

客户端发送 FTP 命令后,服务器返回响应码。

响应码用三位数字编码表示:
第一个数字给出了命令状态的一般性指示,比如响应成功、失败或不完整。
第二个数字是响应类型的分类,如 2 代表跟连接有关的响应,3 代表用户认证。
第三个数字提供了更加详细的信息。

第一个数字的含义如下:
1 表示服务器正确接收信息,还未处理。
2 表示服务器已经正确处理信息。
3 表示服务器正确接收信息,正在处理。
4 表示信息暂时错误。
5 表示信息永久错误。

第二个数字的含义如下:
0 表示语法。
1 表示系统状态和信息。
2 表示连接状态。
3 表示与用户认证有关的信息。
4 表示未定义。
5 表示与文件系统有关的信息。

参考https://blog.csdn.net/xu735456/article/details/54846239

2.5FTP断点续传与匿名FTP

2.5.1断点续传

由于网络不稳定,在传输文件的过程中,可能会发生连接断开的情况,这时候需要客户端支持断点续传的功能,下次能够从上次终止的地方开始接着传送。需要使用命令 REST。如果在断开连接前,一个文件已经传输了 512 个字节。则断点续传开始的位置为 512,服务器会跳过传输文件的前 512 字节。

2.5.2匿名FTP

匿名FTP 即匿名文件传输协议。用于对远程计算机的连接,这些计算机是作为匿名或客户用户进行连接的,以将公共文件传输到用户的本地计算机。

使用FTP时必须首先登录,在远程主机上获得相应的权限以后,方可上传或下载文件。也就是说,要想同哪一台计算机传送文件,就必须具有哪一台计算机的适当授权。匿名FTP就是为解决这个问题而产生的。

互联网中有很大一部分FTP服务器称为“匿名”FTP服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权

匿名文件传输能够使用户与远程主机建立连接并以匿名的身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。

用户使用特殊的用户名anonymous,许多系统用户要求用户将E-mail地址作为口令,便可登陆“匿名”FTP服务器,访问远程主机上公开的文件。

匿名FTP一直是Internet上获取信息资源的最主要方式,在Internet成千上万的匿名FTP主机中存储着无以计数的文件,这些文件包含了各种各样的信息、数据和软件。如 red hat、autodesk等公司的匿名站点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机网络笔记四(应用层:DNS协议、FTP协议) 的相关文章

  • Java集合(List、Set、Map)

    Java中的集合是用于存储和组织对象的数据结构 Java提供了许多不同的集合类 包括List Set和Map等 以满足不同的需求 下面将介绍一些常见的Java集合类及其使用方法 一 List List是一个有序的集合 它允许元素重复出现 并
  • MultipleFile转File、File转Byte

    MultipleFile转File File转Byte 工具类 file2byte param file return public static byte convertFileToByteArray File file try File

随机推荐

  • 多维数组np.pad函数的理解

    多维数组np pad函数的理解 原函数是 np pad array x1 y1 x2 y2 x3 y3 constant x1 y1 意思是着在a这个三维矩阵中 整个大矩阵中首尾分别添加x1 y1个和a中各个矩阵形状一样的0矩阵 效果如下图
  • 抓取鼠标动画

    今天给大家分享一个抓取鼠标的动画 嗯 真的是抓取鼠标 代码如下
  • python怎么封装函数_python怎么封装函数

    什么是封装 在程序设计中 封装 Encapsulation 是对具体对象的一种抽象 即将某些部分隐藏起来 在程序外部看不到 其含义是其他程序无法调用 要了解封装 离不开 私有化 就是将类或者是函数中的某些属性限制在某个区域之内 外部无法调用
  • 连接器出线方法分享(持续更新)

  • 基于情境化时空网络的出租车OD需求预测

    1 文章信息 Contextualized Spatial Temporal Network for Taxi Origin Destination Demand Prediction 是2019年发表在IEEE上的一篇文章 2 摘要 本文
  • 区块链之添加节点

    1 查询节点信息 gt admin nodeInfo enode enode b817560f061b1f14551f87060806847c4c6b7cf8b56b6027fd3d8400c3abb4e2a3d535dd78ab46f28
  • CAD打开字体无法选择,cad打开无字体,cad无法加载字体

    在命令栏中输入filedia 然后回车 输入1保存关闭 再重新打开即可
  • gcc编译出现:error: invalid operands to binary & (have ‘char *’ and ‘int *’)

    1 2 gt File Name ptr variable c 3 gt Author Mr Yang 4 gt Purpose 演示指向变量的指针 5 gt Created Time 2017年06月03日 星期六 08时47分33秒 6
  • JDBC PostgreSQL

    上一节 JDBC可以操作多种数据库 而且都是标准化操作 区别仅仅在使用不同的数据库连接驱动程序 及URL连接方式的书写 引用SQL包 import java sql public class JDBCTest param args publ
  • 关于RocketMq消息积压问题排查

    1 最近生产的mq出现了一个问题 我的消费者是集群 就是双节点 现在消息积压到1亿多条 如下图所示 其中有两个问题 问题1 就是为什么我的消息积压这么多 问题2 我的消费者是集群 为什么只有一台消息在消费 2 接着开始排查问题 结果发现在消
  • conda进行transformers安装

    首先建立新环境 conda create n myenv python 3 8 安装numpy和pytorch conda install numpy conda install pytorch torchvision torchaudio
  • 人脸检测 + 数据训练 + 人脸识别

    准备工作 安装opencv pip install opencv 安装opencv contrib pip install opencv contrib 创建文件夹 文件结构为 一 编写一个基础的人脸识别 import cv2 as cv
  • 服务器存档里怎么修改器,云服务器存档修改器

    云服务器存档修改器 内容精选 换一换 修改云服务器信息 目前支持修改云服务器名称及描述和hostname 该接口支持企业项目细粒度权限的校验 具体细粒度请参见 ecs cloudServers put云服务器hostname修改后 需要重启
  • 面试官常问到的问题

    dom是什么 虚拟DOM又是什么 有何作用 谈谈你对vue的理解以及2和3的区别 双向数据绑定 数据类型有哪些 深拷贝和浅拷贝是什么 它们的区别是什么 组建通信了解吗 重绘和回流是什么 一般开发用什么布局 VUEX了解吗 说说它的五大属性及
  • react-native 屏幕尺寸和文字大小适配

    转载存档 现在的手机品牌和型号越来越多 导致我们平时写布局的时候会在个不同的移动设备上显示的效果不同 比如我们的设计稿一个View的大小是300px 如果直接写300px 可能在当前设备显示正常 但到了其他设备可能就会偏小或者偏大 这就需要
  • yum私有仓库的实现

    目录 一 yum私有仓库的实现 二 画图 TCP协议和三次握手及四次挥手 三 centos ubuntu 静态网卡IP配置 四 实现免密登录脚本 expect登录远程主机 将生成的密钥写入到目标主机 expect测试远程登录 一 yum私有
  • GB2312编码理解

    计算机信息交换使用汉字编码字符集是国家1980年发布 标准号为 GB2312 1980 GB2312编码主要适用于汉字处理 汉字通讯等系统之间的信息交换 基本集主要收集了6763个汉字和682个图形字符 整个字符集分成94个区 每个区有94
  • 坐标变换(1)—向量和坐标系

    1 标量 在介绍向量之前 有必要介绍一下标量 scalar 标量是一个数字 只有大小 没有方向 不过有正负 例如温度 重量等 2 向量 向量 vector 是多个数字组成的列表 n n n个有次序的数 x 1
  • [授权发表]Shell编程范例之文件操作

    by falcon 最初发表 泰晓科技 聚焦嵌入式 Linux 追本溯源 见微知著 原文链接 Shell编程范例之文件操作 评论说明 为更好地聚合大家的讨论 请到上面原文的评论区回复 前言 这一周我们来探讨文件操作 在日常学习和工作中 我们
  • 计算机网络笔记四(应用层:DNS协议、FTP协议)

    1 DNS协议 1 1DNS协议基本概念 1 1 1什么是域名 域名 英语 Domain Name 又称网域 是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称 用于在数据传输时对计算机的定位标识 有时也指地理位置