《http应用协议的实现》由会员分享,可在线阅读,更多相关《http应用协议的实现(93页珍藏版)》请在金锄头文库上搜索。
1、1应用协议的实现应用协议的实现vv概概 述述vv应用协议规范应用协议规范vvSMTPSMTP通信协议通信协议vvPOP3POP3通信协议通信协议vvFTPFTP协议协议vvHTTPHTTP协议协议vv统一资源定位器统一资源定位器URLURL类与类与HTTPHTTP协议协议2概概 述述vTCP/IP模型将OSI参考模型中的会话层和表示层的功能合 并到应用层。针对各种各样的网络应用,应用层引入了许 多协议,称为应用协议。v应用协议服务于各种应用功能:收发电子邮件(E-mail)上传和下载文件浏览网站登录远程服务器v应用协议分为两种传输协议:UDP传输协议TCP协议传输协议v本章重点讨论基于底层TC
2、P和UDP协议套接字上的网络通 信的编程实现。3v基于TCP协议传输协议的应用层协议v基于UDP传输协议的应用层协议vRFC(Request For Comment )文档介绍应用协议规范应用协议规范4基于TCP协议的应用层协议v1TELNET,虚拟终端协议v2FTP(File Transfer Protocol) ,文件传输协议v3POP3(Post Office Protocol-Version 3) ,邮局协议-版本3v4IMAP4(Internet Message Access Pprotocol-Version 4) , Internet消息访问协议-版本4v5SMTP(Simple
3、 Mail Transfer Protocol) ,简单邮件传送协议v6HTTP(Hypertext Transfer Protocol) ,超文本传输协议v7HTTPS(Secure Hypertext Transfer Protocol) ,安全超文本传输 协议5表5-1 常见的应用层协议使用的TCP协议端口 协议端口服 务TELNET23 远程登录服务FTP21和20端口21用来控制会话,端口20用来实际传输 文件内容POP3110 访问远 程服务器上的电子邮件服务IMAP4143 Internet远程信息存取服务SMTP25 发送电子邮件服务HTTP80 用于万维网(WWW)的超文本传
4、送服务HTTPS443 安全超文本传送服务6基于UDP协议的应用层协议v1SNMP(Simple Network Management Protocol) 简单网络管理协议v2DNS(Domain Name Server)域名解析协议7RFC(Request For Comment) 文档介绍vTCP/IP协议是以RFC文档的形式发布的。RFC是描述互联网相关技 术规范的文档。 vRFC所在的官方网站为:http:/www.ietf.org/rfc.html。 RFC 编号协 议768用户数据报协议 (UDP)783日常文件传输协议 (TFTP)791Internet协议 (IP) 792In
5、ternet控制消息协议 (ICMP) 793传输 控制协议 (TCP协议 )821邮件传输协议 (SMTP,最新 更新RFC5336)RFC 编号协 议854Telnet协议 (TELNET)959文件传输协议 (FTP,最新更新RFC3659)1157简单 网络管理协议 (SNMP)1939邮局协议 -版本3(POP3,最新更新RFC5034)1945超级文本传输协议 -版本1.0 (HTTP1.0)2060Internet消息访问协议 -版本4(IMAP4)2068超文本传输协议 -版本1.1(HTTP1.1,为 RFC1945的更新版,第二次更新RFC2616)8vSMTP是建立在TC
6、P/IP协议基础上的应用层协议。它规定了将电子邮件从发送方传送到接收方的传输规则。v客户/邮件发送服务器模式:邮件发送服务器也称SMTP服务器或邮件服务器。v详细规则在RFC821文档中网址为:http:/www.ietf.org/rfc/rfc0821.txtv1 SMTP介绍v2 SMTP客户端Java应用程序v3 SMTP客户端Java AppletSMTP SMTP通信协议通信协议91 SMTP介绍v当用户需要发送邮件时,SMTP客户程序使用一组简单的命 令与SMTP服务器关联,并通过它把邮件发送出去,而后结 束连接和发送。v1SMTP请求/响应协议命令与格式命令和响应都是基于ASCI
7、I文本,命令以CRLF符结束为一条命令格 式,其中CR为“r”表示回车,LF为“n”表示换行,SP表示空格。应答码:响应包括一个表示返回状态的三位数字代码。 v2SMTP协议的传输模型v3SMTP协议发送邮件过程101SMTP请求/响应协议命令与格式命 令格 式描 述HELO/EHLOHELO 指明邮件发送者的主机域名MAIL FROMMAIL FROM: 指明邮件发送者的信箱名称RCPT TORCPT TO: 指明邮件接收者的信箱名称DATADATA 表示发送邮件内容(包括信头和信体)QUITQUIT 终止邮件会话HELPHELP 查询服务器支持什么命令RSETRSET 重设邮件连接NOOP
8、NOOP 无操作,服务器应响应OKTURNTURN 接收端和发送端交换角色11SMTP的应答码应 答 码描 述214帮助信息220服务就绪221服务关闭250邮件操作完成354开始输入邮件内容,以“”结束421服务未就绪,关闭传输通道501命令参数格式错误502命令不支持503错误的命令序列504命令参数不支持122SMTP协议的传输模型图 SMTP协议传输模型 133SMTP协议发送邮件过程SMTP协议发送一封电子邮件从SMTP客户端传输到SMTP服务器,只用表5-3 所示中前5个命令即可。客户端与邮件服务器连接和发送邮件过程如下: 客户端A与邮件服务器B建立TCP/IP协议连接;邮件服务器
9、B响应,返回应 答码220,表示就绪。 客户端A发送“HELO”命令以标识发件人自己的身份,即发件人主机域名, 邮件服务器B响应,返回应答码250,表明可以接收。 客户端A发送“MAIL FROM”命令,以标识该电子邮件的发件人邮件地址, 服务器B返回应答码250及OK作为响应,表明准备接收邮件。 客户端A发送“RCPT TO”命令,以标识该电子邮件的接收人邮件地址,服务 器B返回应答码250及OK作为响应。 协商结束,发送邮件,客户端A发送命令“DATA”,服务器B返回应答码354 ,可发送内容,并说明发送“”表示结束。客户端A发送邮件内容。 客户端A发送“”表示结束输入内容,服务器B返回应
10、答码250,表示此操作 完毕。 结束此次发送,客户端A发送命令“QUIT”退出。服务器B返回应答码221, 表示服务器B关闭。142 SMTP客户端Java应用程序public class sendSMTPMail /*方法说明:主方法*输入参数:1 服务器ip;2 对方邮件地址*返回类型:*/ public static void main(String arges) if(arges.length!=2)System.out.println(“use java sendSMTPMail hostname | mail to“);return;sendSMTPMail t = new sen
11、dSMTPMail();t.sendMail(arges0, arges1);15public void sendMail(String mailServer, String recipient) try /有Socket打开25端口Socket s = new Socket(mailServer, 25);/缓存输入和输出BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream();BufferedWriter out = new BufferedWriter(new OutputStreamW
12、riter(s.getOutputStream();/发出“HELO”命令,表示对服务器的问候send( out, “HELO aaa“);/告诉服务器我的邮件地址,有些服务器要校验这个地址send( out, “MAIL FROM: “);/使用“RCPT TO”命令告诉服务器解释邮件的邮件地址send( out, “RCPT TO: “ + recipient);/发送一个“DATA”表示下面将是邮件主体send( out, “DATA“);16/使用Subject命令标注邮件主题String str1 = “Subject: zao shang hao“;send( out, str1)
13、;/使用“From”标注邮件的来源send(out, “From: “);send (out, “n“);/邮件主体send(out, “呵呵“);send(out, “n.n“);/发送“QUIT”端口邮件的通讯send( out, “QUIT“);s.close();catch (Exception e) e.printStackTrace();17public void send(BufferedWriter out, String s) try out.write(s + “n“);out.flush();System.out.println(s);catch (Exception e
14、) e.printStackTrace();18POP3 POP3通信协议通信协议vPOP3邮局协议:建立在TCP/IP协议基础上。v客户端/服务器模式接收电子邮件,邮件接收服务器也称POP3服务器。v协议的详细规则文档RFC1939网址为:http:/www.ietf.org/rfc/rfc1939.txt。v1 POP3介绍v2 POP3客户端191 POP3介绍vPOP3邮件服务器接收并保存邮件 vPOP3分客户端程序和服务器 vPOP3也是命令请求/响应协议在TCP协议110号端口监听连接请求。 1、合法身份登录,即客户端发送命令“USER”和“PASS”。服务 器应答返回“+OK”,
15、表示用户登录成功,此时由认可状态转换为 处理状态。2、客户端发送一系列POP3命令,服务器应答 “+OK”成功和“ - ERR”失败两种。转换为处理状态 。vPOP3协议中有三种状态:认可、处理和更新状态。20POP3的主要命令、格式和描述命令格 式状态描 述USERUSER 认可用户名,此命令与下面的PASS命令若成功,将 导致状态转换PASSPASS 认可用户密码,命令若成功,状态由“认可”转换为“处 理”STATSTAT 处理请求服务器发回关于邮箱的统计资料,如邮件总 数和总字节数;信箱状态RETRRETR处理返回由参数标识的邮件的全部文本LISTLIST msg处理返回邮件数量和每个邮件的大小QUITQUIT 更新退出并把做过DELE标记的邮件删掉DELEDELE 处理服务器将由参数标识的邮件标记为删除,由 QUIT命令执行RSETRSET 处理服务器将重置所有标记为删除的邮件,用于撤销 DELE命令UIDLUIDL msg处理返回邮件的唯一标识符,POP3会话的每个标识符 都将是唯一的TOPTOP 处理服务器将返回由参数标识的邮件前n行内容,n必 须是正整数 NOOPNOOP 处理服务器返回一个肯定的响应21常用命令v命令都是基于ASCII文本的,最常用的是USER、PASS、STAT、RETR、DELE和QUIT 22class POP3Demo