网络编程最基本的任务就是开发像浏览这样的客户端程序,及像WEB服务这样的服务端程序,并使两者有条不紊的交互数据。
Java网络编程基本概念:
1)计算机网络:
计算机网络是指把分布在不同地理位置的计算机通过通信线路连接在一起的网络体系,众多计算机可方便的进行通信。而相互通信依靠的就是协议,我们可以形象的称它为“计算机语言” 。
IP协议:
IP网络中每台主机都有唯一的IP地址,IP地址用于标示网络中的每一台主机。
TCP协议:
TCP协议是面向连接的通信协议,位于网络的传输层。通过三次握手完成连接,由于协议是面向连接的所以只能用于点对点传输,TCP协议在传输中会跟踪包顺序,如顺序搞乱时会重组包。如果丢失会向源主机请求重发包。所以我们不需要担心顺序和丢失的问题。TCP的两个端点是通过端口来标识的。
应用TCP协议的服务有Telnet、FTP、和SMTP、HTTP、HTTPS
UDP协议:
UDP协议是面向无连接的通信协议,位于网络的传输层,UDP数据包包括目的端口号信息及源端口号信息,由于通信不需要连接所以可以实现广播发送。
由于UDP协议在接收时不需要验证,所以属于不可靠传输,它并不关心数据包的顺序、丢包、重发等问题。
TCP 三次握手:
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
JAVA网络编程致力于实现应用层,程序通过Socket来建立与远程主机的连接,及进行数据连接。在JAVA网络编程中有三个套子节:java.NET.Socket、java.Net.ServerSocket 和 DatagramSocket。其中Socket 和ServerSocket类建立在TCP协议基础上。DatagramSocket类建立在UDP协议基础上。