应用层(三)
参考链接:【FTP】详解 - peterYong - 博客园 (cnblogs.com)
FTP(File transfer protocol)
传输过程
可以向远程主机传输文件或传来文件
- 用户首先提供远程主机名字,使本地的FTP客户进程与远程FTP服务器进程建立TCP命令连接(端口:21)
- 用户接着提供用户标识和密码,通过TCP连接作为FTP指令传给服务器
- 服务器授权用户控制连接,用户浏览和发送指令到远程文件系统
- 服务器接收到传输指令,打开第二个与客户端的TCP数据连接(端口:20)
- 传输完一个文件,服务器就关闭数据连接(非持久性,而控制连接始终保持开启,是持久性);当再需要文件传输就再打开一个传输连接
FTP VS HTTP
FTP | HTTP | |
---|---|---|
作为支撑的运输层协议 | TCP | TCP |
协议类型 | 文件传输协议 | 超文本传输协议 |
面向对象 | 文件 | 网页 |
默认端口 | 21、20 | 80 |
使用连接 | 2个:控制和数据连接 | 1个 |
持久性 | 控制连接持久 数据连接非持久 | 既可持久也可非持久 默认持久连接 |
控制信息 | 带外(out of band)传送 | 带内(in band)传送 |
状态 | 状态协议(整个会话期间必 须持续追踪用户状态信息) | 无状态协议 |
FTP命令
- USER username
- PASS password
- LIST 返回当前目录的文件
- RETR filename:取出远程主机的当前目录下的文件(建立data connection)
- STOR filename:存储文件到远程主机的当前目录
FTP回复
状态码+短语(类似HTTP)
- 331 Username OK, password required
- 125 data connection already open; transfer starting
- 425 Can't open data connection
- 452 Error writing file
补充
- 在FTP中,文件组织为records、pages或a stream of bytes,它们属于FTP的数据结构
- 在FTP中,有三类transmission modes:stream、block和compressed
- In FTP, ASCII, EBCDIC, and image define an attribute called file type
因特网中的电子邮件
最早发展的流行应用程序,当今因特网最重要和实用的应用程序之一
电子邮件是一种异步(asychronous)通信媒介,方便时就可以收发邮件,更加快捷便宜分发;现今的电子邮件还包括有许多强大的特性,包括具有附件、超链接、HTML格式文本和图片的报文
3大主要组成部分
- 用户代理(user agents):相当于邮件阅读器,具有撰写、编辑、阅读、回复、转发、保存邮件报文的功能
- 邮件服务器(mail server):形成了电子邮件系统的核心,邮箱(mailbox)管理和维护发送到的报文,报文队列(message queue)存放要发送的邮件消息
- 简单邮件传输协议(SMTP,Simple Mail Transfer Protocol)
当一个邮件服务器向其他邮件服务器发送邮件,其作为SMTP的客户;当邮件服务器从其他邮件服务器接收邮件时,其作为SMTP的服务器
SMTP
使用TCP传输邮件报文,端口为25,持久连接,报文必须用7位ASCII码标识
传输过程:
握手$\rightarrow$报文传输$\rightarrow$关闭
- A使用邮件代理程序编写邮件,填写接收人B的邮箱地址
- A的用户代理将报文发给它的邮件服务器,报文放在报文队列
- A的SMTP客户端创建到B的邮件服务器的TCP连接
- SMTP握手后发送A的报文
- B的SMTP服务器端接收报文后放在B的邮箱中
- B方便时就可以使用用户代理来阅读邮件
SMTP命令:HELO、MAIL FROM、RCPT TO、DATA、CRLF.CRLF、QUIT
实操
telnet连接邮箱端口25
向smtp发送helo指令,返回250 OK
登录smtp服务器,账号和授权码均需要base64编码
写邮件发送和接收方
输入data进入邮件报文撰写,显示header lines的发送方、接收方和主题,接着空一行写邮件内容,写完后换行输入点号结束,发送即可成功
貌似有些字符乱了……
与HTTP的对比
SMTP | HTTP | |
---|---|---|
功能(传送文件) | 从一个邮件服务器向另一个传送电子邮件报文 | 从Web服务器向Web客户传送对象 |
拉/推协议 | 推协议:发送邮件服务器把文件推向接收邮件服务器 | 拉协议:从服务器拉取文件 |
数据格式 | 7-bit ASCII | 无所谓 |
封装 | 所有报文对象放在一个报文之中 | 把每个对象封装到自己的HTTP响应报文 |
状态 | 状态协议 | 无状态协议 |
连接 | 持久连接 | 持久、非持久均可 |
邮件报文格式
类似信件格式
header lines:
- To:(required)
- From:(required)
- Subject:(optional)
body:
- ASCII
- MIME(Multiple Internet Mail Extensions,多用途互联网邮件扩展):通过添加额外的头部行信息实现内容的扩展
eg:MIME-Version、Content-Transfer-Encoding、Content-Type
邮件访问协议
邮件由A交给B,B肯定不可能一直开着PC,所以邮件服务器交由ISP进行维护,保持开机。但是用户代理不能使用SMTP得到报文,因为取报文是一个拉操作,而SMTP是一个推协议。因此引入一个特殊的邮件访问协议来解决,eg:POP3、IMAP、HTTP
POP3(Post Office Protocol——Version 3,第三版邮局协议)
端口110,三个阶段:认证(authorization)——事务处理(transaction)——更新(update)
认证
:用户代理发送用户名和密码鉴别用户
user 账户
pass 密码
server response:+OK/-ERR
事务处理
:用户代理取回报文(同时可以对报文进行删除标记,取消标记以及获取邮件的统计信息)
list:列出报文号和大小
retr 报文号:根据报文号显示报文全部内容
dele 报文号:删除
quit
在这个阶段,用户代理通常被用户配置为“下载并删除”或“下载并保留”
下载并删除:邮件接收方可能是移动的,客户端变化后无法查看和访问邮件
下载并保留:不同客户端都存储着报文
更新
:出现在quit命令后,结束POP3会话,邮件服务器删除被标记为删除的报文
POP3会话期间不携带状态信息,属于无状态协议
IMAP(Internet Mail Access Protocol,因特网邮件访问协议)
POP3无法建立远程文件夹存放报文,因此有了IMAP;IMAP会话期间始终保持状态信息
HTTP
基于浏览器的邮件管理,现在qq邮箱等就是这样的