记不住三次握手的过程?那跟我一块来抓个包吧!

[原创文章:www.ii77.com]

前段时间在忙一个机器人通信的项目,其中用到一个重要的协议簇就是 TCP/IP (Transmission Control Protocol/Internet Protocol,传输控制协议/国际互联协议)。

[好文分享:www.ii77.com]


我一直觉得 TCP/IP 协议设计的真的是太巧妙了,可以说是这个星球上最伟大的通信协议。小到微信的即时通讯,大到航空航天等自动控制工业领域,它的身影无处不在。正是有了 TCP/IP,我们发送的每一条互联网信息才能安全无损地到达对方。


比如,你有没有想过你身在北京,打开微信给身在上海的朋友发个祝福短语这期间你的信息究竟经历了什么?为什么能准确无误地到达?


一个 TCP/IP 协议,半部计算机网络史,所以我觉得每一位计算机从业者或者计算机相关从业者都应该花点时间研究一下 TCP/IP 协议。


大道至简,今天我们使用一个抓包工具 Wireshark 来抓个数据包,然后对其抽丝剥茧,逐步来揭开 TCP/IP 的神秘面纱吧!



1997 年 12 月,美国总统布什为 TCP/IP 之父罗伯特·卡恩(中间)颁发的美国国家技术勋章。



因特网起因于美苏争霸期间美国国防部准备研究的一种分散的指挥系统,由无数节点构成。当若干节点被摧毁后,仍然能够通过其他节点互相通信。它是一种拓扑结构,你从北京发送的信息到上海可以走多种路径,TCP/IP的神奇之处就在于它能够让你的信息准确无误地到达。


何为「协议」(Protocol)?


「协」的本意是指多人合作,而后面的那个「议」在古汉语中的意思是一种文体,那么合起来就是多人合作共同遵守的一种文体,后来引申为双方共同约定遵守的一种规则


生活中的协议有很多,比如你刚毕业的时候签订的三方协议,还有租房的时候有租赁协议。再说远一点,秦始皇统一中国后为了方便全国的交流,制定了「车同轨,书同文」的规则,这应该是中国历史上最早的国家标准了吧。这也是一种协议,还有,你看谍战片,双方传递信息的时候都有口号,这都是事先约定好的,都是一种协议,双方必须遵守。


有了协议,就大大方便了我们的交流,比如我们在打电话的时候一般都会说声“喂,你好”。等对方确认应答后才说明双方确实都通了,然后开始正式通话。而对于 TCP 来说也是这样的,TCP 在建立连接的过程中要进行三次握手,双方完全确认无误后才会互相通信。


三次握手示意图


带着这张图片的信息,让我们展开抓包之旅吧!


抓包前的准备工作


第一步,首先我们下载一个抓包软件 Wireshark。这个软件百度一下,网上很多,直接下载即可;


第二步,然后我们在自己的电脑上 ping 一下百度的域名:www.baidu.com,这样就能知道百度服务器的 IP 地址。当然,百度在全国肯定不止一台服务器,所以每个人 ping出的地址可能不一样,比如我 ping 出的是 180.101.49.12。



第三步,我们打开抓包软件,在选项里面选择你的网络接口,然后点击开始, Wireshark 就开始帮你抓包了;



第四步,我们打开浏览器,输入刚才 ping 到的百度服务器的 IP 地址,输入地址栏按回车,这样就打开百度首页了。其实,我们平常输入的网址也是经过 DNS 服务器解析后转化成 IP 进行访问的。


没错,我们就是通过访问一个百度网址来抓取在键入回车后双方的报文信息的。



第五步,我们在抓包软件搜索框内输入 ip.addr == 180.101.49.12 and tcp 指令来帮助我们过滤掉多余的信息。



好了,可见我们抓取了很多条信息,但是我们只需要前三条即可。因为前三条就是双方建立连接(三次握手)过程中互相传递的报文信息。


在分析这三条报文前,我们回忆一下 TCP/IP 每层网络模型中的报文结构:


每层模型对自己的数据加包头后发给下一层



这是微信发送消息的模型(所有 TCP/IP 协议都是这样)。当然微信肯定不是端对端直接传送到另一个手机,而是先传送到腾讯服务器,再转推给对方,不过原理是一样的。


可见每层都是胶囊化的数据,经过加工后(一般都是加上报文头)然后传送给下一层,最终由物理层的传送介质(比如光纤)传送给对方电脑。对方收到后再反过来解析,剥开每一层的报头,最终露出数据部分,这才是我们真实要的数据。


所以,我们抓到的包都是在最下面的以太网帧,包含帧头、帧尾、IP 头部、TCP 头部的数据包,所以我们必须先从最后一层分析。


★ 数据链路层


在数据链路层,我们收到的以太网帧头部结构如下(下面这张图片为了描述方便,宽度我与位长度我没有按照比例来画):



简要解释一下几个字段的含义:


  • 前导同步码提醒接收系统即将有帧到来,七次写入 10101010 ;

  • 帧开始分界符表示帧的发送从下一个数据报正式开始,二进制数序列为 10101011 ;

  • 帧的长度 / 类型内容为帧长度(单位为字节)或者交给上层协议的信息。具体是哪种内容,取决于以太网的种类。


我们先来看第一次握手的数据。



  • 第一个红框 b0 95 8e 0b 15 38 代表目标 MAC 地址,也就是百度服务器的网卡地址;

  • 第二个红框 10 63 c8 ff ff ff 代表源 MAC 地址,也就是我自己电脑的网卡地址。后三个字节 ff ff ff 是我虚拟的,包括上面图片中我也打了马赛克。为什么?因为我怕黑客知道我的网卡地址后攻击我的电脑;

  • 第三个红框 08 00 代表的是 IPv4 协议。


等等,你可能会问,帧头的前导同步码与帧开始分界符怎么没有显示呢?


这是因为在物理层上网卡要先去掉前导同步码和帧开始定界符,然后对帧进行 CRC 检验。如果帧校验和出错,就丢弃此帧。如果校验和正确,就判断帧的目的硬件地址是否符合自己的接收条件(目的地址是自己的物理硬件地址、广播地址、可接收的多播硬件地址等)。如果符合,就将帧交“设备驱动程序”做进一步处理。这时我们的抓包软件才能抓到数据。


因此,抓包软件抓到的是去掉前导同步码、帧开始分界符、FCS 之外的数据。


★ 网络层



我们先来看网络层,也就是 IP 层的头部结构:



先来大致解释一下每个字段的含义:


版本(version)


如果是 IPv4 则填入 4 ,如果是 IPv6(当然报文头结构跟 IPv4 结构不一样)则填入 6。


头长度(Header Length)


IP 报头的大小 ,头部长度是指 IP 报头的总长度。因为有 Option 可选部分,通常为 20字节,范围在20~60字节。


注意:该字段单位为 32 位字(1 个 32 位字为 4 字节)。因此当 IP 报文头长度为1111(15) 时是最大 60(15*4) 字节。一定要注意,这个字段的单位比较特殊,容易弄错。


服务类型(Differentiated Services Field)


显示发送信息时的优先情况。


数据包总长度(Total Length)


IP 报头与数据的整体大小,表示此 IP 报头和数据的之和的总长度。总长度 16 位,一个数据最大长度 65535 字节;链路只允许 1500 字节,超过的话需要进行 MTU 分片。一个数据包由 IP 报头和数据两部分组成,而 IP 报头为 20~60 字节,所以不会有一个数据包里纯数据超过 1480 字节。


标识符(Identification)


将分割后的 IP 数据包复原时使用的值,与标记字段和偏移字段用于 IP 报文分片。
原始报文大小超过 MTU(<1480B)就必须将原始数据进行分片,每个分片小于 MTU。


对同一原始文件被分片的报文打上相同的标记,也用来判断流量是否来于同一主机。IP 软件在存储器中维持一个计数器没生产一个数据包,计数器就加 1,并赋予标识字段。数据报文进行分片处理后每个分片的标识值都与原数据包的标识值相同,接收端具有同标识值的分片就能最终正确重组为原数据。


旗标(Flags)


关于数据包分割的信息:


  • 第一位没有被使用;

  • 第二位不分片(DF),当DF位置为1时表示路由器不能对报文进行分片处理;
    第三位多分片(MF),当路由器对报文进行分片时,除了最后一个分片的 MF 位设置为 0 外,其他所有分片 MF 位置为 1,以便接收者直到收到 MF 位为 0 的分片为止。



例如,如果数据包被分成两段,那么第一个 flags 就是 101,第二个 flags 就是 100.


分片偏移(Fragmentation offset)


被分割的数据的顺序,标识分片在分组中的位置。


生存时间(Time to live, TTL)


允许经过最大的路由器数量,即数据包能传多少跳。不同操作系统 TTL 的默认最大值会有所不同,目的是防止路由成环时 IP 数据被无限转发。每经过一个路由器 TTL 值减 1、TTL 为 0 时丢弃该分组。


协议(Protocol)


上一级协议,标识数据携带的数据是何种协议,标识传输层地址或协议号。如 1 代表ICMP,6 代表 TCP,17 代表 UDP.


包头校验和(Header checksum)


确认 IP 包头是否损坏的数值,用于校验检查 IP 报头是否有出入。


选项(Option)


可选字段(0~40B)Option 字段很少使用,用于控制,转发要求,测试等。



网络层的信息比较多,我们只捡几个重要的信息来说一下:


第二行的 c0 a8 00 65 转化成十进制就是 192.168.0.101 这是我电脑的 IP。


注意这里是局域网 IP , 后面的 b4 65 31 0c 转化成十进制就是 180.101.49.12,是目标 IP,也就是百度服务器的 IP。


★ 传输层



传输层的功能是保证数据可靠地从发送结点发送到目标结点,我们看一下它的头部结构,已经能够看到携带的握手信息了。




序列号(Sequence Number)


表示在所有的数据中,此数据是第几个。


标签:跟我 三次

热门文章

  1. 隆华新材:年产8万吨端氨基聚醚项目一期试生产2024-05-08
  2. 北部湾港:前4月货物吞吐量9790.81万吨,同比增长4.14%2024-05-08
  3. 航宇微:颜军辞去董事长等职务,将担任公司名誉董事长、首席科学家2024-05-08
  4. 靠边停车30公分技巧视频(靠边停车30公分视频讲解)2024-05-08
  5. 什么叫辐照电缆(什么是辐照电线)2024-05-08
  6. 合成生物概念震荡回升,鲁抗医药触及涨停2024-05-08
  7. 大发地产清盘呈请聆讯押后至6月5日2024-05-08
  8. 小米集团港股涨幅扩大至7%2024-05-08
  9. 深证成指跌幅扩大至1%2024-05-08
  10. 5月8日截至11时9分,沪深京三市成交额突破5000亿元2024-05-08
  11. 美信科技:一体成型电感产线4月已建立,目前还在设备调试2024-05-08
  12. A股午评:创业板指跌1.23%,煤炭、细胞免疫治疗概念股领涨,AI语料、房地产板块下挫2024-05-08
  13. 5月8日截至11时30分,亚太主要股指普跌2024-05-08
  14. 午间涨跌停股分析:48只涨停股,45只跌停股,蔚蓝生物(合成生物)6连板2024-05-08
  15. 港股午评:恒指跌0.37%,恒生科技指数跌0.63%,汽车、内房股走低,小米集团涨超6%2024-05-08
  16. 电商设计是什么岗位(电商设计是什么岗位工作)2024-05-08
  17. 5月8日截至10时6分,沪深两市成交额突破3000亿元2024-05-08
  18. 盘中连板池:蔚蓝生物(合成生物)6连板,百川股份(光刻胶)4连板2024-05-08
  19. 体育产业板块拉升,金陵体育涨近11%2024-05-08
  20. 5月8日截至10时20分,北向资金净卖出超30亿元2024-05-08
自媒体 微信号:ii77 扫描二维码关注公众号
爱八卦,爱爆料。

小编推荐

  1. 1 新奥产业数智化成果亮相2022年廊洽会线上展

    6月26日,新奥旗下的好气网、泛能网两大平台及安全数智化、物联感知、智能健检等数智化成果亮相2022年中国·廊坊国际经济贸易洽谈会(以下简称“廊洽会”)线上展厅。廊洽会是由

  2. 2 全国首例!判了!

    明明只是进直播间看了眼带货,结果其他销售同类产品的商家却精准找上了门,此时请注意,你的信息可能已被非法爬取!近日,江苏省无锡市梁溪区人民法院审结了一起提供侵入计算

  3. 3 17次云巨头故障事件梳理,云服务还可靠吗?

    来源 | 数字化讲习所作者 | 程欣雨 编审 | 李昕导语本文梳理了国内外8家云巨头公司共17次故障事件,从中可以窥得云服务在发展过程中故障主要发生的阶段以及不同阶段故障发生的频

  4. 4 起底 To B 销售乱象:崩溃的企业家、勒索和 SaaS 堪忧的未来

    | 科 | 技 | 杂 | 谈 |中国通信行业第一自媒体本文作者:黎诗韵 卫诗婕本文编辑:卫诗婕本文来源:极客公园(geekpark)杂谈投稿邮箱:631255063@qq.com在国内高呼「SaaS

  5. 5 本周大新闻|Khronos组建元宇宙标准联盟,传腾讯正式设立XR部门

    hi188 | 编辑本周大新闻,AR方面,Khronos牵头成立元宇宙标准联盟;ARKit应用超1.4万个;爱普生发布BT-45C AR眼镜;宜家虚拟家装工具Kreativ;沃尔玛App加入AR预览功

  6. 6 沸腾!首个元宇宙国际标准联盟成立!苹果缺席,华为阿里在列

    “元宇宙标准论坛”来了。首个元宇宙国际标准联盟成立 华为阿里在列首个元宇宙国际标准联盟近期正式宣告成立,该联盟被命名为“元宇宙标准论坛”,由全球数十家科技行业巨头组

  7. 7 揭秘6G时代网络架构!六大设计理念,三体四层五面一文看懂[附下载]|智东西内参

    6G网络架构长啥样?编辑 |  智东西内参网络架构的发展是移动通信网络代际发展的核心标志之一,是每一代通信网络的骨骼和中枢,是承载移动通信系统设计目标的基础。网络架构设计

  8. 8 “入侵火狐只花了8秒”

    关注后回复 “进群” ,拉你进程序员交流群整理 | 章雨铭       责编 | 屠敏出品 | CSDN(ID:CSDNnews)很多人觉得电视剧里黑客在数秒内破解密码、侵入系统虽然很厉害,但是真实性

  9. 9 数字有为,易步到位|华为携“5极”明星产品加速布局商业市场

    在刚刚结束的“华为伙伴暨开发者大会2022”上,“商业市场”成为大会核心关键词之一。华为轮值董事长胡厚崑强调,面向中小企业,要全面支持伙伴,共同发展商业市场。同时提出,

  10. 10 工程师利用拓扑优化来克服混凝土3D打印技术的“限制”

    皇家墨尔本理工大学和河北工业大学的工程师提出了一种优化混凝土3D打印结构拓扑的新方法。据称,该团队的过程是对双向进化结构优化或“BESO”的一种新尝试,可以创建独特的自支

本文内容来自网友供稿,如有信息侵犯了您的权益,请联系反馈核实

Copyright 2024.爱妻自媒体,让大家了解更多图文资讯!