我是一个HTTP数据包,不知谁创建了我,把我丢到这个房间。

突然,来了一个大汉,我吓得缩到角落。

“该启程了,站起来”。

“去哪里啊?”

我弱弱的问。

“还能去哪里,你是一个数据包,当然要出远门,完成你的使命啊,别啰嗦,我要先把你复制到内核空间,一会要发出去,让我来看下你的内容”。

我不敢多言,乖乖的站好,一眨眼的功夫,我来到了另一个房间。

“这是哪里,我怎么到这里来了?”我有点好奇。

“这里是内核地址空间,刚才你在用户态地址空间,所有的数据包都得从这里出发,你也不例外”。

看着这片陌生的环境,我也不知道他说的内核空间是什么意思,这里有好多房间,还有好多跟他一样的大汉在工作,好多数据包都在这里,进进出出,好不热闹。

<————————————————————————————————>

出发前的俄罗斯套娃

 

“等着,我去拿点东西”,大汉去了一座大厦,我抬头一看,上面写着tcpip.sys。

这时,旁边另外一个数据包走了过来。

“唉,小子,刚出发呢。”

“你是谁?”

“我也是一个HTTP数据包,不过我是一个响应包,刚刚从遥远的Linux帝国过来这里,我马上就完成我的使命了,这一路给我累得”,这个数据包叹口气回答。

“很远吗,这么辛苦啊”,我开始有点担心我的旅程起来。

“这不好说,我不知道你去哪,接我的人来了,再见”。

不一会儿,大汉提着一个箱子走了出来,箱子正面写了三个大大的字母:TCP。

“这是传输层的箱子,快进去”,大汉命令的口吻。

“你要我钻进这个箱子啊?”我不太相信。

“对,没错,麻利的”。

“这箱子上面写的数字60059和80是什么意思?”我注意到箱子背面也写了很多东西。

“60059是创建你的人用的端口号码,80是后面接待你的人的端口号码”。

“那这第二排的0x2C877F30和0xBD62DFB3又是什么意思呢?”

“这是创建你的人使用的序列号和应答对方的确认号,你问题咋这么多”,大汉开始不耐烦了。

“还有这个···”“行啦,快进去,赶时间”,大汉打断了我的提问,我乖乖的钻进了这个叫TCP的箱子。

“是不是可以出发了?”我问大汉。

“还早着呢,这才刚开始呢”,大汉笑着说。

“再等一下,我还要进去一趟”,说完大汉又进了这个tcpip.sys大厦。

没过多久,大汉又出来了,手里又拎了一个更大的箱子,上面也写着两个大大的字母:IP。

这一次,大汉二话不说,直接把我连同TCP箱子一起丢进了这个IP箱子。

“怎么还要套一层啊”,我紧张的问他。“你不懂,这个网络是分层的,刚才那个箱子是......唉,我跟你说这些干啥”,大汉提着我离开了tcpip.sys大厦。

我们来到了一个码头,这里数据包来来往往特别繁华,大汉把我带到一个大大的仓库,里面有很多数据包,对我说:“乖乖待在这里排队,我就先走了,一会儿会有人来把你发出去的。”,大汉拍拍我的肩膀就离开了。

“咦,你也是去222.196.242.24的,我也是呢,真巧!”

前面一个数据包跟我打招呼。

我愣了一下:“你怎知我要去哪里?”

“喏,你这外面的箱子不是写了吗,你看我的,跟你的一样,这里写的就是咱们要去的地方的IP地址”,她特别激动。

<————————————————————————————————>

第一站:网关

 

很快,来了一个小胖子叫到我了,我小心翼翼的走了过去。

“你这是要去公网啊,来,先去网关那里吧”,说完,小胖又给我套了一个箱子,前面写着:Ethernet II,背面写了一串:FE-D8-65-C8-2B-D7;86-D5-32-01-0E-3B。

“小哥,这个箱子又是干嘛的,这上面写的又是啥呢?”

“这个箱子是把你送到网关那里去的,FE-D8-65-C8-2B-D7就是网关的网卡地址,后面那个是咱这里的地址”,小胖说话倒是很客气。

“坐好了,要出发了哦”,小胖一顿操作,我好像坐上火箭,离开了这片土地。

途中见到了好多好多的数据包,有出发的,也有过来的,像穿越时空隧道一般梦幻。还没来得及欣赏,就被一个黑脸的抓了下来,看来我是到小胖说的网关了。

黑脸人一脸冷漠,问他话也不答,只顾做自己的事情。几下功夫,便将我最外面的箱子拆掉,然后拿着一个手册查了下我的目的IP地址。

“好了,跟我来”,黑脸的把我带到另外一个码头,一顿操作把我给发了出去。

<————————————————————————————————>

穿越比特宇宙

 

这里的数据包比刚才那里更多,更热闹。一路上,不时有人把我抓下去,然后又从一个新的码头发出去,把我弄的晕头转向的。

过了好一会儿,到了一个地方,又一个胖子接待了我。

“大哥,我这是到终点了吗?”

“快了,你已经到目的网络网关了,下一站就到了”。

“来的路上那些人把我抓下去又发出来是干啥呢?”

“这叫网络路由,他们那些人接力才把你送到这里的”。说完,这胖子又给我套上了一个Ethernet II的箱子发了出去,我知道,这是要送我去最终目的地了。

不知道是什么web服务器会来接待我呢,即将完成使命的我开始兴奋起来。

<————————————————————————————————>

出师未捷身先死

 

很快,我又被人抓了下去。

“是不是我到站了啊,终于要完成任务了”,我伸伸懒腰。

那人却不说话,只是将我的Ethernet箱子拆去,放到了一个仓库。

没多久,来了一个大叔,把我带了出去。

“咱们是不是要去tcpip.sys大厦,把我的箱子都拆掉啊”,我小声的问。

“这里是Linux帝国,没有你说的大厦。不过你倒是猜对了,就是去拆箱子”。

很快,这位大叔就拆掉了我的IP箱子和TCP箱子,把我放到一个房间。

“在这等着,一会儿有人会来找你”。

“是不是web服务器的人来找我?”我激动的问。

大叔也没有理我,转身离开。

大叔刚走,就有一挎刀黑衣人过来,我吓了一跳,web服务器的人怎么这么凶,还带刀。

黑衣人用了一台仪器对我一通扫描,突然仪器红色警报灯响起,我紧张到了极点。

“小子,你的请求表单字段里面有SQL语句,你是来干什么的?”,黑衣人恶狠狠的质问我。

“我不知道谁创建的我啊,我只是个HTTP数据包,你们这里不是web服务器吗,我是不是走错了”,我吓得脸色惨白。

“你没有走错,是我们截下的你,这里不是web服务器,这里是WAF”,黑衣人得意的说到。

“WAF是什么,那我肯定走错了,快放我离开”,我想逃离这里。

然而,黑衣人大喝一声:“站住,你这个邪恶的数据包,伏诛吧!”。

我回头一看,只见黑衣人举起大刀······

未完待续·······

 

彩蛋

nginx公司的人正在紧张忙碌着,黑衣人突然闯了进来。“

叫你们管事儿的过来,发现针对一起80端口的SQL注入攻击,我们需要调查取证”

欲知后事如何,请关注后续精彩......

 

一个HTTP数据包的奇幻之旅的更多相关文章

  1. 一个DNS数据包的惊险之旅

    踏上旅程 “小子,快去查一下www.paypal.com的IP地址,我急用,晚了我弄你!”,暴躁老哥一把关上了门,留我一个DNS数据包在冷冰冰的房间. 过了一会儿,一位大叔打开了门,带着我来到了一座叫 ...

  2. 我是一个Dubbo数据包...

    hello,大家好呀,我是小楼! 今天给大家带来一篇关于Dubbo IO交互的文章,本文是一位同事写的文章,用有趣的文字把枯燥的知识点写出来,通俗易懂,非常有意思,所以迫不及待找作者授权然后分享给大家 ...

  3. 基于Libpcap实现一个网络数据包嗅探器

    基本功能就是来捕获所有流经本网卡的数据包. 实现流程: 查找网络设备 打开网络设备 查找设备信息 输入过滤规则 编译输入规则 设置输入规则 开始捕获数据包 调用数据包分析模块 输出MAC,IP,协议以 ...

  4. Windows下底层数据包发送实战

    1.简介 所谓“底层数据包”指的是在“运行”于数据链路层的数据包,简单的说就是“以太网帧”,而我们常用的Socket只能发送“运行”在传输层的TCP.UDP等包,这些传输层数据包已经能满足绝大部分需求 ...

  5. IM通信协议逆向分析、Wireshark自定义数据包格式解析插件编程学习

    相关学习资料 http://hi.baidu.com/hucyuansheng/item/bf2bfddefd1ee70ad68ed04d http://en.wikipedia.org/wiki/I ...

  6. 对于数据包的截取,使用linux中的netfilter钩子函数

    http://blog.csdn.net/wswifth/article/details/5115358 在师哥的代码(packet.c)中使用的是Linux2.4内核中的一个子系统:netfilte ...

  7. c# 生成json数据包

    json数据类型,归根到底就是一个字符串,管他里面什么格式,它就是一个字符串来的! 看一个json数据包: { "touser":"OPENID", " ...

  8. 可视化数据包分析工具-CapAnalysis

    可视化数据包分析工具-CapAnalysis 我们知道,Xplico是一个从pcap文件中解析出IP流量数据的工具,本文介绍又一款实用工具-CapAnalysis(可视化数据包分析工具),将比Xpli ...

  9. IP报文解析及基于IP 数据包的洪水攻击

    版本(4bit) 报头长度(4bit) 优先级和服务类型(8bit) 总长度(16bit) 标识(16bit) 标志(3bit) 分段偏移(13bit) 存活期(8bit) 协议(8bit) 报头校验 ...

随机推荐

  1. MonoBehaviour单例的另外一种省事的写法

    using UnityEngine; public class CommSystem: SingletonGeneric<CommSystem> { public static strin ...

  2. 线程同步器CountDownLatch

    Java程序有的时候在主线程中会创建多个线程去执行任务,然后在主线程执行完毕之前,把所有线程的任务进行汇总,以前可以用线程的join方法,但是这个方法不够灵活,我们可以使用CountDownLatch ...

  3. Vue+ElementUI重置表单数据至初始值

    https://blog.csdn.net/linjingke32/article/details/99446403

  4. python多进程编程学习笔记

    摘自[https://www.cnblogs.com/chenhuabin/p/10070996.html] by 奥辰 赞

  5. MySQL学习(六)change-buffer

    文章部分总结描述来自参考文章,属于半原创. 概述     文章将会介绍 change buffer 相关的知识点 查看 MySQL InnoDB 状态的命令 SHOW ENGINE INNODB ST ...

  6. Android Socket 通信

    Android socket 通信 安卓编写Socket客户端,实现连接Socket服务端通信. 创建Socket连接并获取服务端数据 先创建几个全局变量吧 private BufferedWrite ...

  7. 解决Macbook Pro蓝牙不可用问题

    谷歌搜索了下,在威锋网看到一个帖子,需要关机重置电源管理单元和系统NVRAM恢复出厂设置,具体操作如下:1.关机2.同时按下shift+control+option+power,保持5秒左右3.先按下 ...

  8. 转载:DRC

    https://cn.mathworks.com/help/audio/ug/dynamic-range-control.html?requestedDomain=cn.mathworks.com h ...

  9. vue基础api

    vue比jq好处 1jq 频繁操作dom 增加了性能消耗 vue 模拟dom 从内存中拿 2jq 数据没有统一管理 vue 统一管理数据 3vue 组件开发可以提取出公共的html或js   mv*好 ...

  10. 找不到方法:'System.Net.Http.HttpRequestMessage System.Web.Http.Controllers.HttpActionContext.get_Request()'

    出现这种情况一般是引用了.net standard 库解决方案1:在web.config 文件中增加如下节点 <dependentAssembly> <assemblyIdentit ...