🌕写在前面
- 🍊博客主页:kikoking的江湖背景
- 🎉欢迎关注🔎点赞👍收藏⭐️留言📝
- 🌟本文由 kikokingzz 原创,CSDN首发!
- 📆首发时间:🌹2021年11月25日🌹
- 🆕最新更新时间:🎄2021年11月25日🎄
- ✉️坚持和努力一定能换来诗与远方!
- 📤上一话:408必看之·你确定你了解应用层吗?(上)
- 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢感谢感谢!
目录
🌕写在前面
🔥1.文件传输协议(FTP)
🍊1.1FTP的概念
🍊1.2FTP提供的服务
🍊1.3FTP的工作方式
🍊1.4控制连接
🍊1.5数据连接
🍓数据连接的两种传输模式
🌟主动模式PORT:(服务器连接到客户端)
🌟被动模式PASV:(客户端连接到服务器)
🍊1.6FTP的缺点与改进
🍓FTP的缺点
🍓NFS网络文件系统
🔥2.电子邮件
🍊2.1电子邮件系统的组成结构
🍓2.1.1用户代理
🍓2.1.2邮件服务器
🍓2.1.3电子邮件使用的协议
🍓2.1.4电子邮件的收发过程
🍊2.2电子邮件格式与MIME
🍓2.2.1电子邮件格式
🍓2.2.2多用途网际邮件扩充(MIME)
🔥2.3 SMTP协议
🍊2.3.1SMTP的概念
🍊2.3.2 SMTP的工作方式
🍊2.3.3 SMTP通信流程
🔥2.4 POP3协议
🍊2.4.1 POP3的概念
🍊2.4.2 POP3的工作方式
🔥2.5 IMAP协议
🍊2.5.1 IMAP的概念及功能
🔥3.1 WWW的概念与组成
🍊3.1.1 WWW的概念
🍊3.1.2 WWW的组成
🍓1.统一资源定位符(URL)
🍓2.超文本传输协议(HTTP)
🍓3.超文本标记语言(HTML)
🔥3.2 超文本传输协议(HTTP)
🍊3.2.1 HTTP的概念
🍊3.2.2 HTTP的工作过程
🍊3.3.3 HTTP的特点
🍊3.3.4 HTTP的非持久连接(HTTP/1.0)
🍊3.3.5 HTTP的持久连接(HTTP/1.1)
🍊3.3.6 HTTP的报文结构
🍓开始行
🍓首部行
🍓实体主体
🔥1.文件传输协议(FTP)
🍊1.1FTP的概念
·文件传输协议(File Transfer Protocol)是互联网上使用得最广泛的文件传输协议。FTP提供交互式的访问,允许✅客户指明文件的类型与格式,并允许文件具有存储权限。它屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件📃
🍊1.2FTP提供的服务
1.提供不同种类主机(硬、软件体系等都可以不同)系统间的文件传输
2.以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
3.以匿名FTP的方式提供公用文件共享的能力
- 针对文件传输FTP,系统管理员建立了一个特殊的用户ID,名为anonymous,即匿名用户。
- internet上的任何人在任何地方,只要在要求提供用户ID时输入anonymous,该用户ID的密码可以使是任何字符串
🍊1.3FTP的工作方式
🍓FTP采用客户/服务器的工作方式,它使用TCP可靠传输服务
🍓一个FTP服务器进程可同时为多个客户进程提供服务
🍓FTP的服务器进程由两大部分组成:
·一个主进程:负责接收新的请求
·若干从属进程:负责处理单个请求,其工作步骤如下:
- 打开熟知端口21(控制端口),使客户进程可以连接上
- 等待客户进程发连接请求
- 启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止
- 回到等待状态,继续接收其他客户进程的请求
🍓FTP服务器必须在整个会话时期保留用户的状态信息
🍊1.4控制连接
- 服务器监听21号端口,等待客户连接
- 控制连接用来传输控制信息(如连接请求、传送请求等),并且控制信息都是以7位ASCII格式传送
- 控制连接在整个会话期间一直保持打开状态:在传输文件时还可以使用控制连接(如客户在传输中途发一个中止传输等命令)
🍊1.5数据连接
- 服务器端控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程”和“数据连接”。
- 数据连接:连接客户端和服务器端的数据传送进程
- 数据传送进程:完成实际文件的传送,在传送完毕后关闭“数据传送连接”并结束运行
🍓数据连接的两种传输模式
🌟主动模式PORT:(服务器连接到客户端)
- 建立控制连接:服务器打开21号端口,客户端建立TCP连接到服务器21号端口,登录成功后读取数据
- 客户端随机开放一个端口,并发送PORT命令告知服务器
- 服务器收到PORT命令和端口号后,通过20端口和客户端开放的端口连接,发送数据
🌟被动模式PASV:(客户端连接到服务器)
- 建立控制连接:服务器打开21号端口,客户端建立TCP连接到服务器21号端口,登录成功后读取数据
- 客户端发送PASV命令到服务器,服务器在本地随机开放一个端口,并告知客户端
- 客户端再连接到服务器开放的端口进行数据传输
🙋🏻为什么称FTP的控制信息是带外传送的呢?
答:因为FTP采用了一个分离的控制连接
🙋🏻为什么FTP采用两个独立的连接?
答:使用两条独立的连接可使FTP变得更加简单、更容易实现、更有效率;同时在文件传输过程中可以通过控制连接来中止、暂停数据传输
🍊1.6FTP的缺点与改进
🍓FTP的缺点
·使用FTP时,若要修改服务器上的文件,需要先将服务器上的文件传送到本地主机,修改后再将文件传回到原服务器,来回传送消耗很多时间
·不适合在两个计算机之间共享读写文件:因为带外传送的控制与数据分离
🍓NFS网络文件系统
它允许进程打开一个远程文件,并且能在该文件某个特定位置开始读写数据
可以使用户复制大文件中的一个很小的片段,而不需要复制整个大文件
✨✨✨我是分割线✨✨✨
🔥2.电子邮件
🍊2.1电子邮件系统的组成结构
🍓2.1.1用户代理
- 用户代理是一个运行在PC上的程序(电子邮件客户端软件),例如Outlook,Foxmail
- 用户与电子邮件系统的接口:用户代理为用户提供了一个收发邮件的接口
- 用户代理具有撰写,显示和邮件处理的功能
🍓2.1.2邮件服务器
- 功能:收发邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)
- 工作方式:客户/服务器方式工作;但它同时充当了客户与服务器
🍓2.1.3电子邮件使用的协议
🍓邮件发送协议
- 用于用户代理向邮件服务器发送邮件,或邮件服务器间互相发送邮件(如SMTP)
- SMTP是“推”的通信方式,SMTP客户端将邮件“推”到SMTP服务器
🍓邮件读取协议
- 用于用户代理从邮件服务器中读取邮件(如POP3)
- POP3是“拉”的通信方式,用户代理“拉”取用户邮箱中的邮件
🍓2.1.4电子邮件的收发过程
·下面简单介绍电子邮件的收发过程:
- 发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP把邮件传送给发送端邮件服务器。
- 发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。
- 运行在发送端邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起建立TCP连接。
- TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件。当所有待发送邮件发完后,SMTP就关闭所建立的TCP连接。
- 运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱,等待收信人在方便时进行读取。
- 收信人打算收信时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)。
✨✨✨我是分割线✨✨✨
🍊2.2电子邮件格式与MIME
🍓2.2.1电子邮件格式
🍓2.2.2多用途网际邮件扩充(MIME)
- 诞生原因:由于SMTP只能传送一定长度的(7位)ASCII码,许多非英语国家文字就无法传送,且无法传送可执行文件及其他二进制对象(图像,语音,视频),因此MIME诞生了!
- 与SMTP关系:MIME并未改动SMTP或取代它。MIME的意图是继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。也就是说,MIME邮件可在现有的电子邮件程序和协议下传送
·MIME主要包括以下三部分内容:
- 5个新的邮件首部字段,包括MIME版本、内容描述、内容标识、传送编码和内容类型
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变
✨✨✨我是分割线✨✨✨
🔥2.3 SMTP协议
🍊2.3.1SMTP的概念
·Simple Mail Transfer Protocol 简单邮件传输协议,是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息。
·用户浏览器与Hotmail或Gmail的邮件服务器之间的邮件发送或接收使用的是HTTP,而仅在不同邮件服务器之间传送邮件时才使用SMTP
🍊2.3.2 SMTP的工作方式
1.使用客户/服务器方式:
- 发送邮件的SMTP进程——SMTP客户
- 接收邮件的SMTP进程——SMTP服务器
2.使用TCP连接,端口号为25
🍊2.3.3 SMTP通信流程
·RCPT命令的作用
先弄清接收方系统是否已做好接收邮件的准备,然后才发送邮件,以便不至于发送了很长的邮件后才知道地址错误,进而避免浪费通信资源。
✨✨✨我是分割线✨✨✨
🔥2.4 POP3协议
🍊2.4.1 POP3的概念
Post Office Protocol 邮局协议,是一个非常简单但功能有限的邮件读取协议,现在使用的是它的第3个版本 POP3
🍊2.4.2 POP3的工作方式
1.使用客户/服务器的工作方式
2.在传输层使用TCP,端口号为110
3.POP3采用的是“拉”的通信方式,当用户读取邮件时,用户代理向邮件服务器发起请求,“拉”取用户邮箱中的邮件
4.下载并保留:在“下载并保留”方式下,用户从邮件服务器上读取邮件后,邮件依然会保存在邮件服务器上,用户可再次从服务器上读取该邮件
5.下载并删除:使用“下载并删除”方式时,邮件一旦被读取,就被从邮件服务器上删除,用户不能再次从服务器上读取
- ⚠️1.POP3协议在传输层是使用明文来传输密码的,不对密码加密
- ⚠️2.POP3协议基于ASCII码,如果传输非ASCII码数据,需要使用MIME将数据转换为ASCII码形式
✨✨✨我是分割线✨✨✨
🔥2.5 IMAP协议
🍊2.5.1 IMAP的概念及功能
- 因特网报文存取协议(IMAP)为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,为此IMAP服务器维护了会话用户的状态信息。
- 允许用户代理只获取报文的某些部分,例如可以只读取一个报文的首部,或多部分MIME报文的一部分。这非常适用于低带宽的情况,用户可能并不想取回邮箱中的所有邮件,尤其是包含很多音频或视频的大邮件。
✨✨✨我是分割线✨✨✨
🔥3.1 WWW的概念与组成
🍊3.1.1 WWW的概念
·World Wide Web 万维网是一个分布式、联机式的信息存储空间,是无数个网络站点和网页的集合,它们在一起构成了因特网最主要的部分(因特网也包括电子邮件、Usenet和新闻组)
·万维网以客户/服务器方式工作:
- 万维网客户程序:浏览器
- 万维网服务器:万维网文档所驻留的主机则运行服务器程序
·客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。工作流程如下:
- Web用户使用浏览器(指定URL)与Web服务器建立连接,并发送浏览请求。
- Web服务器把URL转换为文件路径,并返回信息给Web浏览器。
- 通信完成,关闭连接。
🍊3.1.2 WWW的组成
🍓1.统一资源定位符(URL)
·负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符URL
·URL相当于一个文件名在网络范围的扩展,其一般形式是:<协议>://<主机>:<端口>/<路径>
<协议>指用什么协议来获取万维网文档,常见的协议有http、ftp等;<主机>是存放资源的主机在因特网中的域名或IP地址
<端口>/<路径>有时可省略。在URL中不区分大小写。
https://blog.csdn.net/qq_54151955
🍓2.超文本传输协议(HTTP)
·定义 :一个应用层协议,它使用TCP连接进行可靠的传输,HTTP 是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。
·功能:网络资源通过超文本传输协议(HTTP)传送给使用者,而后者通过点击链接来获取资源。
🍓3.超文本标记语言(HTML)
·定义:一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文字、声音、图像、视频等)、格式进行描述。
·功能:HTML使得万维网页面的设计者可以很方便地用一个超链接从本页面的某处链接到因特网上的任何一个万维网页面,并能够在自己的计算机屏幕上显示这些页面。
✨✨✨我是分割线✨✨✨
🔥3.2 超文本传输协议(HTTP)
🍊3.2.1 HTTP的概念
·HTTP定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。从层次的角度看,HTTP是面向事务的(Transaction-oriented)应用层协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
🍊3.2.2 HTTP的工作过程
用户单击鼠标后所发生的事件按顺序如下(以访问kikokingzz主页的网站为例)
- 浏览器分析链接指向页面的URL(https://blog.csdn.net/qq_54151955)
- 浏览器向DNS请求解析 blog.csdn.net 的IP地址
- 域名系统DNS解析出kikokingzz主页服务器的IP地址
- 浏览器与该服务器建立TCP连接(默认端口号为80)
- 浏览器发出HTTP请求:GET/chn/index.htm
- 服务器通过HTTP响应把文件index.htm发送给浏览器
- 释放TCP连接
- 浏览器解释文件index.htm,并将Web页显示给用户
🍊3.3.3 HTTP的特点
1.HTTP是本身是无连接的,但是使用了TCP连接
2.HTTP是无状态的:同一个客户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同。因为服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次
🍊3.3.4 HTTP的非持久连接(HTTP/1.0)
·对于非持久连接,每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个 TCP连接,如下图所示:(第三次握手的报文段中捎带了客户对万维网文档的请求)。也就是说,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT(一个RTT用于TCP连接,另一个RTT用于请求和接收文档)。每个对象引用都导致2xRTT的开销,此外每次建立新的TCP连接都要分配缓存和变量,使万维网服务器的负担很重。
🍊3.3.5 HTTP的持久连接(HTTP/1.1)
🍊3.3.6 HTTP的报文结构
·HTTP是面向文本的,因此报文中的每个字段都是一些ASCII码串,并且每个字段的长度都是不确定的。
·HTTP请求报文和响应报文都由三个部分组成。从上图可以看出,这两种报文格式的区别就是开始行不同。
🍓开始行
1.用于区分是请求报文还是响应报文。
2.在请求报文中的开始行称为请求行
3.在响应报文中的开始行称为状态行
4.开始行的三个字段之间都以空格分隔,最后的“CR”和“LF”分别代表“回车”和“换行”
5.HTTP请求报文中常用的几个方法
方法(操作) 意义 GET 请求读取由URL标识的信息 HEAD 请求读取由URL标识的信息的首部(主要作用:调试,不返回请求对象) POST 给服务器添加信息(提交表单) CONNECT 用于代理服务器 PUT 上传对象 6.HTTP响应报文中常用的状态代码
状态代码+英文名称 中文描述 200 OK 请求成功。一般用于GET与POST请求 301 Moved Permanently
永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 400 Bad Request 客户端请求的语法错误,服务器无法理解 404 Not Found 服务器无法根据客户端的请求找到资源(网页) 505 HTTP Version Not Supported 服务器不支持请求的HTTP协议的版本,无法完成处理
🍓首部行
首部行:用来说明浏览器、服务器或报文主体的一些信息。首部可以有几行,但也可以不使用。每个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
🍓实体主体