概述
通过通信线路(有线或无线)可以把不同地理位置且相互独立的计算机连同其外部设备连接起来,组成计算机网络。在操作系统、网络管理软件及网络通信协议的管理和协调下,可以实现计算机之间的资源共享和信息的传递。
网络编程
是指用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。对我们来说即如何用编程语言java实现计算机网络中不同计算机之间的通信。
网络通信三要素
IP地址
网络中计算机的唯一标识:
32bit(4字节),一般用“点分十进制”表示,如192.168.1.158
IP地址=网络地址+主机地址 可分类:
- A类:第1个8位表示网络地址。剩下的3个8位表示主机地址
- B类:第2个8位表示网络地址。剩下的2个8位表示主机地址
- C类:第3个8位表示网络地址。剩下的1个8位表示主机地址
- D类:用于在IP网络中的组播
- E类:保留作为研究之用
Java编程中可使用InetAddress
类来操纵IP地址
public static void main(String[] args) throws UnknownHostException {
InetAddress localhost = InetAddress.getLocalHost();
System.out.println("HostAddress: " + localhost.getHostAddress());
System.out.println("HostName: " + localhost.getHostName());
}
端口号
用于标识进程的逻辑地址,不同进程的标识
有效端口:0-65535,其中0-1024系统使用或保留端口
传输协议
通讯的规则
常见协议:UDP(用户数据报协议)、TCP(传输控制协议)
- UDP
- 将数据及源和目的封装成数据包中,不需要建立连接
- 每个数据报的大小在限制的64k内
- 因无连续,是不可靠协议
- 不需要建立连接,速度快
- TCP
- 建立连接,形成传输数据的通道
- 在连续中进行大数据量传输
- 通过三次握手完成连接,是可靠协议
网络模型
计算机网络之间以何种规则进行通信,就是网络模型所研究的问题。
网络模型一般是指OSI七层参考模型和TCP/IP五层参考模型
每一层实现各自的功能和协议,并且都为上一层提供业务功能。为了提供这种业务功能,下一层将上一层中的数据并入到本层的数据域中,然后通过加入报头或报尾来实现该层业务功能,该过程叫做数据封装
。用户的数据要经过一次次包装,最后转化成可以在网络上传输的信号,发送到网络上。当达到目标计算机后,再执行相反的数据拆包
过程
物理层
:
主要定义物理设备标准,如网线的接口类型,光纤的接口类型,各种传输介质的传输速率等
主要作用是将数据最终编码为用0、1标识的比特流,通过物理介质传输
这一层的数据叫做比特
数据链路层
:
主要将接收到的数据进行MAC地址(网卡地址)的封装与解封装
常把这一层的数据叫做帧。这一层常工作的设备是交换机
网络层
:
主要将接收到的数据进行IP地址的封装与解封装
常把这一层的数据叫做数据包。这一层设备是路由器
传输层
:
定义了一些数据传输的协议和端口号
主要将接收到的数据进行分段和传输,到达目的地址后进行重组
常把这一层的数据叫做段
会话层
:
通过传输层建立数据传输的通路
主要在系统之间发起会话或者接收会话请求
表示层
:
主要进行对接收数据的解释、加密与解密、压缩与解压缩
确保一个系统的应用层发送的数据能够被另一个系统的应用层识别
应用层
:
主要是为一些终端应用程序提供服务。直接面对着用户的。