使用以下代码尝试连接45.40.234.165:
import java.util.*;
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) throws IOException {
System.out.println("我是客户端: 开始三次握手");
Socket socket = new Socket("45.40.234.165", 80);
System.out.println("我是客户端: 三次握手成功");
Scanner scanner = new Scanner(System.in);
scanner.nextLine();
}
}
(1) 先打开wireshark输入过滤条件:
wireshark过滤包:ip.addr == 45.40.234.165
(2)shell下输入盘符 G:
cd G:\1workplace\jingdong\src
javac -encoding UTF-8 TCPClient.java
wireshark捕获到的三次握手:
第一个包是一个SYN同步信息包,第二个是SYN+ACK同步信息+应答包,第三个是一个应答包。
第一个:
第二个:
第三个:
注意:
(1)后面部分的Seq是序列号,ACK指的是确认序列号
(2)根据wireshark中的端口号10405,可以利用netstat来查看连接状态,其中1184是进程ID:netstat -nao | findstr 10405(端口号)
(3)如果想要关闭相对序列号/确认号,可以选择Wireshark菜单栏中的 Edit -> Preferences ->protocols ->TCP,去掉Relative sequence number后面勾选框中的√即可
(4) Linux上的抓包工具是tcpdump。