最近看完反射相关内容之后,也开始了解网络编程的一些知识,这里写这篇文章记录一下。一开始说明下网络编程相关概念,后面说一下一个简单的控制台聊天怎么实现的。
网络编程相关概念
网络
摘自百科:网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。说白了,可以类比人际关系网,就像著名的”六人定律“,任何两个人之间的关系带,基本确定在六个人左右,最后建立的关系网就很像网络的表现形式。
网络编程
既然有了网络,那我们肯定要通过网络来实现通信,而网络编程就可以庞统的理解为:实现网络中数据发送与接收。
网络模型
为了描述网络的结构原理和工作原理,所以定义了网络模型这一概念。而现在公认使用最多的网络模型有两大类,分别是OSI七层模型和TCP/IP五层模型
每层简介如下:
(1)应用层:模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。
(2)表示层:表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。
(3)会话层:会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。
(4)传输层:传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。这篇文章重点要说的TCP/UDP协议就是在这一层。端口号既是这里的“端”。
(5)网络层:本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。也就是常说的IP协议层。
(6)数据链路层/ 物理层 :这两层一般一起描述,主要是通过物理介质传输或接收比特流,以及对数据进行校验处理后进行封装。数据链路层比较常见的是CSMA/CD或CSMA/CA算法,用来校验数据。
网络协议
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。具提到网络模型的分层上,每一层都有自己的通信协议,比如应用层的HTTP协议,传输层的TCP/IP协议,网络层的IP协议等。
套接字
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。这次Java实现聊天功能也是使用到socket进行数据传输的。
Java实现网络编程
这次主要是通过java自带的有关网络编程的类来实现一些功能,所以这一部分也是重点介绍的地方。
TCP/UDP协议
这两者都是传输协议,区别在于,TCP是需要建立连接才能进行传输的,而且是可靠的协议,能够保证数据的安全性。于此相反,UDP的传输不需要建立连接,因此数据的即时性会比TCP好,但是安全性相比UDP而言就不如了。