《图解TCP/IP》阅读笔记(第八章 8.1~8.4)—— 概要,TELNET、FTP、SMTP、POP、IMAP协议介绍

news2024/12/29 0:03:16

前言

本篇篇幅较长,请耐心或者选择性阅读。

第八章 应用协议

从本篇开始,将介绍一些应用层协议,一般情况下,人们不太会在意网络应用程序实际上是按照何种机制正常运行的。本章旨在介绍TCP/IP中所使用的几个主要应用协议,多处于OSI模型的第五层以上。


8.1 应用层协议概要

本章开始所要介绍的应用协议主要是指OSI参考模型中第五层、第六层、第七层上半部分的协议。

image-20221228124433676

利用网络的应用程序有很多,包括Web浏览器、电子邮件、远程登录、文件传输、网络管理等。能够让这些应用进行特定通信处理的正是应用协议。

TCP和IP等下层协议不依赖于上层应用类型、适用性非常广的协议。而用应协议则是为了实现某种应用而设计和创造的协议。例如,远程登录等应用经常使用的TELNET协议,它的支持基于文字的命令与应答,通过命令可以执行各种各样的其他应用。

网络应用由不同的用户和软件供应商开发而成。为了实现网络应用的功能,在应用之间进行通信时将其连接的网络协议是非常重要的。设计师和开发人员根据开发模块的功能和目的,可以利用现有的应用协议,也可以自己定义一个新的应用协议。

应用可以直接享用传输层以下的基础部分,因为开发者只需要关心选用哪种应用协议、如何开发即可,而不必担心应用中的数据该以何种方式发送到目标主机等问题。这也是得益于网络层。

TCP/IP的应用层涵盖了7层网络模型第5、6、7层的所有功能,不仅包含了管理通信连接的会话层功能、转换数据格式的表示层功能,还包括与对端主机交互的应用层功能在内的所有功能。


8.2 远程登录

image-20221227152625778

远程登录是为了实现TSS(Time Sharing System,分时系统)环境,是将主机和终端的关系应用到计算机网络上的一个结果。TSS中通常有一个处理能力非常强的主机,围绕该主机的是处理能力没有那么强的多个终端机器,这些终端通过专线与主机相连。

远程登录主要使用的是TELNETSSH(Secure SHell)两种协议。


TELNET利用TCP的一条连接,通过该连接向主机发送文字命令并在主机上执行。本地用户好像直接与远端主机内部的Shell(值操作系统提供给用户的、便于使用该系统中各种功能的一种用户接口,可以解释用户从键盘或鼠标输入的内容,并让操作系统执行。UNIX中的sh、csh、bash,Windows中的Expolorer,MAC OS中的Finder等都属于该范畴)相连着似的,可以直接在本地操作。

image-20221227153427021

TELNET可以分为两类基本服务。一是在仿真终端功能,二是协商选项机制。

TELNET常用于登录路由器或高性能交换机等网络设备进行相应的设置。通过TELNET登陆主机或路由器等设备时需要将自己的登录用户名和密码祖册到服务端。

TELNET中除了处理用户所输入的文字外,还提供选项的交互和协商功能。例如,为实现仿真终端(NVT,Network Virtual Terminal)所用到的界面控制信息就是通过选项功能发送出去的。如下图所示,TELNET中的行模式或透明模式两种模式的设置,也是通过TELNET客户端与TELNET服务端之间的选项功能进行设置的。

image-20221227154040405

书中还特意介绍了一下TELNET客户端,其就是利用TELNET协议实现远程登录的客户端程序。很多情况下,它的程序名就是telnet命令。

通常TELNET可坏蛋通常与目标主机的23号端口建立连接,并于监听这个端口的服务器端程序telnetd进行交互。当然,也可以与其他TCP端口号连接,只要在该端口上邮件听程序能够处理telnet请求即可。在一般的telnet命令中可以按照如下格式指定端口号:

telnet主机名 TCP端口号

TCP端口号=21时可以连接到FTP应用,=25时可以连接到SMTP,=80时可以连接到HTTP,=110时可以连接到POP3。如此看来,每个服务器都有相应的端口号在等待连接。

因此,以下两个命令可以视为相同:

ftp 主机名
telnet 主机名 21

鉴于以上提到的这些协议的命令和应答都是字符串,因此通过TELNET客户端连接以后可以直接输入这些协议的具体命令。TELNET客户端也可用于跟踪TCP/IP应用开发阶段的问题诊断。


SSH是加密的远程登录系统,TELNET中登录时无需输入密码就可以发哦是哪个,容易造成通信窃听和非法入侵的危险。使用SSH后可以加密通信内容,即使信息被窃听也无法破解所发送的密码、具体命令以及命令返回的结果是什么。

SSH还包括很多非常方便的功能:

  • 可以使用更强的认证机制
  • 可以转发文件(UNIX中可以使用scp、sftp等命令)
  • 可以使用端口转发功能(X Window System串口展现)

端口转发是指将特定端口号所收到的消息转发到特定的IP地址和端口号码的一种机制。由于经过SSH连接的那部分内容被加密,确保了信息安全,提供了更为灵活的通信(可以实现虚拟专用网(VPN,Virtual Private Network)).

image-20221227160420304

8.3 文件传输

image-20221227170759696

FTP(File Transfer Protocol,文件传输协议)是在两个相连的计算机之间进行文件传输时使用的协议。FTP也需要在登录到对方的计算机后才能进行相应的操作。

互联网中有一种FTP服务器允许任何人进行访问,叫做匿名服务器(anonymous ftp),登录这些服务器是使用匿名或ftp都可以。


那么FTP是如何工作的呢?

FTP使用两条TCP连接,一条用于控制,另一条用于数据(文件)的传输。

用于控制的TCP连接主要在FTP的控制部分应用。例如登陆用户名和密码的验证、发送文件的名称、发送方式的设置。利用该连接可以通过ASCII码字符串发送请求和接收应答(请求和应答的条目在书中用两个表进行了介绍,鉴于篇幅内容,此处就不再放入两个表格,有兴趣者可以自行查阅)。控制用连接占用的是TCP21号端口,在该端口上进行文件GET(RETR)、PUT(STOR)以及文件一览(LIST)等操作时,每次都会建立一个用于数据传输的TCP连接,文件一览表也是在这个新建的连接上进行。当数据传送完毕之后,传输数据的这条连接也会被断开,然后会在控制用的连接上继续进行命令或应答的处理。

通常,用于数据传输的TCP连接是按照与控制用的连接相反的方向建立的。因此,在通过NAT连接外部FTP服务器的时候,无法直接建立传输数据时使用的TCP连接。此时,必须使用PASV命令修改建立连接的方向才行。

而控制用的连接,在用户要求断开之前会一直保持连接状态,不过绝大多数FTP服务器都会对长时间没有任何新命令输入的用户连接强制断开。

数据传输用的TCP连接通常使用端口20,也可以用PORT命令修改为其他值,出于安全考虑,普遍在数据传输用的端口号中使用随机数进行分配。

image-20221227172549181


FTP中,请求命令使用“RETR”等ASCII码字符串,针对这些命令的应答则使用如“200”等3位数字的ASCII码字符串。TCP/IP的应用协议中有很多使用这种ASCII码字符串的协议。

对于ASCII码字符串型协议来说,换行具有重要意义。很多情况下,一行字符串表示一个命令或一个应答,而空白则用来表示与参数之间的分隔符。即,命令和应答的消息通过换行区分、参数用空格区分。换行由“CR”(ASCII十进制数为13)和“LF”(ASCII十进制数为10)两个控制符号组成。


8.4 电子邮件

image-20221227173941055

电子邮件发送距离不受限,在日常生活中的使用频率不输于聊天软件。电子邮件也支持邮件组的服务,指可以向该组内的所有用户同时发送邮件的功能。

提供电子邮件服务的协议叫做SMTP(Simple Mail Transfer Protocol)。为了实现高效发送邮件内容,其在传输层使用了TCP协议。

早期电子邮件是在发送端主机与接收端主机之间直接建立TCP连接进行邮件传输,发送人写好邮件后,内容会保存在发送端主机的硬盘中。然后与对端主机建立TCP连接,将邮件发送到对端主机的硬盘。当发送正常结束后,再从本地硬盘中删除邮件。如果发送过程中发现对端计算机因没有插电等原因没有收到邮件,发送端将等待一定时间后重发。这种方法看起来可靠性非常高。但是,互利网应用逐渐变得越发复杂,这种机制也将无法正常工作。例如,使用者的计算机事儿开机时而关机的情况下,只有连对端都处于开机状态才可能实现电子邮件的收发。下图就展示了早期电子邮件的发送过程。

image-20221227180244626

为了解决该问题,在技术上改变了以往直接在发送端和接收端主机之间建立TCP连接的机制,而引进了一种一直会连接电源的邮件服务器(相当于网关),发送端与接收端之间通过邮件服务器进行收发邮件,接收端从邮件服务器接收邮件时使用POP3(Post Office Protocol 3,邮局协议第3版)

我们都知道,使用电子邮件需要邮件地址,我们也很熟悉,通常邮件地址格式为:

名称@通信地址(包括邮件域名)

现在电子邮件的发送地址由DNS进行管理。DNS中注册有邮件地址,及其作为发送地址时对应的邮件服务器的域名,这些映射信息被称作为MX记录


在很长的一段时间内,互联网中的电子邮件只能处理文本格式的邮件。不过现在,电子邮件所能发送的数据类型已被扩展到MIME(Multiproce Internet Mail Extensions,广泛应用于互联网并极大的扩展了数据格式,还可以用于WWW和NetNews中),可以发送静态图像、动画、声音、程序等各种形式的数据。MIME规定了应用消息的格式,因此在OSI参考模型中相当于第六层表示层。

MIME基本上由首部和正文(数据)两部分组成。首部不能是空行,一旦出现空行,其后的部分将被视为正文数据。如果MIME首部的“Content-Type”中指定“Multipart/Mixed”,并以“boundary=”后面字符作为分隔符(开头一定要写“–”,间隔符后面也一定要写“–”),那么可以将多个MIME消息组合成为一个MIME消息。这就叫做multipart,即各个部分都由MIME首部和正文数据组成。

内容类型“Content-Type”定义了紧随收不信息的数据类型,以IP首部为例,其就类似于协议字段。下表中列出了具有代表性的“Content-Type”。

image-20221227183029233

下图则是MIME的举例:

image-20221227183110396


SMTP(Simple Mail Transfer Protocol),发送电子邮件的协议,建立在FTP协议之上,使用TCP的25号端口。其建立一个TCP连接之后,在这个连接上进行控制和应答以及数据的发送。客户端以文本的形式发出请求,服务端返回一个3位数字的应答。下图为SMTP协议工作的流程:

image-20221228103534308

SMTP以".“作为邮件正文的结束符,如果正文的行首有”.“,就会在之后追加一个”."。

接收邮件时如何行首出现两个"."字符,则删除其中一个。

需记,每个指令和应答的最后都必须追加换行指令(CR、LF)。

下表列出了SMTP中的一些主要命令:

image-20221228103254668

另外需要提到的一点是,随着电子邮件的普及,广告邮件与钓鱼链接的垃圾邮件日益严重。由于SMTP本身没有验证发送者的功能,通过"POP before SMTP"或者"SMTP认证(SMTP Authentication)"等功能进行认证,以此防止冒充发送者。

并且很多除了自己本域的邮件服务器以外,很多供应商已将网络设置为不与其他网络的25号端口进行通信。

书中同样列出了许多应答的3位数字,限于篇幅问题,此处也不再一一列出。


image-20221228104623198

SMTP的不利之处就在于它支持的是发送端主机的行为,而不是根据接收端的请求发送邮件。这样就会导致,接收端的人们无法在开机时收到关机时被发送的邮件。

为了解决该问题,引入了POP(Post Office Protocol)协议,该协议用于接收电子邮件,发送端的邮件根据SMTP协议将被转发给一直处于插电状态的POP服务器,客户端再根据POP协议从POP服务器接受对方发来的邮件。这个过程中,为了防止他人盗窃邮件内容,还要进行用户验证。

POP与SMTP一样,也是在客户端和服务器端建了一个TCP连接完成相应操作,其命令同样是较短的ASCII码字符串,应答更是简单,只有两种:正常情况下为"+OK",发送错误或异常的情况下为"-ERR"。

下图则展示了POP的工作机制:

image-20221228105027082


IMAP(Internet Message Access Protocol,交互邮件访问协议)

与POP类似,其也用于接收电子邮件,在POP中邮件有客户端进行管理,而在IMAP中邮件则由服务器进行管理。

使用IMAP时,可以不必从服务器上下载所有邮件,也可以阅读。正由于其是在IMAP服务器端处理MIME信息,所以可以实现某一封邮件含有10个附件时只下载其中的第7个附件的功能(POP中无法下载某个特定的附件,要想确认附件就得下载所有)。这样做在带宽较窄的线路上起着相当重要的作用。

而且IMAP可以在服务器上对“已读/未读”信息和邮件分类进行管理,因此即使在不同的计算机上打开邮箱,也可以保持同步。


本篇小结

本篇介绍了应用协议中具有代表性的几个协议。基本都是通过TCP建立连接。

首先为远程登录时使用的TELNET协议和SSH(Secure SHell)协议。

TELNET利用TCP的一条连接,向远端主机发送文字命令并在主机上执行。服务分为仿真终端(NVT,Network Virtual Terminal)功能,即模仿类似终端功能,以及协商选项功能,即开启一些选项的功能。

通常TELNET与目标主机的TCP23号端口连接,TCP端口号=21时可以连接到FTP应用,=25时可以连接到SMTP,=80时可以连接到HTTP,=110时可以连接到POP3。

SSH是一种加密的远程登录系统,较为安全,还可以使用端口转发功能(特定端口号收到的消息转发到特定IP地址和端口号码的一种机制)。值得一提的是,VPN就使用到了该技术。


之后是FTP(File Transform Protocol)文件传输协议,在两练的计算机之间进行文件传输时时用到的协议,由上文可以知道,FTP需要基于远程登录才能进行相应的操作。

FTP使用两条TCP连接,一条用于控制,一条用于数据传输。

控制用连接占用TCP21号端口,用于ASCII码字符串请求发送和接收应答(3位数字)。

数据连接占用TCP20号端口(也可以修改为其他值),是在控制用连接发送传输数据的相关请求后建立起来的,例如文件GET(RETR)、PUT(STOR)以及文件一览(LIST)等操作,当数据传送完毕后,这条连接就会被断开。值得一提的是,两条连接方向相反,若使用NAT连接外部FTP服务器,则需要使用PASV命修改连接方向。

不仅FTP,之后我们介绍的SMTP协议也是ASCII码字符串行协议。对于这种类型,换行操作非常重要,因为命令和应答消息要通过换行区分,而参数则使用空格区分。换行由“CR”(ASCII十进制数 = 13)和“LF”(ASCII十进制数 = 10)两个控制符号组成。


电子邮件使用到的协议叫做SMTP(Simple Mail Transfer Protocol),其建立在FTP之上,传输层同样使用了TCP。这个协议需要和POP3(Post Office Protocol 3)一起来讲。

早期的SMTP协议,正是由于使用了TCP连接,如果对端不在线,就无法连接,更不必谈发送邮件了。为了解决该问题,就使用到了POP3协议,即使用一种功能相当于“邮局”的服务器,通过该服务器,实现邮件的收发功能。

另外一提,早期的电子邮件只能发送文本内容,后期被扩展到MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型),该类型包括:

非ASCII字符文本;非文本格式附件(二进制、声音、图像等);由多部分(multiple parts)组成的消息体;包含非ASCII字符的头信息(Header information)。

MIME基本上首部 + 正文格式组成,多个MIME可以合并,各个部分都属于该格式。

SMTP使用TCP25号端口,客户端以ASCII码字符串形式发出请求,服务端则同样返回一个3位数字的应答。SMTP以".“作为邮件正文的结束符,每个指令和应答的最后都必须追加换行指令(CR、LF)。

另外需要提到的一点是,使用POP协议,即“POP before SMTP”或者“SMTP认证”等功能,可以防止别用有心者冒充发送者或者盗窃邮件。


POP(Post Office Protocol)协议就用于接收电子邮件,发送端的邮件根据SMTP协议将被转发给一直处于插电状态的POP服务器,客户端再根据POP协议从POP服务器接受对方发来的邮件,为了防止他人盗窃邮件内容,需要进行用户验证。

POP同样使用TCP建立连接,命令同样是ASCII码字符串,应答却简单,只有两种:正常情况下为"+OK",发送错误或异常的情况下为"-ERR"。

但使用POP的不方便之处在于,需要从服务器上下载所有邮件,有附件时也要下载全部附件。


IMAP(Internet Message Access Protocol,交互邮件访问协议)。目前已经发展到第四版。

与POP类似,其也用于接收电子邮件,在POP中邮件有客户端进行管理,而在IMAP中邮件则由服务器进行管理。使用IMAP时,可以不必从服务器上下载所有邮件,也可以阅读某封邮件;或者当一封邮件中有多个附件,可以不下载全部附件,只下载其中一个。

而且IMAP可以在服务器上对“已读/未读”信息和邮件分类进行管理,因此即使在不同的计算机上打开邮箱,也可以保持同步。

到此为止,我们本篇介绍了众多基于TCP的协议,一下进行一个汇总:

协议名端口号功能
TELNET23远程登录
FTP21(控制)
20(数据)
文件传输
SMTP25发送电子邮件
POP3110接收电子邮件,客户端控制
IMAP143接收电子邮件,服务器控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/124045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目管理中,培养高效项目团队的6大优势

大多数项目经理知道合作会促进生产力,并且对不同的团队都很有效。良好的团队合作使你能够顺利地运行不同的项目,克服障碍并实现目标。 它也会使完成项目所需的时间减少,并使资源得到更好的管理。更不用说,高质量的团队合作将有助…

第十四讲:神州交换机链路聚合配置

链路聚合(Link Aggregation)又称Trunk,是指将多个物理端口捆绑在一起,成 为一个逻辑端口,以实现出/入流量在各成员端口中的负荷分担,交换机根据用户配置的端口负荷分担策略决定报文从哪一个成员端口发送到对…

如何快速理解Python中的for循环?

人生苦短,我用python 这次来给大家带来一点干货, 我们将从一组基本例子和它的语法开始, 还将讨论与 for 循环关联的 else 代码块的用处。 然后我们将介绍迭代对象、迭代器和迭代器协议, 还会学习如何创建自己的迭代对象和迭代器…

微信小程序云开发之用户输入数据后excel表格导出升级版

大家好,我是csdn的小博主lqj_本人,最近在哔哩哔哩开始上传我的制作微信小程序的详细流程,大家可以关注一下哔哩哔哩:小淼前端 本次程序的详细视频教程已上传至哔哩哔哩: 腾讯云开发小程序之用户输入数据excel自动导出系…

HaaS EDU物联网项目实战:微信小程序实现云养花

HaaS EDU K1是一款高颜值、高性能、高集成度的物联网开发板,板载功能强大的4核(双核300Mhz M33双核1GHz A7)主芯片,2.4G/5G双频Wi-Fi,双模蓝牙(经典蓝牙/BLE),并自带丰富的传感器与小…

第一章 vscode安装java环境

要在Visual Studio Code中配置Java环境,需要完成以下步骤: 安装Java Development Kit (JDK)。首先,你需要安装Java Development Kit (JDK),这是Java的开发环境,包含了Java虚拟机、Java编译器和Java库等。可以前往Oracl…

Python基础知识入门(五)

Python基础知识入门(一) Python基础知识入门(二) Python基础知识入门(三) Python基础知识入门(四) 一、模块应用 模块是一个包含所有定义的函数和变量的文件,其后缀名…

2022年「博客之星」参赛博主:(天寒雨落)在等您评价 ~

目录 评价方法 参与规则 评选规则 评分规则 活动奖品 评价方法 点击链接:2022年「博客之星」参赛博主:天寒雨落-CSDN社区 在箭头所指位置做出打星评价。 参与规则 1.本次年度评选分为「博客之星|和「博客新星:以及「社区之星|。「博客新星:只针对…

Kafka — 1、基础介绍

1、消息队列简介 (1)同步:多个服务之间是同步完成一次请求 缺点: a. 性能比较差 b. 稳定性比较差,如果其中一个服务没有执行成功,则整个请求执行失败 (2)异步:加入【消息…

自动控制原理笔记-线性系统的稳态误差

目录 1.误差与稳态误差 2.计算稳态误差的一般方法 3.静态误差系数法 例题: 稳态误差是系统的稳态性能指标,是系统控制精度的度量。 这里讨论的只是系统的原理性误差,不包括非线性等因素所造成的附加误差。 计算系统的稳态误差以系统稳定…

洛谷千题详解 | P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题【C++语言】

博主主页:Yu仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C源码: C源码2: C源码3: ------------------------------------------------------------------------------…

2022博客之星年度总评选开始了

作者简介:陶然同学 专注于Java领域开发 熟练掌握Java、js等语言的“Hello World” CSDN原力计划作者、CSDN内容合伙人、Java领域优质作者、Java领域新星作者、51CTO专家、华为云专家、阿里云专家等 🎬 陶然同学🎥 由 陶然同学 原创&#…

Linux之SQL Server数据库安装

一、SQL Server简介 SQL Server 是一个关系数据库管理系统。它最初是由Microsoft Sybase 和Ashton-Tate三家公司共同开发的,于1988 年推出了第一个OS/2 版本。在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Micr…

密码学 公开密钥管理

PKU概念 Public Key Infrastructure PKI一般指公钥基础设施。 公钥基础设施是一个包括硬件、软件、人员、策略和规程的集合,用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。 基于PKI的信任模型 如果一个个体假设CA 能够建立并维持一…

ASP.NET Core 3.1系列(21)——EFCore中的更新实体操作

1、前言 前面的博客已经介绍过EFCore中关于新增和删除实体的相关操作,本文开始介绍EFCore中的更新实体操作。与新增实体和删除实体相比,更新实体的操作略微有些复杂,如果在代码的写法上不多加注意,那就很有可能会在后台生成效率低…

利用空余时间成为“业余”的自动驾驶的开发者

作为一名开发者,我时常会阅读一些相关的技术杂志和周刊,了解一些近期比较热门的技术和事件,要说现在技术领域最有发展前景的方向之一,很多人会想到自动驾驶。但现在国内做自动驾驶平台的并不多,其中百度做得是相对比较…

【Web】浅谈Http的请求方式和数据请求格式ContentType

我本来Http的请求方式和数据请求格式是大家开发过程中都默认知道的事情,直到我发现我的前端竟然不知道表单请求的时候,我觉得我有必要跟大家一起来讨论一下这个话题了。有可能我的前端小伙伴在学习的时候一开始就入手现在比较流行的前端框架如Vue、React…

3dmax 建模插件 Rappa Tools 3 笔记

1功能概述: RappaTools3是一个高级工具箱,为在3ds Max中工作的艺术家提供了各种各样的工具。主要的重点是加快工作流程和减少点击量。它提供了各种各样的工具,从选择工具到渲染工具。它可以帮助您完成创建3D艺术作品的整个过程。 它带有3个…

C#,图像二值化(05)——全局阈值的联高自适应算法及其源代码

阈值的选择当然希望智能、简单一些。应该能应付一般的图片。 What is Binarization? Binarization is the process of transforming data features of any entity into vectors of binary numbers to make classifier algorithms more efficient. In a simple example, trans…

优思学院|怎么把DPMO/不良率换算成六西格玛水平?

如何计算西格玛水平? 为了更形像化地说明西格玛水平(Sigma Level),我们设定一个场景作为例子,假设你是一家电力公司,你会如何评估你公司的质量水平呢?你可能会以电网供电时的正常运行时间来衡量…