NIO实现聊天室之:一切都要从网络编程的基础开始聊起!
一、写在开头
大家好,Build哥回来啦!停更了大概2个月之久,之前有段时间去写小说去了,后来又因为公司活太多,牛马干的太投入,就拉下了博客的更新,国庆节期间,难得的闲下来,准备回归老本行啦。
大致的翻看了一下之前更新的内容,已经写到了Java的IO部分,作为网络传输的一大重点知识,IO至关重要,而为了更好的理解和使用IO,我们今天要延展的来聊一聊Java中的网络编程。其实,这句话说的不太严谨,网络编程并非Java独有,所有依赖Web端的程序语言,或者应用们都离不开网络编程。
二、网络编程的基础
ok,闲话少叙,咱们直入主题,来一起学习一下网络编程,在开始学习之前,我们应该了解一下我们日常生活中都离不开的互联网及周边产品(路由器,网址,手机,电脑)等。
2.1 计算机网络
电脑对于我们来说十分熟悉啦,在多台联网电脑之前,我们可以聊天,视频,邮件交流,也可以通过不同的媒介平台进行互通,所有在线的用户设备之间,像一张大网串联起来,互通有无,这就是计算机的网络!
如上图,是一张概括的网络拓扑简图,非常形象易懂的囊括了我们当下的互联网世界。其中,用户设备如手机,电脑这些用于访问网络资源,如看剧,刷新闻,而网络交换机则是让手机能上网的桥梁,用来连接局域网内的设备和路由器,而路由器呢,主要工作是实现不同网络之间的路由,可以联通互联网,而为了防止一些为经过授权的访问侵入设备,设备的网络中均设有一道防火墙,用于拦截未授权请求;而互联网呢,则是全球互通互相的一个信息资源网,服务器无需多谈,用于托管网络应用和数据的处理和存储站。
那么,看到这里我们有了这样一个疑问,全球不同国家和地区存在着不同的局域网,遵循着不同的网络协议,是怎么做到全球互通互联网的呢?伟大的先辈们早就考虑到这点啦,因此,最早制定规范的那帮人,就互联达成了全球性的协议规范,那就是TCP/IP协议,下面我们聊到协议时会说。
2.2 IP
对于IP来说,大家也很熟悉,我们在日常上网的过程中,所说的网址,其实主要就是这个IP(Internet Protocol),中文译作国际互联协议。它像一个身份证号一样,唯一的标识着网络中的一个接口,任何联入到互联网中的计算机都只要拥有一个IP地址。
目前IP分为IPv4和IPv6,因为v4版本采用32位地址,算起来越42亿个地址,目前已经用尽,所以推出了v6版本,采用128位地址,340万亿亿亿亿个地址,对,你没看错,2的128次方个地址就是这么多,这个数字是人类灭绝了都用不完的。
一个特殊的 IP 地址,称之为本机地址,它总是127.0.0.1
IPv4(如:101.302.88.22)
IPv6 (如:2001:0DA8:100A:0000:0000:1020:F2F3:1428)