前言
网络编程博大精深,一直对此心存向往。在这几个月学习java的过程中,初步了解了一点相关知识。不敢说入门,只能说是看到了那扇门。希望有一天,可以真正地体会到门后的世界。
网络编程基础
网络模型: osi参考模型(七层),TCP/IP参考模型(四层)
网络结构
C/S(client/serve)
特点:
1.客户端与服务器端都需编写对应的程序。
2.开发成本较高,维护较为麻烦
3.表现力较为丰富。
4.客户端可分担一部分运算。
B/S(Browser/serve)
特点:
1.客户端被浏览器取代,故只需开发服务器端。
2.开发成本较低,维护较为简单。
3.所有计算须由服务器端负责。
网络通讯要素
IP地址
网络中的每一个用户都有一个标识名,这个标识名是由四个由0至255的数字组成。但是因为这样长串的数字不容易记忆,故出现了**域名**。这类似于手机中的通讯录,手机号码是“ip地址”,人的名字就是“域名”。这么多的域名也不太好管理与使用,于是出现了所谓的“**域名解析器”(DNS)。**
端口号
有效的端口号:0至65535
系统使用或保留的端口号:0至1024
传输协议
以下是个人理解,网络编程的主题就是“数据传输”。传输数据的一方和接收数据的一方会因为某种需求(如效率,安全等),对数据的传输形式和方法达成一定的共识。这个共识就是传输协议。
目前接触到的,也是java中网络编程基础中较重要的两种协议:UDP协议,与TCP/IP协议。
UDP协议
特点
1.不需要建立虚拟的数据连接。
2.效率较高,但传输不可靠。
3.传输容量有限制。
java中的UDP
常用类:
DategramSocket(用于建立Socket)
DategramPacket(用于解析或创建数据包)
可通过DategramSocket建立Socket,分别实现客户端与服务器端的功能。
TCP/IP协议
特点
1.需要建立专用的虚拟连接。(三次握手)
2.传输可靠,且数据容量较大。
java中的TCP
常用类:
Socket:用于创建客户端的socket服务
ServerSocket:用于创建服务器端的socket服务
其它
URL 与 URI
URI(相对地址):
统一资源标识符,用来唯一的标识一个资源。
URL(绝对地址):
统一资源定位器,它是一种具体的URI,用来标识一个资源,而且还指明了如何找到这个资源。
Socket(套接字)
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。常用来向网络发出请求或者应答网络请求。