计算机网路:
计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括传输介质和通信设备。
虽然网络类型的划分标准各种各样,但是从地理范围划分是一种大家都认可的通用网络划分标准。按这种标准可以把各种网络类型划分为局域网、城域网、广域网和互联网四种。局域网一般来说只能是一个较小区域内,城域网是不同地区的网络互联,不过在此要说明的一点就是这里的网络划分并没有严格意义上地理范围的区分,只能是一个定性的概念。
网络分层:
为了减少网络设计的复杂性,绝大多数网络采用分层设计方法。所谓分层设计方法,就是按照信息的流动过程将网络的整体功能分解为一个个的功能层,不同机器上的同等功能层之间采用相同的协议,同一机器上的相邻功能层之间通过接口进行信息传递。
计算机网络是指由通信线路互相连接的许多自主工作的计算机构成的集合体,各个部件之间以何种规则进行通信,就是网络模型研究的问题。
网络模型一般是指OSI七层参考模型和TCP/IP四层参考模型。这两个模型在网络中应用最为广泛。AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
开放系统互连参考模型(Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,
为开放式互连信息系统提供了一种功能结构的框架。它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。
基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层、传输层(主机到主机)、和应用层。
1.应用层
应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等.
2.传输层
传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).
TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务.
3.网际互联层
网际互联层对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。它所包含的协议设计数据包在整个网络上的逻辑传输。注重重新赋予主机一个IP地址来完成对主机的寻址,它还负责数据包在多种网络中的路由。该层有三个主要协议:网际协议(IP)、互联网组管理协议(IGMP)和互联网控制报文协议(ICMP)。
IP协议是网际互联层最重要的协议,它提供的是一个可靠、无连接的数据报传递服务。
4.网络接入层(即主机-网络层)
网络接入层与OSI参考模型中的物理层和数据链路层相对应。它负责监视数据在主机和网络之间的交换。事实上,TCP/IP本身并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与TCP/IP的网络接入层进行连接。地址解析协议(ARP)工作在此层,即OSI参考模型的数据链路层。
网络编程:
什么是套接字:
源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务.
什么是网络编程:
通过使用套接字来达到进程间通信目的的编程就是网络编程.
进程之间的通信:
1):在同一台电脑上,A进程和B进程相互通信.
2):在网络中(外网/内网),A电脑中的aa程序和B电脑中的bb程序相互通信(有网络连接).
为什么需要网络编程:
1):如果没有网络,只能玩单机游戏.(斗地主,三国杀,CS等)
2):有了网络,QQ游戏等.
这个章节所有的API都在:java.net包.
网络编程三要素:
1):IP地址.
2):端口.
3):协议:规则,数据传递/交互规则.
网络基础 |
ip地址:
网络之间互连的协议(IP)AAAAA是InternetProtocol的外语缩写,中文缩写为“网协”.在Java中使用InetAddress类表示.
IP的版本:
IPv4:192.168.10.30
IPv6:1080:0:0:0:8:800:200C:417A
IP地址编址方案:IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用。
A类10.0.0.0--10.255.255.255
B类172.16.0.0--172.31.255.255
C类192.168.0.0--192.168.255.255
----------------------------------------------
在Java中,使用InetAddress类来表示IP地址.
表示本机:
方式1:本机IP
方式2:127.0.0.1
方式3:localhost
中文API解释:
java.net
类 InetAddress
java.lang.Objectjava.net.InetAddress
- 所有已实现的接口:
- Serializable
- 直接已知子类:
- Inet4Address, Inet6Address
方法:
方法摘要 | |
---|---|
boolean | equals(Object obj) 将此对象与指定对象比较。 |
byte[] | getAddress() 返回此 InetAddress 对象的原始 IP 地址。 |
static InetAddress[] | getAllByName(String host) 在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。 |
static InetAddress | getByAddress(byte[] addr) 在给定原始 IP 地址的情况下,返回 InetAddress 对象。 |
static InetAddress | getByAddress(String host, byte[] addr) 根据提供的主机名和 IP 地址创建 InetAddress。 |
static InetAddress | getByName(String host) 在给定主机名的情况下确定主机的 IP 地址。 |
String | getCanonicalHostName() 获取此 IP 地址的完全限定域名。 |
String | getHostAddress() 返回 IP 地址字符串(以文本表现形式)。 |
String | getHostName() 获取此 IP 地址的主机名。 |
static InetAddress | getLocalHost() 返回本地主机。 |
int | hashCode() 返回此 IP 地址的哈希码。 |
boolean | isAnyLocalAddress() 检查 InetAddress 是否是通配符地址的实用例行程序。 |
boolean | isLinkLocalAddress() 检查 InetAddress 是否是链接本地地址的实用例行程序。 |
boolean | isLoopbackAddress() 检查 InetAddress 是否是回送地址的实用例行程序。 |
boolean | isMCGlobal() 检查多播地址是否具有全局域的实用例行程序。 |
boolean | isMCLinkLocal() 检查多播地址是否具有链接范围的实用例行程序。 |
boolean | isMCNodeLocal() 检查多播地址是否具有节点范围的实用例行程序。 |
boolean | isMCOrgLocal() 检查多播地址是否具有组织范围的实用例行程序。 |
boolean | isMCSiteLocal() 检查多播地址是否具有站点范围的实用例行程序。 |
boolean | isMulticastAddress() 检查 InetAddress 是否是 IP 多播地址的实用例行程序。 |
boolean | isReachable(int timeout) 测试是否可以达到该地址。 |
boolean | isReachable(NetworkInterface netif, int ttl, int timeout) 测试是否可以达到该地址。 |
boolean | isSiteLocalAddress() 检查 InetAddress 是否是站点本地地址的实用例行程序。 |
String | toString() 将此 IP 地址转换为 String 。 |
从类 java.lang.Object 继承的方法 |
---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
练习代码
端口(port):
"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。
协议端口:
如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。
结论:
1):在同一台电脑中端口不能重复,若重复,则报错端口冲突
2):如果我们需要自定义端口号,建议使用10000以A上的.
协议:
协议(protocol),网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法、语义、时序。
网络协议,也可简称协议,通常由三要素组成:
(1)语法:即数据与控制信息的结构或格式;
(2)语义:即需要发出何种控制信息,完成何种动作以及做出何种响应;
(3)时序(同步),即事件实现顺序的详细说明。
-------------------------------------------------------------
http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
file——当地电脑或网上分享的文件
URI:
统一资源标识符(UniformResource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串。
包含:主机名,标识符,相对URI.
如:http://java.sun.com:80/j2se/1.3/hello.html
URL:
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
-----------------------------
在Java中,URI表示一个统一资源的标识符,不能用于定位任何资源,唯一的作用就是解析.
而URL则包含一个可以打开到达该资源的输入流,可以简单理解URL是URI的特例.
-------------------------------------------------------------------------------
简单理解: URI和URL都表示一个资源路径.
创建URL对象:
URL(String protocol, String host, intport, String file)