网络编程基础知识点总结
一. 概述
本文是网络编程系列的第一篇文章,所以不讲代码,主要是网络编程的一些基础知识,下面的这些知识点主要是对java网络编程这本书的归纳与整理。有兴趣的同学可以看看。
我们知道计算机之间的通信要经过一系列复杂的过程,计算机之间通过传输介质、通信设施和网络通信协议互联,实现资源共享和数据传输。而我们的网络编程就是使用程序使互联网的两个(或多个)计算机之间进行数据传输。当然java语言,为了实现两个计算机之间的数据传输,提供了一系列的接口,使得开发人员可以方便的实现。
二 、网络体系结构
计算机之间的通信要经过一系列复杂的过程,必须将这两台计算机的物理逻辑和通信逻辑好好的规划好。为此我们先看看计算机网络的层次模型。然后再进行分析。
从上面这张图我们对计算机之间的通信特点进行整理一下:
(1)计算机之间的网络通信被分解为多个层,层与层之间用接口连接。
(2)通信的双方具有相同的层次,层次实现的功能由协议数据单元(PDU)来描述。
(3)不同系统中的同一层构成对等层,对等层之间通过对等层协议进行通信。
(4)在通信的时候数据必须由一层依次传递到下一层,不能跨级传输。
为了促进计算机网络的发展,国际标准化组织ISO在现有网络的基础上,提出了不基于具体机型、操作系统或公司的网络体系结构,称为开放系统互连参考模型,即OSI/RM。但是ISO制定的OSI参考模型过于庞大、复杂招致了许多批评。因此美国国防部提出了TCP/IP协议栈参考模型,简化了OSI参考模型,获得了广泛的应用。
1、OSI参考模型
这里首先介绍OSI参考模型,是国际标准化组织ISO提出的,把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。也是我们在大学计算机网络课程中认识的那样。下面一张图来看看。
(1)物理层处于OSI的最底层,是开放系统的基础,它的功能主要是为计算机提供传送数据的通路以及传输数据。
(2)数据链路层的主要任务是实现计算机网络中相邻节点之间的可靠传输,把原始的、有差错的物理传输数据加上数据链路协议以后,构成逻辑上可靠的数据链路。
(3)网络层主要完成的功能主要包括路由选择、网络寻址、流量控制、拥塞控制、网络互连等。实现两个计算机节点之间的数据传输。
(4)传输层涉及源端节点到目的端节点之间可靠的信息传输。也就是说是采用TCP/IP还是采用UDP协议。他需要三次握手四次挥手。
(5)会话层的主要功能是负责应用程序之间建立、维持和中断会话,提供单工、半双工和全双工3种不同的通信方式,使系统和服务之间有序地进行通信。
(6)表示层关心所传输数据信息的格式定义,其主要功能是把应用层提供的信息变换为能够共同理解的形式,提供字符代码、数据格式、控制信息格式