教你从 WireShark 抓包看懂 TCP/IP 协议栈

擅长多媒体网络视频大系统,有多年的多媒体和网络视频系统架构设计、编程经验。

文章正文

你是否对网络协议栈感兴趣呢? 本文将通过实际的抓包,一步一步分析 TCP/IP 协议栈,帮助你读懂数据包,从而理解网络协议栈。

前言

首先介绍一下《TCP/IP 详解》一书,这本书是 TCP/IP 宝典,网络工程师最好是人手一份,本文的许多内容,都是参考的该书。

在这里插入图片描述

对于该宝典,有如下建议。

  • 最好阅读英文原版,因为很多概念、名词将会在代码中出现,阅读原版,更容易将协议和代码对应。
  • 该书分三册,一般阅读第一册——协议即可。
  • 有重点的阅读,概述、Link 层、IP 层、ARP、ICMP、UDP、TCP 这几部分是重点,其他的可以有选择的阅读。

然后我们介绍一下本文所用的工具,Windows 上面一般用 Wireshark,官网即可下载。

在这里插入图片描述

Linux 里面一般都自带有 tcpdump,用 tcpdump 保存的抓包文件,可以用 Wireshark 打开进行分析。

在这里插入图片描述

然后我们熟悉一下 TCP/IP 的分层,请翻开宝典第 10 页:

在这里插入图片描述

我们要发送一些数据(图中的 user data),一般要定义一个应用层协议,比如指出这个数据是什么 type、多长 length 之类,就是 app header、app header 和 user data 一起,用 socket 的 send 函数就能发送出去,然后到了协议栈里面,传输层系统加上 TCP 头(UDP 头),继续往下到了 IP 层,加上 IP 头,继续往下加上 ether 以太网头,然后就真正发出去了。我们要了解的就是这几层是什么关系,这些头信息有什么,它们是如何工作的。

下面开始激动人心的抓包分析之旅,Wireshark 和 tcpdump 的使用方法,可以自行 Baidu,本文不再赘述。这次我们倒过来,从最下面一层看起。

俗话说,眼过千遍不入手过一遍,好记性不如烂笔头,网络协议分析也是如此。读再多的协议文档也不如动手操作一遍,所以下面的抓包之旅,希望有兴趣的朋友,自己也动手试一试。可以找一个阳光明媚的下午,在安静的图书馆或者咖啡厅,泡一壶茶,翻开纸质宝典(注意经典的文献必须纸质书籍,电子档一般很难沉下心阅读),在充满仪式感的环境下,打开笔记本,一边抓包,一边对照阅读宝典,一个下午就能将协议栈熟悉的七七八八。

教你看懂以太网数据包

在这里插入图片描述

以上就是一个以太网数据包,读者可以自己在机器上抓一个任意包,只要是你通过有线网络或者 Wifi 上网,都是以太网数据包,你如果通过 4G 猫上网,才有可能是 PPP 包。

作者正在撰写中...

隐藏内容 支付可见
内容互动
写评论
加载更多
评论文章
¥2.99 购买
× 订阅 Java 精选频道
¥ 元/月
订阅即可免费阅读所有精选内容