Java网络编程

本文详细探讨了Java的网络编程,包括套接字通信、多线程应用、TCP/IP协议的理解以及Java API的使用,帮助开发者构建高效稳定的网络应用程序。
摘要由CSDN通过智能技术生成
                                    **Java网络编程**
    
                    **网络技术基础**
	OSI模型
我们已经知道,计算机网络是处于不同地理位置的计算机系统通过通信设备和线路连接起来,以网络软件实现资源共享的系统。在计算机网络出现的早期,不同的软件、硬件厂商按照各自的标准生产网络软、硬件产品,这就导致了不同厂商、不同结构的网络产品之间互连时会遇到的不兼容性问题。为解决此类问题,国际标准化组织ISO提出了一个OSI(Open System Interconnection,开放系统互联)参考模型,为异构系统互联提供了概念性的框架。
OSI参考模型采用分层结构,将网络分为七层,如图所示。

在这里插入图片描述

在这个七层模型中,每一层使用下层提供的服务,同时为上层提供服务。各层的作用分别如下:
	 物理层。传输信息离不开物理介质,如双绞线和同轴电缆。物理层的任务就是为它的上一层提供物理连接,以及规定通行节点之间的机械和电器等特征。在这一层,数据作为原始的比特流(bit)传输。典型的设备包括集线器(Hub)。
	 数据链路层。数据链路层负责两个相邻的节点间的线路上,无差错的传送以帧(Frame)为单位的数据。每一帧包括一定量的数据和一些必要的控制信息。在传送数据时,如果接收方检测到所传的数据中有差错,就要通知发送方重新发送这一帧。本层的典型的设备是Switch(交换机)。
	 网络层。在计算机网络中两台计算机之间可能会经过很多的数据链路,也可能通过很多的通信子网。网络层的任务就是选择合适的网间路由和交换节点,确保数据及时传送到目标主机。在这一层,数据的单位称为包(Packet)。网络层将数据链路层提供的帧组成数据包,包中封装了网络层的包头,包头中含有逻辑地址信息(源主机和目标主机的网络地址)。本层的典型的设备就是路由器(Router)。
	 传输层。该层的任务是通过通信子网的特性最好地利用网络资源,为两个源主机和目标主机的会话层提供建立、维护和取消传输的连接的功能,以可靠的方式或不可靠的方式。在这一层,以可靠方式传输的数据单位称为段(Segment),以不可靠方式传输的数据单位称为数据报(Datagram)。
	会话层。在会话层及以上层次中,数据传送的单位不再另外命名,统称为报文(Message)。会话层管理进程之间的会话过程,即负责建立、管理和终止进程之间的会话。会话层还通过数据中插入校验点来实现数据的同步。
	表示层。表示层对上层的数据进行转换,以保证一个主机的应用层的数据可以被另一个主机的应用层理解。表示层的数据转换包括对数据的加密、解密、压缩、解压和格式转换等。
	应用层。应用层确定进程之间通信的实际用途,以满足用户的实际请求。例如浏览Web站点、收发E-mail、上传或下载文件等。
在数据通信中,发送方每一层都将上层的数据加上一个报头,并交给下一层。这一过程重复进行,直到底层的物理层,然后通过物理链路实际传送到接收放。在接收方,则将报头层层剥离,最后将数据交给接收进程。
不同主机之间的相同层次称为对等层。例如主机A中的表示层和主机B中的表示层互为对等层、主机A中的会话层和主机B中的会话层互为对等层等。对等层之间互相通信需要遵守一定的规则,如通信的内容、通信的方式,我们将其称为协议(Protocol)。我们将某个主机上运行的某种协议的集合称为协议栈。主机正是利用这个协议栈来接收和发送数据的。
OSI参考模型通过将协议栈划分为不同的层次,可以简化问题的分析、处理过程以及网络系统设计的复杂性。

           	TCP/IP分层模型
ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。实际上,TCP/IP协议也是目前因特网范围内运行的唯一一种协议。图表示了TCP/IP分层模型与OSI模型的对比图。 

在这里插入图片描述

TCP/IP协议被组织成四个概念层,其中有三层对应于ISO参考模型中的相应层。TCP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。 
TCP/IP分层模型的四个协议层分别完成以下的功能: 
	网络接口层。网络接口层包括用于协作IP数据在已有网络介质上传输的协议。实际上TCP/IP标准并不定义与ISO数据链路层和物理层相对应的功能。相反,它定义像ARP(Address Resolution Protocol,地址解析协议)这样的协议,提供TCP/IP协议的数据结构和实际物理硬件之间的接口。 
	网络互联层。网络互联层对应于OSI七层参考模型的网络层。本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。 
	传输层。传输层对应于OSI七层参考模型的传输层,它提供两种端到端的通信服务。其中TCP协议(Transmission Control Protocol)提供可靠的数据流运输服务,UDP协议(User Datagram Protocol)提供不可靠的用户数据报服务。 
	应用层。应用层对应于OSI七层参考模型的应用层和表示层。因特网的应用层协议包括Finger、Whois、FTP(文件传输协议)、 Gopher、HTTP (超文本传输协议)、Telent(远程终端协议)、SMTP(简单邮件传送协议)、IRC(因特网中继会话)、NNTP(网络新闻传输协议)等。
网络编程的实质就是编写程序直接或间接地通过网络协议与其它计算机上的某个程序进行通讯。那么,程序员在网络编程中需要关注的问题包括两个:一是如何找到网络上的主机上的要进行通讯的程序,二是找到了主机上的程序后如何传输数据。
我们首先来看如何找到网络上某个主机上要进行通讯的程序。
寄信的时候,要在表格中填上邮政服务能够理解的收信人的地址。在给别人打电话之前,必须给电话系统提供联系人的电话号码。同样,一个程序要与另一个程序通信,就要给网络提供足够的信息,使其能够找到另一个程序。在TCP/IP协议中,网络互联层主要负责网络主机的寻址定位。由IP地址就可以唯一确定网络上的一台计算机。因此,我们在程序中只要提供了要通讯的主机的IP地址,就可以找到该主机。除了在程序中提供要寻找的主机的IP地址外,我
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值