第1章 Java网络编程入门.ppt
《第1章 Java网络编程入门.ppt》由会员分享,可在线阅读,更多相关《第1章 Java网络编程入门.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java网络编程精解引言nJava语言是第一个完全融入网络的语言,它之所以适合编写网络应用程序,归功于它的以下优势。n(1)Java语言与生俱来就是与平台无关的。Java程序能够运行在不同的平台上,运行在不同平台上的Java程序能够方便地进行网络通信。n(2)Java语言具有完善的安全机制,可以对程序进行权限检查,这对网络程序至关重要。n(3)JDK类库提供了丰富的网络类库,如套接字API、JavaMail API和JDBC API等,大大简化了网络程序的开发过程。课程内容n本课程介绍如何利用Java网络类库来快速便捷地创建网络应用程序,致力于完成以下任务:n实现访问HTTP服务器的客户程序n
2、实现HTTP服务器n实现多线程的服务器,以及非阻塞的服务器n解析并展示HTML页面n通过JDBC API访问数据库n通过JavaMail API接收和发送电子邮件n利用RMI框架实现分布式的软件系统n进行安全的网络通信,对数据加密,验证身份,保证数据的完整性利用CORBA和Web服务实现分布式的软件系统第1章 Java网络编程入门参考Java网络编程精解的第1章n1.1 进程之间的通信n1.2 计算机网络的概念n1.3 OSI参考模型n1.4 TCP/IP参考模型和TCP/IP协议n1.5 用Java编写客户/服务器程序1.1 进程之间的通信n进程是指运行中的程序,进程的任务就是执行程序中的代
3、码。n客户程序EchoClient和服务器程序EchoServer。EchoClient程序有两个作用:n与用户交互,从本地控制台获得标准输入流和标准输出流。n与远程的EchoServer通信,向EchoServer发送用户输入的字符串,接收EchoServer返回的响应结果,再把响应结果写到标准输出流。nEchoServer程序负责接收EchoClient发送的字符串,然后把响应结果发送给EchoClient。1.1 进程之间的通信上图演示了EchoClient与EchoServer的通信过程。客户机和远程服务器是通过网络连接的两台主机。客户机上运行EchoClient进程,远程服务器上运行
4、EchoServer进程。1.1 进程之间的通信n两个进程顺利通信的前提条件是它们所在的主机都连接到了计算机网络上。EchoClient与EchoServer只需关注它们通信的具体内容,例如EchoClient发送信息“hello”,那么EchoServer返回信息“echo:hello”。nEchoClient和EchoServer都无需考虑如何把信息传输给对方。n传输信息的任务是由计算机网络来完成的。1.2 计算机网络的概念n所谓计算机网络,是指把分布在不同地理区域的计算机用通信线路互联起来的一个具有强大功能的网络系统。n通俗的说,计算机网络就是通过电缆、电话线、或无线通讯设施等互联的计算
5、机的集合。n网络中每台机器称为节点(node)。大多数节点是计算机,此外,打印机、路由器、网桥、网关和哑终端等也是节点。1.2 计算机网络的概念1.2 计算机网络的概念不同网络之间的互联靠网络上的标准语言TCP/IP协议。如上图所示,一个网络使用协议A,另一个网络使用协议B,这两个网络通过TCP/IP协议进行互联。1.3 OSI参考模型nOSI 参考模型把网络分为7 层,参见下图,每一层使用下层提供的服务,并为上层提供服务。1.3 OSI参考模型数据在上下层之间的封装和解封装过程1.4 TCP/IP 参考模型和TCP/IP协议nISO 制定的OSI参考模型提出了网络分层的思想,这种思想对网络的
6、发展具有重要的指导意义。nTCP/IP 参考模型吸取了网络分层的思想,但是对网络的层次做了简化,并且在网络各层(除了主机-网络层外)都提供了完善的协议,这些协议构成了TCP/IP协议集,简称TCP/IP协议。1.4 TCP/IP 参考模型和TCP/IP协议比较TCP/IP 参考模型和OSI参考模型1.4 TCP/IP 参考模型和TCP/IP协议1.4 TCP/IP 参考模型和TCP/IP协议n(1)主机-网络层n 实际上TCP/IP 参考模型没有真正提供这一层的实现,也没有提供协议。它只是要求第三方实现的主机-网络层能够为上层网络互联层提供一个访问接口,使得网络互联层能利用主机-网络层来传递I
7、P数据包。1.4 TCP/IP 参考模型和TCP/IP协议n(2)网络互联层n 网络互联层是整个参考模型的核心。它的功能是把IP 数据包发送到目标主机。为了尽快地发送数据,IP 协议把原始数据分为多个数据包,然后沿不同的路径同时传递数据包。1.4 TCP/IP 参考模型和TCP/IP协议n网络互联层具备连接异构网的功能。下图显示了连接以太网和令牌环网的方式。网络互联层采用IP协议,它规定了数据包的格式,并且规定了为数据包寻找路由的流程。1.4 TCP/IP 参考模型和TCP/IP协议n(3)传输层传输层的功能是使源主机和目标主机上的进程可以进行会话。在传输层定义了两种服务质量不同的协议,即TC
8、P(Transmission Control Protocol,传输控制协议)和UDP(UserDatagram Protocol,用户数据报协议)。1.4 TCP/IP 参考模型和TCP/IP协议nTCP 协议是一种面向连接的、可靠的协议。它将源主机发出的字节流无差错的发送给互联网上的目标主机。n在发送端,TCP 协议负责把上层传送下来的数据分成报文段并传递给下层。n在接收端,TCP 协议负责把收到的报文进行重组后递交给上层。nTCP 协议还要处理端到端的流量控制,以避免接收速度缓慢的接收方没有足够的缓冲区来接收发送方发送的大量数据。n应用层的许多协议,如HTTP、FTP 和TELNET 协
9、议等都建立在TCP协议基础上。1.4 TCP/IP 参考模型和TCP/IP协议nUDP 协议是一个不可靠的、无连接协议,主要适用于不需要对报文进行排序和流量控制的场合。nUDP 不能保证数据报的接收顺序同发送顺序相同,甚至不能保证它们是否全部到达目标主机。应用层的一些协议,如SNMP 和DNS 协议就建立在UDP 协议基础上。n如果要求可靠的传输数据,则应该避免使用UDP协议,而要使用TCP协议。1.4 TCP/IP 参考模型和TCP/IP协议n(4)应用层n TCP/IP 模型将OSI 参考模型中的会话层和表示层的功能合并到应用层实现。针对各种各样的网络应用,应用层引入了许多协议。n 基于U
10、DP协议的的应用层协议主要包括:SNMP(网络管理协议)、DNSn 基于TCP协议的应用层协议主要包括:FTP、TELNET(虚拟终端协议)、HTTP、HTTPS(安全超文本传输协议)、POP3(邮局协议-版本3)、IMAP4(Internet消息访问协议-版本4)、SMTP1.4.1 IP协议nIP 网络(即在网络层采用IP 协议的网)中每台主机都有惟一的32位IP 地址。n主机实际上有两个不同性质的地址:物理地址和IP 地址。物理地址是由主机上的网卡来标识的,物理地址才是主机的真实地址。1.4.1 IP协议nIP 是面向包的协议,即数据被分成若干小数据包,然后分别传输它们。nIP 网络上的
11、主机只能直接向本地网上的其他主机(也就是具有相同IP 网址的主机)发送数据包。1.4.1 IP协议n如下图所示,主机A向同一个网络上的另一个主机B 发包时,ARP会通过地址解析协议,获得对方的物理地址,然后把包发给对方。n ARP 协议的运行机制为:主机A 在网络上广播一个ARP 消息:“要寻找地址为192.166.3.5 的主机”,接着,具有这个IP 地址的主机B 就会做出响应,把自身的物理地址告诉主机A。1.4.1 IP协议n当主机A 向另一个网络上的主机B 发送包时,主机A 利用ARP 协议找到本地网络上的路由器的物理地址,把包转发给它。路由器会按照如下步骤处理数据包:n(1)如果数据包
12、的生命周期已到,则该数据包被抛弃。n(2)搜索路由表,优先搜索路由表中的主机,如果能找到具有目标IP地址的主机,则将数据包发送给该主机。n(3)如果匹配主机失败,则继续搜索路由表,匹配同子网的路由器,如果找到匹配的路由器,则将数据包转发给该路由器。n(4)如果匹配同子网的路有器失败,则继续搜索路由表,匹配同网络的路由器,如果找到匹配的路由器,则将数据包转发给该路由器。n(5)如果以上匹配操作都失败,就搜索默认路由,如果默认路由存在,则按照默认路由发送数据包,否则丢弃数据包。nIP 协议并不保证一定把数据包送达目标主机,在发送过程中,会因为数据包结束生命周期,或者找不到路由而丢弃数据包。1.4.
13、2 TCP 协议以及端口nIP协议在发送数据包时,途中会遇到各种事情,例如可能路由器突然崩溃,使包丢失。再例如一个包可能沿低速链路移动,而另一个包可能沿高速链路移动而超过前面的包,最后使得包的顺序搞乱。nTCP 协议使两台主机上的进程顺利通信,不必担心包丢失或包顺序搞乱。TCP 跟踪包顺序,并且在包顺序搞乱时按正确顺序重组包。如果包丢失,则TCP会请求源主机重发包。1.4.2 TCP 协议以及端口端口号的范围为端口号的范围为0 到到65535,其中,其中0 到到1023 的端口号一般固定的端口号一般固定分配给一些服务分配给一些服务。比如。比如 FTP服务服务(21),SMTP(25)服务,服务
14、,HTTP(25)服务,服务,135端口分配给端口分配给RPC(远程过程调用)服务等等(远程过程调用)服务等等;从从1024到到65535的端口号供用户自定义的服务使用的端口号供用户自定义的服务使用。1.4.2 TCP 协议以及端口n客户进程的端口一般由所在主机的操作系统动态分配,当客户进程要求与一个服务器进程进行TCP 连接,操作系统为客户进程随机的分配一个还未被占用的端口,当客户进程与服务器进程断开连接,这个端口就被释放。nTCP 和UDP 都用端口来标识进程,允许存在取值相同的TCP端口与UDP端口。1.4.3 RFC简介nTCP/IP协议是以RFC(Request For Commen
15、t)文档的形式发布的。RFC 是描述互联网相关技术规范的文档。RFC由个人编写,Internet 工程任务组织负责审阅和发布。nRFC的官方网站:http:/www.ietf.org/rfc.htmln在RFC 的官方网站上输入网址:http:/www.ietf.org/rfc/rfcXXXX.txt,就能察看相关的FRC 文档,这里的XXXX 表示文档编号。例如FTP 协议的RFC 文档的网址为:http:/www.ietf.org/rfc/rfc959.txt1.4.3 RFC简介1.4.4 客户/服务器通信模式n客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求。如图1-1
16、7 所示,通常,一个服务器进程会同时为多个客户进程服务,图中服务器进程B1 同时为客户进程A1、A2 和B2 提供服务。图1-17 客户进程A1、A2和B2请求服务器进程B1的服务1.4.4 客户/服务器通信模式n网络上有些通用的服务有着固定的端口1.5 用Java 编写客户/服务器程序n在Java中,有三种套接字类:.Socket、.ServerSocket和DatagramSocket。其中Socket和ServerSocket类建立在TCP协议基础上,DatagramSocket 类建立在UDP协议基础上。n传输层向应用层提供了套接字Socket 接口,Socket 封装了下层的数据传输
17、细节,应用层的程序通过Socket来建立与远程主机的连接以及进行数据传输。图1-18 套接字可看过是通信连接两端的收发器1.5.1 创建EchoServer图1-19 服务器与客户利用ServerSocket 和Socket来通信1.5.1 创建EchoServern服务器程序通过一直监听端口,来接收客户程序的连接请求。在服务器程序中,需要先创建一个ServerSocket对象,在构造方法中指定监听的端口:ServerSocket server=new ServerSocket(8000);/监听8000端口nServerSocket的构造方法负责在操作系统中把当前进程注册为服务器进程。服务器
18、程序接下来调用ServerSocket 对象的accept()方法,该方法一直监听端口,等待客户的连接请求,如果接收到一个连接请求,accept()方法就会返回一个Socket 对象,这个Socket对象与客户端的Socket对象形成了一条通信线路:Socket socket=server.accept();/等待客户的连接请求1.5.1 创建EchoServernSocket 类提供了getInputStream()方法和getOutputStream()方法,分别返回输入流InputStream 对象和输出流OutputStream 对象。程序只需向输出流写数据,就能向对方发送数据;只需从
19、输入流读数据,就能接收来自对方的数据。n与普通I/O流一样,Socket 的输入流和输出流也可以用过滤流来装饰。在以下代码中,先获得输出流,然后用PrintWriter 装饰它,PrintWriter 的println()方法能够写一行数据;以下代码接着获得输入流,然后用BufferedReader 装饰它,BufferedReader 的readLine()方法能够读入一行数据:OutputStream socketOut=socket.getOutputStream();/参数true 表示每写一行,PrintWriter缓存就自动溢出,把数据写到目的地 PrintWriter pw=ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第1章 Java网络编程入门 Java 网络 编程 入门
限制150内