Socket
1、什么是Socket
1.1Socket 就是为网络服务提供的一种通讯机制,两端都有Socket,网络通讯其实就在Socket之间通讯,
数据在两个Socket之间通过Io传输;
Java Socket是实现Java网络编程的机制,其中服务器端的套接字成为ServerSocket,
而客户端的套接字称为Socket。每一个Socket都由IP地址和端口号唯一确定;
1.2 Socket可以分为两种类型:面向连接的Socket通信协议(TCP)和无连接的Socket通信协议(UDP)。
有关TCP和UDP的详细信息,基于TCP的Socket通信过程分为三个步骤:服务器监听、客户端请求、连接确认。
2、如何创建Socket
Java在java.net 中提供了两个类Socket何ServerSocket分别表示客户端和服务器端,
Socket(InetAddress address, int port, boolean stream);
ServerSocket(int port, int backlog, InetAddress bindAddr)
3、TCP 和UDP的区别?UDP:提供无连接的通信,不能保证数据包被发送到目的地址,典型的即时传输少量数据的应用程序使用UDP
TCP:面向连接的。可靠地。基于字节流的通信协议,它为传输大量数据或为需要接受数据许可的应用程序提供定向可靠地通信,
基于TCP的Socket通信过程分为三个步骤:服务器监听、客户端请求、连接确认。
SYN 握手信号
(1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
(2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
(3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
4、TCP/IP 概述
TCP/IP 是用于因特网(Interent)计算机通信协议
TCP/IP 意味着 TCP 和 IP 在一起协同工作。
TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。
IP 负责计算机之间的通信。
TCP 负责将数据分割并装入 IP 包,然后在它们到达的时候重新组合它们。
IP 负责将包发送至接受者。
Tcp 协议 传输控制协议他提供了可靠的面向连接基于流服务
Tcp的三大特征:
1、 可靠性:应用层的数据会准确无误的发送到目标端。
2、 面向连接:使用Tcp 协议通信的双方先建立Tcp 连接,必在内核为连接维持一些必要的数据结构。列如
(1) 连接的状态 (2)读写缓冲区 (3) 相关定时器 等。。。。
(4) 当通信结束时,双方必须关闭连接来释放这些数据结构,
Tcp 是基于流的,意味着数据的传输米有边界,发送端可以逐个想接收端发送数据,
接收端也可以逐个字节的读取他们。
UDP 协议传输层控制协议,他给应用层提供的是不可靠的无连接的基于数据包的服务(1)不可靠:无法保证数据准确无误的发送到目标端,他只能尽力而为,
如果数据在中途都丢失,或者目标端通过数据校验发送数据不正确,
他只能通知通知应用程序发送失败,需要程序处理
(2)无连接:通信的双方不保持长久的连接,所有应用程序每次发送数据都要指明接收端的地址,
UDP协议是基于数据报的服务,每个UDP 数据报都有一个长度,接收端必须按照最小单位异常性读出
TCP 与 UDP 的应用场景从特点上我们已经知道,TCP 是可靠的但传输速度慢 ,UDP 是不可靠的但传输速度快。因此在选用具体协议通信时,
应该根据通信数据的要求而决定。
若通信数据完整性需让位与通信实时性,则应该选用 TCP 协议(如文件传输、重要状态的更新等);
反之,则使用 UDP 协议(如视频传输、实时通信等)。