三次握手:
1.Client > [SYN] > Server
当Client要和Server通信时,Client首先要向Server发送一个SYN(Synchronize) 标记的包,告诉Server请求建立连接
2.Client < [SYN/ACK] < Server
Server接收到Client发来的SYN包后,会发一个对SYN包的确认包(SYN/ACK)给Client,表示第一个SYN包的确认,并继续握手操作
3.Client > [ACK] > Server
Client 收到来自Server的SYN/ACK 包,Client会再向Server发一个确认包(ACK),通知Server连接已建立
四次挥手来关闭已经建立的TCP连接
Client > ACK/FIN > Server
Clinet < ACK < Server
Client < ACK/FIN < Server
Client > ACK > Server
TCP与UDP的区别
TCP是基于连接的,UDP是无连接的
对于系统资源TCP要求的多,UDP要求的少
TCP基于数据流模式,UDP基于数据报模式
TCP保证数据的正确性和顺序,UDP可能丢包,不能保证顺序。
TCP程序
import java.net.*;
import java.io.*
public class TCPServer
public static void main(String args[]) throws Exception{
ServerSocket ss = new ServerSocket(6666);
while(true){
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream);
System.out.println(dis.readUTF());
dis.close();
s.close();
}
}
import java.net.*;
import java.io.*;
public class TCPClient{
public static void main(String args[]) throws Exception {
Socket s = new Socket("127.0.0.1", 66666);
OutputStream os = s.getOutputStream();
DataOutputStream dos = new DataOutputStream(os);
dos.writeUTF("hello server!");
dos.flash();
dos.close();
os.close();
}
}