计算机网络,是指分布在不同地理区域的计算机用通信线路互连起来的一个具有强大功能的网络系统。网络中的主机之间通过网络协议来交流和联系。
根据计算机网络的区域大小,可以把网络分为局域网(LAN)和广域网(WAN)。Internet是全球范围的广域网,不同的网络之间的互联靠网络上的标准语言--TCP/IP协议。
OSI参考模型
国际标准化组织(IOS)研究了一种用于开放系统互联(OSI)的体系结构,将网络分为七层,从下往上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如下图所示。每一层使用下层提供的服务,并为上层提供服务。
1、物理层
为上一层提供物理连接,以及规定通信节点之间的机械和电气等特性,在这一层,数据作为原始的比特(bit)流传输。本层的典型设备是Hub(集线器)。
2、数据链路层
数据链路层负责在两个相邻节点间的线路上,无差错的传送以帧为单位的数据。本层的典型设备是Switch(交换机)。
3、网络层
网络层将数据链路层提供的帧组装成数据包,包中封装的网络层包头,包头中含有逻辑地址--源主机和目的主机的网络地址。本层的典型设备是Router(路由器)。
4、传输层
为源主机的目的主机的会话层提供建立、维护和取消传输链接的功能,以可靠或不可靠的方式传输数据。在这一层,信息的传送单位是报文。
5、会话层
会话层管理进程之间的会话过程,即负责建立、管理、终止进程之间的会话。
6、表示层
表示层对上层的数据进行转换,以保证一个主机的应用层的数据可以被另一台主机的应用层理解。
7、应用层
应用层确定里程之间的实际用途,以满足用户实际需求。
如下图所示,当发送端向接收端发送数据时,在发送端,数据先由上层向下层传递,每一层会给上一层添加一个信息头,然后向下层发出,最后通过物理介质传输到接收端。在接收端的数据传递,恰好跟发送端的相反,数据由上层放上层传递,并在每一层都对数据就行处理,去掉信息头,再向上传输,最后到达最上层,数据就会还原成实际数据。
不同主机之间的相同层称为对等层,对等层之间互相通信需要遵守一定的规则,如通信的内容和通信的方式,这种规则称为网络协议。
TCP/IP参考模式和TCP/IP协议
IOS制定的OSI参考模式提出了网络分层的思想,但并没有投入到实际运用。与OSI模型类似的TCP/IP参考模型借鉴了OSI分层的思想,对其进行了简化,并在网络各层(除了主机-网络层外)都提供了完善的协议。TCP/IP参考模型分为4个层次:应用层、传输层、网络互联层和主机-网络层,如下图所示。每一层都有相应的协议。
1、主机-网络层
该层实际上第三方提供,要求第三方实现的主机-网络层能够为上层(网络互联层)提供一个访问接口,使得网络互联层能利用主机-网络层传递来的IP数据包。
2、网络互联层
网络互联层是整个参考模型的核心,它的功能是把IP数据包发送到上标主机。为了尽快的发送数据包,IP协议把原始数据分为多个数据包,然后沿不同的路径同时传递。数据包到达的先后顺序和发送的先后顺序可能没,这就需要上层(传输层)对数据包进行重新排序,还原为原始数据。
网络互联层采用IP协议,它规定了数据包的格式,并且规定了为数据包寻找路由的流程。
3、传输层
传输层的目的是使源主机和目的主机上的进程可以进行会话。在该层定义了两种服务质量不同的协议,即TCP(传输控制协议)和UDP(用户数据报协议)。TCP协议是一种面向连接的、可靠的协议,它将源主机发出的字节流无差错的发送给互联网上的目的主机。UDP协议是一个不可靠的、无连接的协议,主要适用于不需要对报文进行排序和流量控制的场合。
4、应用层
TCP/IP参考模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。针对不同的网络应用,应用层引入了许多协议。
基于TCP的有:FTP(文件传输协议)、TELNET(虚拟终端协议)、HTTP(超文本传输协议)、HTTPS(安全超文本传输协议)、POP3(邮局协议版本3)
基于UDP的有:SNMP(简单网络管理协议)、DNS(域名系统协议)
IP协议
IP网络中的每一台主机都有一个唯一的IP地址,IP地址是一个32位的二进制灱序列。IP地址由两部分组成:IP网址和IP主机地址。
网络掩码用来确定IP地址中哪个部分是网址,哪个部分是主机地址。把网络掩码与IP地址进行二进制与操作,得到的就是IP网址。主机实际上有两个不同的地址:物理地址和IP地址,物理地址才是主机的真实地址。当主机A向主机B发送数据包的时候,会通过地址解析协议将主机B的IP地址解析为物理地址,然后把包发给主机B。
域名
域名与IP地址一一对应。例如JavaThinker网站的域名为www.javathinker.org,对应的IP地址为221.130.187.148。DNS协议采用DNS服务器来提供把域名转换为IP地址的服务。
端口
端口不是物理设备,而是用于标识进程的逻辑地址。更确切的说,是用于标识TCP连接的端点的逻辑地址。客户进程的端口一般由所在主机的操作系统动态分配。TCP和UDP都用端口来标识进程,在一个主机中,TCP端口和UDP端口的取舍范围是各自独立的,允许存在取值相同的TCP端口与UDP端口。
客户/服务器通信模式
在通信的两个进程中,一个为客户进程,一个为服务器进程。客户进程向服务器进程发出请求,服务器进程响应请求,并返回给客户进程响应结果。一个服务器进程可同时为多个客户进程服务。接下来介绍的java网络程序都是建立在TCP/IP的基础上,致力于实现应用层。传输层向应用层提供套接字Socket接口,Socket封装了下层的数据传输细节,应用层的程序通过Socket来建立与远程主机的连接,以及进行数据传输。