您的位置:首页 > 理论基础 > 计算机网络

网络编程之基础部分

2013-05-22 19:46 120 查看
------- android培训java培训、期待与您交流! ----------
网络编程是JAVA中很重要的一部分,想要做好这部分,需掌握其一些基本的概念、原理和常用的类,我结合自己最近学习的内容用两章内容详细的介绍网络编程。

在谈论正题之前,先介绍两大模型,OSI模型和Tcp/Ip四层。

OSI(Open System Interconnection),开放式系统互联参考模型 。是一个逻辑上的定义,一个规范,它把网络协议从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如常规的路由器是三层交换设备,常规的交换机是二层交换设备。OSI七层模型是一种框架性的设计方法
,建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题,其最主要的功能就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、接口和协议这三个概念明确地区分开来,通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。它是国际标准组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。在1983年形成了OSI/RM的正式文件,即ISO但是,它只是一个逻辑上的架构,在实际应用中,我们一般都用TCP/IP四层架构模型。

TCP/IP四层架构模型将OSI模型中的应用层,表示层以及会话层统一规范为应用层,在互联网中用得很广泛。

我们可以通过以下图详细了解其各层次之间的关系



可以看出,每一层之间都是相互独立的,并且底层为上层提供服务,TCP/IP架构模型更加简洁,但是它也带来一些弊端。比如说它没有明显的区分协议,接口,服务的概念以及有的协议也存在缺陷,但是很难被替换等等;其实,它确在目前为止,被广泛的应用

其工作原理如下:



大体的情况就是这样。介绍几个常用的概念

数据传输所用到的两种基本协议

TCP协议:当两台电脑进行数据传输时,如果要保证数据传输的可靠性,就需用Tcp。Tcp采用三次握手协议进行两台主机之间的连接,确保数据在传输前,双方都能正确的连接上。当双方建立连接以后,将会建立数据传输通道,进行大量数据的传输,所以其效率相比UDP而言,就较低下,但是它用效率换来了数据的可靠性,权衡之下还是算划算的,我们下载文件,视频,就是用的TCP协议;





图上看出,此连接麻烦,复杂,这就是它牺牲了自己的效率换来的可靠性,别忘了它工作在传输层。所以,我们在之后接触到的Socket类和ServerSocket类也是工作在传输层的

但有一个URIConnection类工作在应用层,有关它们的具体应用我们在后面介绍。

UDP协议:它是面向无连接的,所谓无连接就是说在发送数据前不需要和对方建立任何连接,直接向被请求方发送数据,也因为如此,其速度快,效率高,但是它传输数据不可靠,而且所传输的数据最大不能超过64k,有点蛋疼。所以,它适合于对数据完整性要求不高的场合,比如说网络视频会议,视频聊天,QQ,桌面共享等。在JAVA编程中,我们经常涉及到的类有DatagramSocket类,同样我会在之后介绍。

另一个就是HTTP协议:它是超文本传输协议,一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议。它是无记忆的,也正因为这样,才有了Cookie和Session的产生。它是目前在互联网上用的最广的协议。比如说,我们常见的在上网时会输入一段URL地址:http://www.baidu.com 其中http就表示的是所支持的http协议。

URL和URI:这两者大家应该都不陌生了,统一资源标识符。但是URI比URL范围更广。

当我们通过URL向服务器请求资源时,一般常用的两种方式POST和GET。介绍前,先介绍我们所发送请求的数据包

访问www.baidu.com/s?wd=组织



可以看到,此提交方式为GET,提交的参数为wd=....,后面乱七八糟的,实际上它经过编码的。所以,GET提交数据不安全,对用户而言是不透明的,而且它提交的数据量不大

相比之下,POST提交方试更适合,他把数据封装在自己的文本报文里,而非报头里,并且它提交的数据量较大,对用户是透明的。

操作URL,JAVA为我们提供了专门的类URL类。

IP地址介绍:分为IPV4和IPV6。IPV4共32位,分为A,B,C,D,E以及广播地址,随着上网用户的增长,IPV4逐渐不够用,从而产生了128位的ipv6。目前IPV6还在普及中。每一台上网主机必须有一个唯一的标识,这个唯一的标识就是IP地址,任何一个访问都是通过IP地址访问到主机的。平时我们上网,输入的URL,即网址,该网址是由方便用户记忆的字母组成或者字母与数字的组成。当然,我们也可以之间通过IP地址访问。前一种方式实际上有一个DNS服务器做中转,DNS服务器里存放了一系列的域名和IP地址的映射。当请求主机时,首先访问的是DNS服务器,在DNS里查找IP地址,再返回主机,主机通过IP地址访问被请求方.





端口号:PORT,基于SOCKETS的应用程序都用一个端口号来唯一标识自己。端口号范围0-65535,1024以下已经全部分配。在通信时,源端口动态分配,目标端口固定,代表源请求的应用。

套接字:IP地址+传输协议+端口号

说简单一点:端口号就是标识每一个应用程序的,确保每一个应用程序都能正确的接收数据。



到目前为止,基本把所涉及到的内容介绍完毕,我将在下章介绍详细的应用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐