基础知识
1. 计算机网络的划分
计算机网络通常是按照规模大小和延伸范围来分类的,常见的划分为:局域网(LAN)、城域网(MAN) 、广域网(WAN) 。Internet 可以视为世界上最大的广域网。
计算机网络中实现通信必须有一些约定,这些约定被称为通信协议。
2. IP地址
IP 地址用于唯一地标识网络中的一个通信实体,这个实体既可以是一台主机,也可以是一台打印机,或者是路由器的某一个端口。
IP 地址被分成了 A, B, C, D, E 五类,每个类别的网络标识和主机标识各有规则:
- A类:10.0.0.0~10.255.255.255
- B类:172.16.0.0~172.31.255.255
- C类:192.168.0.0~192.168.255.255
IP 地址 127.0.0.1 是一个特殊的地址,它永远代表本机的 IP 地址。
3. 端口
端口是一个16位的整数,用于表示数据交给哪个通信程序处理。
端品就是应用程序与外界交流的出入口,它是一种抽象的软件结构,包括一些数据结构和 I/O 缓冲区。
不同的应用程序处理不同端口上的数据,同一台机器上不能有两个程序使用同一个端口,端口号范围为0~65535,通常将它分为三类:
- 公认端口:0~1023,它们紧密绑定一些特定的服务;
- 注册端口:1024~49151,它们松散地绑定一些服务,应用程序通常应该使用这个范围内的端口;
- 动态/私有端口:49152~65535,是应用程序使用的动态端口,应用程序一般不会主动使用这些端口。
4. Java包
Java 为网络支持提供了 java.net
包。该包下的 URL
和 URLConnection
等类提供了以编程方式访问 Web 服务的功能,而 URLDecoder/URLEncoder
提供了普通字符串和 application/x-www-form-urlencodedMIME
字符串相互转换的静态方法。
5. URL
URL
代表统一资源定位器,它是指向互联网“资源”的指针,资源可以是简单的文件或目录,也可以是对更为复杂对象的引用,例如对数据库或引擎的查询等。
在通常情况下,URL
由协议名、主机、端口、资源组成:
protocol://host:port/resourceName
- 示例:http://www.crazyit.org/index.php
6. 基于TCP的网络编程

TCP/IP 协议是一种可靠的、端对端的网络协议,它的通信的两端各建立一个 Socket
,从而在通信的两端之间形成网络虚拟链路。
Java 使用 Socket
对象来代表两端的通信端口,并通过 Socket
产生 IO 流来进行网络通信。
IP 协议只保证计算机能发送和接收分组数据,其负责将消息从一个主机传送到另一个主机,消息在传送的过程中被分割成一个个的小包;TCP 协议负责收集这些信息包,并将其按适当的次序放好传送,接收端收到后再将其正确地还原。
TCP 协议保证了数据包在传送中准确无误。其使用重发机制——当一个通信实体发送一个消息给另一个通信实体后,需要收到另一个通信实体的确认信息,如果没有收到,则会再次重发刚才发送的信息。
7. 基于UDP协议的网络编程
UDP 协议是一种不可靠的网络协议,它在通信实例的两端各建立一个 Socket
,但这两个 Socket
之间并没有虚拟链路,这两个 Socket
只是发送、接收数据报的对象。
UDP 协议从问世至今已经被使用了很多年,虽然 UDP 协议目前应用不如 TCP 广泛,但其依然是一个非常实用的网络传输层协议,尤其是在一些实时性很强的应用场景中,比如网络游戏、视频会议等,UDP 协议的快速更具有独特的魅力。
由于 UDP 协议是面向非连接的协议,没有建立连接的过程,因此它的通信效率很高;但也正因如此,它的可靠性不如 TCP 协议。
UDP 协议的主要作用是完成网络数据流和数据报之间的转换——在信息的发送端,UDP 协议将网络数据流封装成数据报,然后将数据报发送出去;在信息的接收端,UDP 协议将数据报转换成实际数据内容。
8. TCP与UDP的对比
TCP 与 UDP 的比对:
- TCP:可靠,传输大小无限制,但是需要连接建立时间,差错控制开销大;
- UDP:不可靠,差错控制开销较小,传输大小限制在 64KB 以下,不需要建立连接。