以太网及IP数据报,tcp数据报格式分析

在linux图形界面下,输入wiresharp,打开wiresharp界面,打开eth0网卡,监听网络。



以太网的帧结构为




那么很容易看出其中6c e8 73 4d a5 8c 位目的MAC地址 ,54 04 a6 20 059b为源MAC地址  0800为类型 ,IP数据报。以后的数据为IP数据报,接下来分析IP数据报格式。




IP数据包的头信息格式: 
+-------------------------------------------------+

 | 版本 (4位) | 
+-------------------------------------------------+

| 首部长度(4位) | 
+-------------------------------------------------+ 

 | 服务类型(TOS)8位 | 
+-------------------------------------------------+

 | 数据包总长度(16位) | 
+-------------------------------------------------+ 

| 标识ID号(16位) | 
+-------------------------------------------------+  

| 标志位(3位) | 
+-------------------------------------------------+

| 片偏移(13位) | 

+-------------------------------------------------+  

| 生存时间(TTL)(8位) | 
+-------------------------------------------------+  

| 协议类型 (8位) | 
+-------------------------------------------------+  

| 首部校验和(16位) | 
+-------------------------------------------------+  

| 源IP地址(32位) | 
+-------------------------------------------------+  

| 目的IP地址 (32位) | 
+-------------------------------------------------+ 

 * IP选项(若有) (32位) * 
+-------------------------------------------------+  

* 数据 * 
+-------------------------------------------------+ 


版本占3位 若为IPV4即为4 ,IPV6即为6,很显然此次捕获的版本为IPV4,首部长度(4位) 为5,需要乘以4,即为20字节长度。



服务类型(TOS)8位00,数据包总长度(16位) 为0034即为52个字节长度,此次包含20字节首部,和32字节数据。



标识ID号(16位) 为562c




标志位(3位) 为3位  010   R :保留 ;DF:不允许设置分片;MF:0没有更多的分片,1有分片。




因为没有分片,所以片偏移(13位) 为0,若有分片,为分片数据大小,进行连接数据使用。



生存时间(TTL)(8位) 为64,每经过一个网关,TTL进行减1,防止数据在网络上流荡。





协议类型 (8位)为6即为TCP   ,UDP为17,  ICMP为1





首部检验和为0x7b5  算法为  

(1)将校验和字段置为0; 
(2)对首部中(一般为20B)每个16位字进行二进制反码求和; 
(3)将(2)中得到的和再取反码,即得checksum,写入校验和字段中


即0x4500 + 0x34 + 0x562c + 0x4000 + 0x4006 + 0xc0a8 + 0x10a + 0xdea1 + 0xc48e = 0x38047  

0x8047 + 0x003 = 0x804a    0xffff - 0x804a = 0x7fb5   (003为进位)


 


没有选项,接下来是IP的数据。

接下来为TCP   传输控制协议  英文为Transmission  Control  Protocol  ;





源端口号为6151 



目的端口号为80 




序号为 



首部长度为32字节 0x80 = 128 bit = 32字节




码元比特位(6位)标志,置1有效,URG用于和紧急指针配合使用,发送紧急数据;ACK为指出确定号是否有效;PSH接收方应该尽快将这个报文交给应用层;RST重新连接;SYN同步序号用来请求建立连接;FIN用来释放连接;




窗口16位 :指定缓冲区大小,通告每次发送一个报文段时希望接收多少数据。




校验和






选项:



















可以发现 此次的tcp包为3次握手的第一次








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值