Java网络编程

最近开始给小登授课了才发现有很多内容自己都不是很清楚,于是想着先来学学吧。中学学的”学学半“,至今终于有所体会。

Java网络编程

网络编程,就是在网络通信协议下,在不同设备上运行的不同程序间进行数据传输。

常见的网络架构有:CS架构,Client-Server架构,即客户端-服务器架构。BS架构,Browser-Server架构,即浏览器-服务器架构。笼统来说就是一个要下载客户端,一个在浏览器上输网址。不过无论是哪一种,核心业务逻辑都是差不多的。

网络编程三要素:IP地址(设备在网络中的地址),端口号(应用程序在设备中的唯一标识),协议(数据在网络中传输的规则)。

IP

全称:Internet Protocol,是互联网协议地址,也称IP地址。是分配给上网设备的数字标签。常见有:IPv4、IPv6。

IPv4

全称Internet Protocol Version 4,互联网通信协议第四版。采用32位地址,每段为8位,共4段。可以用点分十进制表示法(每段分别转化成十进制,并用点隔开,如192.168.0.1)表示。

在2019年11月26日,IPv4地址已全部用完。

为了缓解这个问题,就又把IP分为了公网地址和私有地址。198.162.开头的就是私有地址,范围为192.168.0.0-192.168.255.255。

127.0.0.1,也可以是localhost:,是回送地址也称本地回环地址,永远只会寻找本机。

IPv6

为了应对IPv4用完的问题,就引入了IPv6。

IPv6,全称Internet Protocol Version 6,互联网通信协议第六版。采用128位地址,每段为16位,共8段(一共有2^128个)。可以用冒分十六进制表示法(每段分别转化成十六进制,并用冒号隔开,如2001:0db8:85a3:0000:0000:8a2e:0370:7334)表示,且可以省略每段的前导零。目前还没有大面积普及。

端口

端口,是应用程序在设备中的唯一标识。端口号是两个字节表示的整数,取值范围是0-65535。其中0-1023为系统端口,1024-65535为用户端口。一个端口只能被一个程序使用。

协议

计算机网络中,连接和通信的规则被称为网络通信协议。

有两种参考模型:

  • OSI参考模型:7层模型,从下到上依次为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
  • TCP/IP参考模型(或TCP/IP协议):4层模型,从下到上依次为:数据链路+物理层、网络层、传输层、应用层。

其中由于OSI参考模型过于理想化,未能推广,所以TCP/IP参考模型是实际上的国际标准。所以本文主要讨论TCP/IP参考模型。

TCP/IP协议的传输层又有两个应用广泛的协议:TCP和UDP。

UDP

UDP,全称用户数据报协议(User Datagram Protocol),是一种面向无连接的通信协议。主要特点为:速度快,但是大小有限制,且不能保证数据传输成功。

TCP

TCP,全称传输控制协议(Transmission Control Protocol),是一种面向连接的通信协议。主要特点为:速度相对慢,但可靠,大小无限制,且能保证数据传输成功。