1.2 计算机网络的概念
1.3 OSI参考模型
OSI参考模型把网络分为了7层,分别是物理层,数据链路层,网络层,运输层,会话层,表示层,应用层。其中各层的功能如下:
- 物理层
物理层的任务就是为他上一层提供物理连接,以及规定通信节点之间的机械和电气等特性,如规定电缆和街头的类型。在这一层,数据作为原始的比特流传输。典型的设备是集线器。 - 数据链路层
数据链路层负责在两个相邻节点间的线路上,无差错地传送以帧为单位的数据。每一帧包括一定数量的数据和一些必要的控制信息。数据链路层要负责建立、维持和释放数据链路的连接。本层的典型设备是交换机。 - 网络层
网络层的任务就是选择合适的网间路由和交换节点,确保数据及时传送到目标主机。网络层将数据链路层提供的帧组成数据包,包中封装有网络包头,包头中含有逻辑地址–源主机和目标主机的网络地址。典型的设备是路由器。 - 运输层
该层的任务是根据通信子网的特性最佳地利用网络资源,为两个端系统(也就是源主机和目标主机)的会话层提供建立、维护和取消传输连接的功能,以可靠方式或不可靠方式传输数据。所谓可靠方式,是指保证把源主机发送的数据正确发送给目标主机。所谓不可靠方式,则是指不保证把源主机发送的数据正确发送给目标主机,数据有可能丢失或出错。这一层,信息传送单位是报文。 - 会话层
也可以称为会晤层或对话层,在会话层以及以上层次中,数据传送的单位不在另外命名,统称为报文。会话层管理进程之间的会话过程,及负责建立、管理、终止进程间的会话。会话层还可以通过在数据中插入校验点来实现数据的同步。 - 表示层
表示层对上层数据进行转换,以保证一个主机的应用层的数据可以被另一个主机的应用层理解。表示层的数据转换包括对数据的加密,解密,解压,压缩和格式转换等。 - 应用层
应用层确定进程之间通信的实际用途,以满足用户的实际需求。 OSI各层的一些典型协议主要有: - 应用层: WWW、HTTP、HTTPS、FTP、SMTP、SNMP(简单网络管理协议)、DNS、TELNET(远程登录协议)
- 表示层:ASCII、ASN.1等
- 会话层: NetBIOS、ZIP等
- 传输层: TCP、UDP
- 网络层:IP、RIP
- 数据链路层:PPP
- 物理层:RJ-45等
1.4 TCP/IP参考模型和TCP/IP协议
由于OSI七层协议太过庞大和复杂,使得它难以投入到实际运用中。而TCP/IP参考模型吸取了网络分层的思想,同时对网络的层次做了简化,并在网络各层(主机-网络层)都提供了完善的协议。
TCP/IP参考模型分为4个应用层次:应用层、运输层、网络互连层、主机-网络层.在每一层都有对应的协议。确切说,TCP/IP协议应该称为TCP/IP协议集,它是TCP/IP参考模型的除了主机网络层以外的其他3层的协议的集合,这是因为主机-网络层的协议是第三方提供的,而IP协议和TCP协议则是协议中最核心的2个协议。
下面介绍TCP/IP各层的主要功能:
-
主机-网络层 实际上,TCP/IP参考模型没有真正提供这一层的实现,也没有提供协议,它只是要求第三方实现的主机-网络层能够为上层(网络互联层)提供一个访问接口,使得网络互联层能够利用主机-网络层来传递IP数据包。 -
网络互联层 网络互联层是整个参考模型的核心。它的功能是把IP数据包发送给目标主机。为了尽快发送数据,IP协议把原始数据分为多个数据包,然后沿不同的路径同时传递数据包。但是数据包到达的先后顺序和发送前的先后顺序可能不同,此时需要上层(运输层)对数据包进行重组,还原为原始数据。 网络互联层采用IP协议,规定了数据包的格式,并且规定了为数据包寻找路由的流程。 -
运输层 -
应用层 TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。在应用层中的协议主要有: 上面的协议都是基于TCP的,而基于UDP的应用层协议主要有:DNS(域名系统协议),SNMP(简单因特网管理协议)
IP协议
每台主机都有唯一的IP地址,IP地址用于标识网络的每个主机。IP地址是一个32位的二进制数序列(IPV4),为了便于在上层层应用中方便表示IP地址,可以包32位的二进制数序列分为4个单元,每个单元占8个比特,然后用十进制数字表示每个单元。
但是新的IPV6的标准则是采用128位的地址,占16个字节,大大扩充了可用地址的数目。
IP地址主要有2个部分构成: IP网址和IP主机地址(即网络号和主机号)。IP网址表示网络地址,IP主机地址表示网络中的主机的地址。网络掩码可以确定IP地址中哪一个部分是网址,哪部分是主机地址。 网络掩码的形式和IP地址形式相同,但是有一定的限制。在网络掩码的二进制数序列中,前面的数字都是1,后面的都是0.网络掩码和IP地址做与运算,那么就可以得出这个IP地址的网络地址。
子网划分
主机号全为0和全为1不可以作为网络的主机地址,这是因为主机号全为0表示的是网络地址,全为1表示的是广播地址。所以求一个子网中能够作为网络的主机地址个数,记得要减2.
发送数据包的过程
域名
### URL(统一资源定位器) URL表示统一资源定位器,专为标识网络上资源位置而设的一种编制方式。URL一般有3个部分组成:应用层协议/主机IP地址或域名/资源所在的路径/文件名. URL中,常见的应用层协议还有ftp和file等。
TCP协议及端口
1.5 Java编写客户/服务器程序
在Java中,有3中套接字类:Socket,ServerSocket,DatagramSocket,其中Socket、ServerSocket类建立在TCP协议基础上,DatagramSocket建立在UDP基础上的。Java网络程序都采用客户/服务器通信模式。
String host = InetAddress.getLocalHost();
int port = 10000;
Socket socket = new Socket(host,port);
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
socket.close();
TCP服务端:
ServerSocket server = new ServerSocket(10000);
Socket socket = server.accept();
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
socket.close();
server.close();
DatagramSocket client = new DatagramSocket(10000);
String text = "hello,this is udp client!";
byte[] bytes = text.getBytes();
String host = InetAddress.getLocalHost();
int port = 10001;
DatagramPacket data = new DatagramPacket(bytes,bytes.length,host,port);
client.send(data);
client.close();
创建UDP服务端:
int port = 10001;
DatagramSocket server = new DatagramSocket(port);
byte[] bytes = new byte[1024];
DatagramPacket data = new DatagramPacket(bytes,bytes.length);
server.receive(data);
String text = new String(data.getData(),0,data.getLength());
System.out.println(text);
server.close();
|