javase--7网络编程

网络编程

不同于网站编程。

1.分层

基本的操作被封装到底层,上层只需调用即可。实际上的层次为(从下到上)物理、数据层---->网络层(ip)---->传送层(TCP\UDP)---->应用层

1.IP协议

IP是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。正是因为有了IP协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP协议也可以叫做“因特网协议”。 
目前ip协议版本为IPv4,更高版本为IPv6,IPv4中规定IP地址长度为32,最大地址个数为2^32;而IPv6中IP地址的长度为128,即最大地址个数为2^128。
什么是子网掩码 
要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。IP地址的网络号和主机号各是多少位呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。 
子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成 网络地址主机地址两部分。 

子网掩码的设定必须遵循一定的规则。与IP地址相同,子网掩码的长度也是32位,左边是网络位,用 二进制数字“1”表示;右边是主机位,用 二进制数字“0”表示。附图所示的就是IP地址为“192.168.1.1”和子网掩码为“255.255.255.0”的二进制对照。其中,“1”有24个,代表与此相对应的IP地址左边24位是网络号;“0”有8个,代表与此相对应的IP地址右边8位是主机号。这样,子网掩码就确定了一个IP地址的32位二进制数字中哪些是网络号、哪些是主机号。这对于采用TCP/IP协议的网络来说非常重要,只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。 

常用的子网掩码 

子网掩码有数百种,这里只介绍最常用的两种子网掩码,它们分别是“255.255.255.0”和“255.255.0.0”。 

1.子网掩码是“255.255.255.0”的网络:最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。 

2.子网掩码是“255.255.0.0”的网络:后面两个数字可以在0~255范围内任意变化,可以提供2552个IP地址。但是实际可用的IP地址数量是2552-2,即65023个。 

IP地址的子网掩码设置不是任意的。如果将子网掩码设置过大,也就是说子网范围扩大,那么,根据子网寻径规则,很可能发往和本地机不在同一子网内的目的机的数据,会因为错误的判断而认为目的机是在同一子网内,那么,数据包将在本子网内循环,直到超时并抛弃,使数据不能正确到达目的机,导致 网络传输错误;如果将子网掩码设置得过小,那么就会将本来属于同一子网内的机器之间的通信当做是跨子网传输,数据包都交给缺省网关处理,这样势必增加缺省网关的负担,造成网络效率下降。因此,子网掩码应该根据网络的规模进行设置。 

如果一个网络的规模不超过254台 电脑,采用“255.255.255.0”作为子网掩码就可以了,现在大多数局域网都不会超过这个数字,因此“255.255.255.0”是最常用的IP地址子网掩码;笔者见到的最大规模的中小学校园网具有1500多台电脑,这种规模的局域网可以使用“255.255.0.0”。 

默认子网掩码 

在Windows 2000 Server中,如果给一个网卡指定IP地址,系统会自动填入一个默认的子网掩码。这是Windows 2000 Server为了节省用户
3.TCP\UDP协议
TCP传输:安全,速度慢。是建立在连接上的协议。即在确定已连接的基础上,通过传输-》应答-》传输的方式。比如,在银行网上打账上。
UDP传输:不安全,速度快。不管是否已连接,也不管是否传输内容已收到,所以速度相当于前者较快。但在一般情况网络情况下,不易丢失数据包,所以相当安全。较易发生丢失的现象发生在路由器上。比如:语音聊天,网络版游戏。
4.socket
一般网络编程称为socket编程。Socket通常用来实现client-server连接。java.net包中的Socket和ServerSocket分别用来实现双向连接的client和(使用TCP的)server端。建立连接时所需信息为远程端计算机的IP地址和端口号。
5.端口号
在网络技术中,端口(Port)有好几种意思。 集线器交换机路由 器的端口指的是连接其他 网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻 辑意义上的端口。
那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536个之多!端口是通过 端口号来标记的,端口号只有整数,范围是从0 到65535。
端口有什么用呢?我们知道,一台拥有IP地址的 主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是 一对多的关系。实际上是通过“IP地址+端口号”来区 分不同的服务的。
需要注意的是,端口并不是一一对应的。比如你的 电脑作为客户机访 问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则 可能使用“3457”这样的端口,如图1所示。



按对应的协议类型,端口有两种:TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。

1. 周知端口(Well Known Ports)
周知端口是众所周知的端口号,范围从0到1023,其中 80端口分配给W WW服务, 21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候( 比如 www.cce.com.cn)是不必指定端口号的,因为在默认情况下WWW服务的端口 号是“80”。
网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在 地址栏上指定端口号,方法是在地址后面加上冒号“:”(半角),再加上端口 号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“ www.cce.c om.cn:8080”。
但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
2.动态端口(Dynamic Ports)
动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个 系统进程或应用 程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号。

怎样查看端口
一台服务器有大量的端口在使用,怎么来查看端口呢?有两种方式: 一种是利用系统内置的命令,一种是利用第三方 端口扫描软件。
1.用“netstat -an”查看端口状态
在Windows 2000/XP中,可以在 命令提示符下使用“netstat -an”查 看系统端口状态,可以列出系统正在开放的端口号及其状态.
2.用第三方端口扫描软件
第三方端口扫描软件有许多,界面虽然千差万别,但是功能却是类似 的。这里以“Fport” (可到 http://www.ccert.edu.cn/tools/index.php?type_t=7 http://www.cci dnet.com/soft/cce下载)为例讲解。“Fport”在命令提示符下使用,运行结果 与“netstat -an”相似,但是它不仅能够列出正在使用的端口号及类型,还可 以列出端口被哪个应用程序使用.
六、UDP传输
1.先开辟存储区域,再建立数据报DatagramPacket,再在此基础上建立DatagramSocket进行传输
2.
3.当发生内容为long类型时,可以进行改进。如,游戏界面控制所需要的数据包内容经常为long类型

七、TCP传输
1.



猜你喜欢

转载自blog.csdn.net/hx_uestc/article/details/7232477
今日推荐