sock5系列之简单测试sock5 连通性!(二)
来源:互联网 发布:新闻表数据库设计 编辑:程序博客网 时间:2024/05/17 13:39
先说一个感念性的名词---TPC半链接(TPC的三次握手)
在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状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。 Backlog参数:表示未连接队列的最大容纳数目。
SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
下面是测试联通性的代码,也就是TPC的第一次握手,为什么会有三次握手?这个楼主也不知道,但是楼主知道先测试连通性,再测试可用性效率会比直接测试可用性高。什么是可用性?下一篇会有答案
package socket.check.ip;import java.net.Socket;public class TestClient {public static void main(String[] args){System.out.println(isConnected());}@SuppressWarnings("resource")public static boolean isConnected(){Socket socket;try{ socket=new Socket("172.16.2.2", 1080); socket.sendUrgentData(0xFF); return true; }catch(Exception e){ return false; }}}通过sendUrgentData()方法,发送0xFF就能知道socket服务器是否能联通,只是确认是否能联通哦!!!
- sock5系列之简单测试sock5 连通性!(二)
- sock5系列之模拟tcp请求sock5服务器!(三)
- sock5系列之centos6.5 搭建!(一)
- winsock编程使用Sock5代理(二)
- Sock5协议(二)
- SOCK5代理服务器
- sock5代理
- Sock5协议(一)
- 实现Sock5代理
- sock5代理 数据包格式
- 搭建sock5代理
- sock5代理工作原理
- sock5代理工作原理
- sock5代理工作原理
- sock5代理工作原理
- Sock5协议详解
- sock5学习日记
- SOCK5代理服务器配置
- Oracle分析函数总结
- [python]python验证码识别
- 编程学习之道
- 链表学习总结
- Android制作和使用Nine-Patch图片
- sock5系列之简单测试sock5 连通性!(二)
- 让cman命令显示中文
- VueJS---观察-Watchers
- 悬浮按钮FloatingActionButton控件
- windows,linux防火墙配置
- Python数据类型转换
- Digester 解析 XML
- 全都是人家的
- PAT B1044的几个答案