当前位置: 首页 > news >正文

用 Wireshark 图解:TCP 三次握手

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢!

tcp00

“snow warn throughout the winter”

一、什么是 Wireshark ?
简单地说,Wireshark 是抓包工具。官网说,“Wireshark 是一个网络包分析工具。 网络数据包分析仪将尝试捕获网络数据包并试图尽可能详尽显示该数据包。”

推荐一本书《Wireshark 网络分析就这么简单》,Wireshark 工具下载地址 https://www.wireshark.org/download.html。

Wireshark 不单单能抓包,主要的 Features 是对数据包进行各种的分析。下载打开界面非常简单直观:

tcp01

最上面是 Packet List 窗口,它列出了所有网络包。

在 Packet List 中选定的网络包会详细地显示在中间的 Packet Details 窗口中。

最底下是 Packet Bytes Details 窗口(16 进制数据),我们一般不会用到它。

 

二、我们抓什么包呢?如题 TCP
TCP 一脸懵逼。记得上次在 《图解Http协议》得知,HTTP 是一个客户端和服务器端请求和响应的标准TCP。其实建立在 TCP 之上的。那我们就抓 HTTP,这很简单。

 

三、实操 Wireshark

选择 Capture – Options,选择当前网络,点击 Start 。如图:

tcp02

浏览器打开我的博客 www.bysocket.com ,然后在 Wireshark 中的过滤器输入博客 IP 过滤:ip.addr == 106.14.40.18

选择第一行,如第一张图,简单介绍下 Packet Details 窗口参数详情:

Frame – 物理层
Ethernet – 数据链路层
Internet Protocol Version – 网络层
Transmission Control Protocol – 传输层

大家知道 网络层次划分为 标准的OSI七层模型,还有 TCP/IP四层协议 以及 TCP/IP五层协议。如图:

705728-20160424234827195-1493107425.png

其中,Transmission Control Protocol – 传输层是我们最为关心的。如图已经展开了:

tcp04

具体我们先学习 TCP 报文段格式:

tcp05

那么第二个红框,由上至下,一一大家可以对应下,重点的是:
Sequence number – 序号
Acknowledgment number – 确认号
Flags – 标志位
— Acknowledgment 确认位
— Push 急迫位
— Reset 重置位
— Syn 同步位
— Fin 终止位

a. 第一次握手标志位
localhost Seq=0 -> 博客地址
从标志位看出,同步位有值,在做请求(SYN):Syn 同步位为1
tcp06

 

b. 第二次握手标志位
博客地址 Seq=0 Ack=1 -> localhost
从标志位看出,确认位、同步位有值,在做应答(SYN+ACK):Syn 同步位为 1 、Acknowledgment 确认位为 1
tcp07

c. 第三次握手标志位
localhost Seq=1 Ack=1 -> 博客地址 (注: Seq=Seq+1)
从标志位看出,只有确认位有值,在做再次确认(SYN):Acknowledgment 确认位为 1
tcp08
综上所述,一个完整的三次握手就是:请求(SYN) — 应答(SYN+ACK) — 再次确认(SYN)

tcp09

如以上文章或链接对你有帮助的话,别忘了在文章结尾处评论哈~ 你也可以点击页面右边“分享”悬浮按钮哦,让更多的人阅读这篇文章。

转载于:https://my.oschina.net/jeffli1993/blog/792517

相关文章:

  • linux第一面
  • 【转】Popclip的JSON格式化扩展
  • datatables使用
  • 所有的软弱,都是昂贵的
  • SQL查询优化——数据结构设计
  • $(function(){})与(function($){....})(jQuery)的区别
  • zabbix监控多tomcat实例
  • 小小小游戏
  • ApacheHttpServer出现启动报错:the requested operation has failed解决办法
  • Inodes 清理
  • vmware虚拟化无法迁移虚拟机
  • Docker for windows10 配置阿里云镜像
  • Hadoop集群搭建步骤
  • 网站开发流程以及HTML5简介(九)
  • windows 下的tcping 小插件
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Angular2开发踩坑系列-生产环境编译
  • Js基础——数据类型之Null和Undefined
  • Nodejs和JavaWeb协助开发
  • Promise面试题2实现异步串行执行
  • spring-boot List转Page
  • Tornado学习笔记(1)
  • Vim 折腾记
  • Vue2.x学习三:事件处理生命周期钩子
  • 蓝海存储开关机注意事项总结
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 思否第一天
  • 用简单代码看卷积组块发展
  • 再次简单明了总结flex布局,一看就懂...
  • 在weex里面使用chart图表
  • 正则与JS中的正则
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 国内开源镜像站点
  • #图像处理
  • #微信小程序:微信小程序常见的配置传旨
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (三)docker:Dockerfile构建容器运行jar包
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .a文件和.so文件
  • .form文件_一篇文章学会文件上传
  • .NET CF命令行调试器MDbg入门(一)
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net 后台导出excel ,word
  • .Net(C#)自定义WinForm控件之小结篇
  • .Net的DataSet直接与SQL2005交互
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器
  • [2010-8-30]