TCP/IP协议的复习/回顾

本文最后更新于2017年3月7日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

最近工作上遇到了和TCP/IP协议紧密相关的任务,所以,得再去好好学习学习TCP/IP协议,懂了原理之后才好对后面的发现的问题进行处理(正所谓“谋定而后动”,而不是一上来就开始编码,然后发现问题没理解清楚,之前的编码也就是做了无用功……)

Step.1 确定搜索关键字

tcp/ip protocol
tcp header struct
ip header struct
use python to capture pcap file
use python to capture http trafic
tcp packet reassemble
reassemble tcp packet
reassemble tcp segments
python http packet reassembly
http request/response parse

site:github.com parse http response
site:stackoverflow.com reassemble tcp segment
site:drops.wooyun.org python 网络

Step.2 和协议相关的讲解

IP包的首部结构(这里暂时只讨论常用、简单的IPv4,IPv6暂时不涉及):

ipv4_header

TCP包的首部结构:

tcp_header_struct

Step.3 用Python进行简单的网络编程

这里主要参考从网上找出的一些例子:

  • Google、AOL、Bing、Baidu搜索
  • Stackoverflow上的问题
  • GitHub上的一些代码
代码一:用pcap进行抓包、用dpkt进行解包

代码二:用socket进行处理

代码三:用http_parser进行处理

代码四:用Scapy进行处理

上面代码的最大问题就在于,本身并没有多少处理“TCP segments 重组”的逻辑,或者是依赖的库实现了,或者是根本就没实现,但是,对于一个需要HTTP响应体的需求来说,上面的代码功能全都无法满足,但是,自己要在短时间内实现一个稳定的TCP包重组功能,明显也不现实,所以,这时候我需要寻求新的解决办法。

Step.4 相关的工具/库
Step.5 后面的路

暂定的工具是tcpflow,部分满足要求,细化的功能需要自己在源码的基础上进行修改,但总归有了个模版和目标,否则从头做起的话,恐怕是着不住哦!

 

附录A. 参考链接
Stackoverflow上的类似问题:

几个比较有代表性的说明:

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/1648.html

《TCP/IP协议的复习/回顾》上有8条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注