Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1397995
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: LINUX

2017-02-15 23:17:32

    协议栈会不会自动发送FIN?
       协议栈不会自动发送3次握手或者4次挥手流程中的任务报文流程,但是协议栈中的定时器超时会导致状态机迁移
   协议栈什么时候发送RST?
       当应用层调用close的时候,并且连接上仍然有数据,对端则会发送带数据的ACK作为响应,应用层本身会再次发送RST(FIN改为RST)
   协议栈中的状态机,应用层可以干预吗?
       过去一直以为协议栈中的状态机,应用层无法干预,只能通过netstat查看而已
       但是现在的理解是状态机可以通过类似钩子函数close,shutdown,connect,accept,listen来触发协议栈的消息发送,也会触发状态机的
       变迁
    
   协议抓包的过程中,会发现在网络数据较多的时候,ACK中会夹带数据,这个特性称作捎带确认,由于需要不断的发送ACK,但是又不想浪费
   一次交互,将数据放到ACK中,称为piggerbacking
   
   如何通过抓到的包,提取到流的数据内容,完成二进制的匹配
   wireshark中的二进制解析能力(二进制匹配能力)可以做到的程度
       tcp[20:3]=98:97:96 读取tcp中的20个字节处开始的3个字节的数据内容
   wireshark中还有一种跟踪流的方式来查看pcap文件中的连续字节流
   第三种方式就是直接解析pcap文件,将tcp的data部分的分片合并到一个文件
      但是需要注意的是tcp中有一个头部长度的计算问题,也就是一个frame内找到data的偏移(ether_header+ip_header+tcp_header)
      tcp_header本身是20字节,ip_header也是20字节,ether_header 14字节
      实际上tcp_header头部的长度是由它内部的4个bits来决定的,而且是32bits倍数,计算字节时,需要*32/8(也就乘以4)
      通过这种方式来计算的tcp_header,才是真正的头长度
阅读(938) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~