没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
第 15 章 网络编程
Java 程序可以非常方便的访问互联网上的 HTTP 服务、FTP 服务等,并可以直接取得互
联网上的远程资源,还可以向远程资源发送 GET、POST 请求。
15.1 网络编程的基础知识
15.1.1 网络的概念和分类
所谓计算机网络就是把分布在不同地理区域的计算机与专门的外部设备用通信线路互
连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享
硬件、软件、数据信息等资源。
生活在今天的我们,没有网络那是相当可怕的,我们每天几乎都在用所谓的云计算、云
服务、云备份、搜索引擎检索信息、即时通信、在线支付......
计算机网络有很多种,按照网络的传输介质划分:双绞线网、同轴电缆网、光纤网、卫
星网等。还有无线传输的,例如 Wifi 的传输介质是红外线,蓝牙的传输介质是无线电波,
都是电磁波的一种。
如果按照网络的拓扑结构来划分,可以分为星型网络、总线网络、环线网络、树型网络、
网状网络、混合型网络等。
按照规模来分类:
局域网(Local Area Network,LAN)是指在某一区域内由多台计算机互联成的计算机组。
一般是方圆几千米以内。局域网可以实现文件管理、应用软件共享、打印机共享、工作组内
的日程安排、电子邮件和传真通信服务等功能。局域网是封闭型的,可以由办公室内的两台
计算机组成,也可以由一个公司内的上千台计算机组成。
城域网(Metropolitan Area Network,MAN)是在一个城市范围内所建立的计算机通信网,
属宽带局域网。由于采用具有有源交换元件的局域网技术,网中传输时延较小,它的传输媒
介主要采用光缆,传输速率在 100 兆比特/秒以上。MAN 的一个重要用途是用作骨干网,通
过它将位于同一城市内不同地点的主机、数据库,以及 LAN 等互相联接起来,这与 WAN 的
作用有相似之处,但两者在实现方法与性能上有很大差别。
广域网(Wide Area Network, WAN),又称外网、公网,是连接不同地区局域网或城
域网计算机通信的远程网。通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,
它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网
络。
那么什么是互联网、因特网、万维网呢?
凡是由能彼此通信的设备组成的网络就叫互联网,即使仅有两台机器(计算机、手机
等),不论用何种技术使其彼此通信,都叫互联网,所以,互联网有广域网、城域网及局域
网之分。国际标准的互联网写法是 internet,字母 i 小写!
而因特网是互联网中的一种,它可不是仅有两台机器组成的网络,而是由上千万台设备
组成的网络(该网络具备一定规模)。国际标准的因特网写法是 Internet,字母 I 大写!
因特网是基于 TCP/IP 协议实现的,TCP/IP 协议由很多协议组成,不同类型的协议又被
放在不同的层,其中,位于应用层的协议就有很多,比如 FTP、SMTP、HTTP。所以,因特网
提供的服务一般包括有:www(万维网)服务、电子邮件服务(outlook)、远程登录(QQ)
服务、文件传输(FTP)服务、网络电话等等。只要应用层使用的是 HTTP 协议,就称为万维
网(World Wide Web)。
15.1.2 网络协议
不管处于那种网络,那么通信是网络最基本的要求,而计算机网络中实现通信必须有一
些约定,即通信协议。对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
网络通信必须有硬件和软件方面的支持,由于世界上大型计算机厂商推出各自不同的网
络体系结构,影响了网络通信的统一性,因此国际标准化组织 ISO 于 1978 年提出了著名的 OSI
(Open System Interconnection)开放系统互连参考模型。它把计算机网络分成物理层、数
据链路层、网络层、传输层、会话层、表示层、应用层等七层。
应用层:网络服务与最终用户的一个接口。协议有:HTTP、FTP、SMTP、DNS、
TELNET、HTTPS、POP3 等等。
表示层:数据的表示、安全、压缩。格式有:JPEG、ASCll、DECOIC、加密格式等。
会话层:建立、管理、终止会话。对应主机进程,指本地主机与远程主机正在进行的会
话
传输层:定义传输数据的协议端口号,以及流控和差错校验。协议有:TCP、UDP。
网络层:进行逻辑地址寻址,实现不同网络之间的路径选择。协议有:ICMP、IGMP、IP
(IPV4 IPV6)、ARP、RARP。
数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节
进而组合成帧,用 MAC 地址访问介质,错误发现但不能纠正。
物理层:建立、维护、断开物理连接。
而 IP 协议是一种非常重要的协议。IP(internet protocal)又称为互联网协议。IP 的责任
就是把数据从源传送到目的地。它在源地址和目的地址之间传送一种称之为数据包的东西,
它还提供对数据大小的重新组装功能,以适应不同网络对包大小的要求。经常与 IP 协议放
在一起的还有 TCP(Transmission Control Protocol)协议,即传输控制协议,是一种面向连接
的、可靠的、基于字节流的传输层通信协议。而通常我们说的 TCP/IP 协议,其实是指 TCP/IP
协议族,因为该协议家族的两个最核心协议:TCP(传输控制协议)和 IP(网际协议),为
该家族中最早通过的标准,所以简称为 TCP/IP 协议。
按照 TCP/IP 协议模型,网络通常被分为四层:网络访问层、互联网层、传输层和应用
层。
15.1.3 IP 地址
IP 地址用于标识网络中的一个通信实体,这个通信实体可以是一台计算机,也可以是一
台打印机,或者是路由器的一个端口。而在基于 IP 协议网络中传输的数据包,都必须使用 IP
地址来进行标识。
如同我们写信,发快递一样,要标明收件人的通信地址和发件人的通信地址,而邮政人
员和物流快递员则通过该地址决定信件、包裹的去向。
IP 地址是一个 32 位的整数,但为了便于记忆,通常把它分为 4 个 8 位的二进制数组成,
每 8 位之间用圆点隔开,格式:X.X.X.X,其中每个 X 表示地址中的 8 位,用十进制[0,255]之
间值表示,因此我们看到的 IP 常常是:222.222.88.104。
Internet 委员会定义了 5 种 IP 地址类型以适合不同容量的网络,即 A 类~E 类。其中 A、
B、C 这 3 类由 Internet NIC 在全球范围内统一分配,D、E 类为特殊地址。
IP 地址还分为 IPV4 和 IPV6。由于 IPv4 最大的问题在于网络地址资源有限,严重制约了
互联网的应用和发展。IPv6 是 IETF(Internet Engineering Task Force)设计的用于替代现行版
本 IP 协议(IPv4)的下一代 IP 协议,号称可以为全世界的每一粒沙子编上一个网址。IPv4
和 IPv6 地址格式不相同,因此在很长一段时间里,互联网中出现 IPv4 和 IPv6 长期共存的局
面。2012 年 6 月 6 日,国际互联网协会举行了世界 IPv6 启动纪念日,这一天,全球 IPv6 网
络正式启动。多家知名网站,如 Google、Facebook 和 Yahoo 等,于当天全球标准时间 0 点
(北京时间 8 点整)开始永久性支持 IPv6 访问。2018 年 6 月,三大运营商联合阿里云宣布,
将全面对外提供 IPv6 服务,并计划在 2025 年前助推中国互联网真正实现“IPv6 Only”。 7
月,百度云制定了中国的 IPv6 改造方案。8 月 3 日,工信部通信司在北京召开 IPv6 规模部
署及专项督查工作全国电视电话会议,中国将分阶段有序推进规模建设 IPv6 网络,实现下
一代互联网在经济社会各领域深度融合。
IPv6 的地址长度为 128 位,是 IPv4 地址长度的 4 倍,格式为 X:X:X:X:X:X:X:X,其中每个 X
表示地址中的 16 位,以十六进制表示。
15.1.4 端口号
IP 地址可以唯一的确定网络上的一个通信实体,但是一个通信实体可以有多个通信程序
同时提供网络服务,此时还需要使用端口。IP 地址就好比通信的街道和门牌号,我们通过 IP
地址可以找到房子,但是要具体找到某个人,还需要房间号或名字。
端口号是一个 16 位的整数,即在[0,65535]之间,通常它可以分为三类:
(1)公认端口(Well-Known Ports)范围从 0 到 1023,这些端口号一般固定分配给一些服
务。比如 21 端口分配给 FTP(文件传输协议)服务,25 端口分配给 SMTP(简单邮件传输协议)
服务,80 端口分配给 HTTP 服务。
(2) 注册端口(Registered Ports):端口号从 1024 到 49151。它们松散地绑定于一些服务。
例如:Tomcat(8080),JBOSS(8080),Oracle(1521),MySQL(3306),SQL Server(1433),QQ
(1080)。
(3)动态/私有端口(Dynamic and/Private Ports):端口的范围从 49152 到 65535,这些端
口号一般不固定分配给某个服务。只要运行的程序向系统提出访问网络的申请,那么系统就
可以从这些端口号中分配一个供该程序使用。理论上,不应为服务分配这些端口。
然而实际生活中,要常人识记 IP 地址还是有些困难的,所以就有了域名。例如:尚硅
谷的服务器 IP 地址是 222.222.88.104,为了让大家便于记忆和访问,我们注册了域名:
www.atguigu.com。域名和 IP 地址是相对应的,网域名称系统(DNS,Domain Name System)
是因特网的一项核心服务,它作为可以将域名和 IP 地址相互映射的一个分布式数据库,能
够使人更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 地址数串。
15.2 基本的网络 API
15.2.1 使用 InetAddress
此类表示互联网协议 (IP) 地址,它有两个子类 Inet4Address 和 Inet6Address,分别对应
IPV4 和 IPV6。InetAddress 类没有提供公共的构造器,而是提供了如下几个静态方法来获取
InetAddress 实例。
public static InetAddress getLocalHost()
public static InetAddress getByAddress(byte[] addr)
public static InetAddress getByName(String host)
InetAddress 提供了如下几个常用的方法:
public String getHostAddress():返回 IP 地址字符串(以文本表现形式)。
public String getHostName():获取此 IP 地址的主机名
public String getCanonicalHostName():获取此 IP 地址的完全限定域名
public boolean isReachable(int timeout):测试是否可以达到该地址。
package com.atguigu.ip;
import java.io.UnsupportedEncodingException;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class TestInetAddress {
public static void main(String[] args) throws Exception{
InetAddress ip1 = InetAddress.getLocalHost();
System.out.println(ip1);//Irene-PC/192.168.1.107
InetAddress ip2 = InetAddress.getByName("www.atguigu.com");
System.out.println(ip2);//www.atguigu.com/222.222.88.102
剩余47页未读,继续阅读
艾苛尔
- 粉丝: 26
- 资源: 307
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0