Open YBFACC opened 3 years ago
在本地或者服务器上使用node创建http服务器,在本地发起请求并使用wireshark来进行抓包分析。
以下两幅中、英文图对比观看,对抓到的数据可以轻松理解。
以下是使用wireshark抓包一次连接。
Seq、Ack这些值不是从0开始,实际上是由算法产生的。只是软件为了更加直观帮我们从0算起。
全部的Flags标示:
这些标示是由8个位来控制的。Flags代表这个tcp包的作用。
客户端第1次发送请求时,seq根据自身算法得到。SYN表示请求连接
服务端第1次发送请求时,seq根据自身算法得到,ack=客户端seq+1。SYN表示接受请求,ACK表示确认号有效。
客户端第2次发送请求时,seq=服务端ack,ack=服务端seq+1。ACK表示确认号有效。
PS:虽然2个seq都显示为0,但是其真实值并不相同。
a端第1次,传输结束,要求释放连接。ACK表示确认号有效。FIN表示数据传送完毕,要求释放连接。
b端第1次,数据进行传输。ACK表示确认号有效。
b第2次,传输结束,已准备断开。ACK表示确认号有效。FIN数据传送完毕,要求释放连接。
a第2次,确认断开。ACK表示确认号有效。
PS:抓包时发现:首先发送FIN的不一定是客户端,服务端也可以。
假设客户端发起FIN。服务端也没有数据需要传输,服务端可以直接返回FIN,将2次回复变成1次。
实战!我用 Wireshark 让你“看见“ TCP
wireshark分析TCP连接和关闭
图1、5、6 来自《第5 版计算机网络原理》课件
图2 https://www.cnblogs.com/lshs/p/6038458.html
tcp的学习
在本地或者服务器上使用node创建http服务器,在本地发起请求并使用wireshark来进行抓包分析。
tcp报文首部格式
以下两幅中、英文图对比观看,对抓到的数据可以轻松理解。
以下是使用wireshark抓包一次连接。
Seq、Ack这些值不是从0开始,实际上是由算法产生的。只是软件为了更加直观帮我们从0算起。
Flags
全部的Flags标示:
这些标示是由8个位来控制的。Flags代表这个tcp包的作用。
3次握手
客户端第1次发送请求时,seq根据自身算法得到。SYN表示请求连接
服务端第1次发送请求时,seq根据自身算法得到,ack=客户端seq+1。SYN表示接受请求,ACK表示确认号有效。
客户端第2次发送请求时,seq=服务端ack,ack=服务端seq+1。ACK表示确认号有效。
PS:虽然2个seq都显示为0,但是其真实值并不相同。
4次挥手🙋♂️
a端第1次,传输结束,要求释放连接。ACK表示确认号有效。FIN表示数据传送完毕,要求释放连接。
b端第1次,数据进行传输。ACK表示确认号有效。
b第2次,传输结束,已准备断开。ACK表示确认号有效。FIN数据传送完毕,要求释放连接。
a第2次,确认断开。ACK表示确认号有效。
PS:抓包时发现:首先发送FIN的不一定是客户端,服务端也可以。
3次挥手
假设客户端发起FIN。服务端也没有数据需要传输,服务端可以直接返回FIN,将2次回复变成1次。
参考
实战!我用 Wireshark 让你“看见“ TCP
wireshark分析TCP连接和关闭
图1、5、6 来自《第5 版计算机网络原理》课件
图2 https://www.cnblogs.com/lshs/p/6038458.html