wireshark 分析TCP协议

wireshark 分析tcp协议

1.实验环境

1.manjaro-gnome-20.1.2
2.wireshark-3.4.0
3.VMware-16.0.0
4.ubuntu16.04 (虚拟机192.168.146.100 NAT模式 服务端)
5.ubuntu16.04 (虚拟机192.168.146.101 NAT模式 客户端)
6.python3.8

2.实验源码

server.py

运行于192.168.146.100

import socket
server = socket.socket()
server.bind(('0.0.0.0', 7777))
server.listen(5)
print('开始服务')
while True:
    conn, addr = server.accept()
    print('a new connect from ', addr)
    conn.sendall(bytes('hello,world!', encoding='utf-8'))
    conn.close()

client.py

运行于192.168.146.101

import socket
client = socket.socket()
client.connect(('192.168.146.100', 7777))
data = client.recv(1024)
client.close()
print(data.decode('utf-8'))

3.wireshare分析

三次握手,一次传输数据,四次挥手。
在这里插入图片描述
TCP Flags字段

SYN表示建立连接
FIN表示关闭连接
ACK表示响应
PSH表示有 DATA数据传输
RST表示连接重置

TCP Seq 字段

TCP 协议为每个包编号(sequence number,简称 SEQ),以便接收的一方按照顺序还原。万一发生丢包,也可以知道丢失的是哪一个包。

TCP ACK字段

ACK 携带两个信息。
期待要收到下一个数据包的编号
接收方的接收窗口的剩余容量

TCP Window

接受窗口大小,这个是可变的,用来调节数据发送速率。

IP Flags字段

1.长度3比特。
2.该字段第一位不使用。
3.第二位是DF(Don’t Fragment)位,DF位设为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。
4.第三位是MF(More Fragments)位,当路由器对一个上层数据包分段,则路由器会在除了最后一个分段的IP包的包头中将MF位设为1。

IP Protocol字段

8bit的协议字段表示在IP上层承载的是什么协议。
0x01表示ICMP协议
0x06表示TCP协议
0x11表示UDP协议等。

数据帧的Type

IP: 0x0800
ARP: 0x0806

源与目的

Ethernet:源Mac地址与目的Mac地址
IP:源ip地址与目的ip地址
TCP:源端口与目的端口

关于三次握手,四次挥手,请阅读这篇文章

作者info
作者:DebugWuhen
原创公众号:『DebugWuhen』,专注于记录有趣的编程技术和有益的程序人生,期待你的关注。
转载说明:务必注明来源(注明:来源于公众号:DebugWuhen, 作者:DebugWuhen)
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值