前言

致歉

  • 我打算将 TCP 的交互流程 通过抓包 和 代码演示下,ACK 和 SYNC 的 握手和回收过程,使用原始套接字进行分析
  • 最近在忙Rust,元旦如果忙完Rust 的学习就搞一下
  • 其实TCP/IP 这个协议栈很复杂,设计到很多的决策, 最基础的就是三次握手,和四次挥手,说白了就是收发标志位的问题,ACK SYN,fllow windows 就是比较中等的,IPV4 是常用的,不常用的是IPV6,在加上IPV6 整个协议栈就很复杂,更别说 IEEE 每年都会对 拥塞控制的决策机制进行探讨,解决未来大流量的问题,(我更喜欢叫决策,不喜欢叫算法,算法这东西是死的,没有设计感), 我的博客只是为了大家好理解,对专业的名词,大家还是得拽起来,因为专业的名词压缩了整个概念,方便交流
  • 内核的网络子系统包含了完整的TCP/IP 协议栈,设计很巧妙,但是每年也在更新修改完善
  • 《算法导论》《算法设计》 这些书得读一读,我3个月前买的,到现在还没动,不看算法的设计思想,要不理解不了设计,只是看了第一章节
  • 《概率论》搞一搞还得, 《线性代数》 也得搞一搞, 《微积分》也得搞一搞, 要不没办法做效率评估
  • 以前也真的是对套接字熟,对协议本身,知道个大概,但是从来没仔细分析过,开一个头,慢慢来(来日方长)
  • 现在的时间过的真的快
  • python3 scapy 可以很好的展示各种传输协议
  • pip install scapy
    或者是 sudo apt install python3-scapy
  • 最好在把pdfdump 的环境补全,你会发现这个工具牛的一批
  • 安装完以后先对一个最简单的ICMP 的数据包进行分析
  • pdfdump 的环境补充

    再加一个环境命令
    sudo apt install texlive

SCAPY 命令行使用方法

scapy 使用手册

这里面有很详细的操作说明和使用方法
首先这个工具的组包方式就是按照7层网络模型一层一层的组包

组包

  • 第一个 是组包的方式 目前只是作为简单的演示进行使用: pkts=Ether(dst=“ff:ff:ff:ff:ff”)/IP(dst=“10.0.0.1”)/TCP() //我们不探究应用层的协议,只研究传输层以以下数据链路层以上的协议,| ICMP ARP (网络层)| UDP TCP SCTP(传输层) |(这个协议和TCP很像,只是知道有这么一个协议)
  • 如果没用过原始套接字,其实我也不会对每层协议这么熟
  • 第一次网络编程接触的就是原始套接字(这个会在linux 系统网络编程里做详细讲解,用法不重要,协议很重要,要理清主次)
  • 数据链路层 使用 L2 替代 网络层使用L3 替代 传输层 使用L4 替代 (L2 L3 L4)
  • 首先这个模型是为了方便传输数据的筛选
  • L2 /Ether 这里面填写的是 mac 地址 (快递要去往的国家)
  • L3 /IP 这里面填的是 IP 地址 (快递可以要送达的更具体地址)
  • L4 /传输选择协议类型和 和我们要填装的数据 (传输协议可以看作是快递公司)(填装的数据是要邮寄的邮件)
  • 以上就是组包的方式(为什么这么理解,主要原因是还得理解 net filter 子系统,快递系统的操作风格)
  • ls(pkts) 查看可以修改的字段

抓包

结果可以保存为 pcap 也可以 生成详细的 pdf 文档, 生成的pcap 可以使用 wireshark() 直接打开使用, 但是生成pdf的速度会非常的慢,建议生成pcap
res=sniff(filter=“icmp and dst=‘10.0.0.1’”) 同时支持bpf 语法 筛选数据包,还有其他功能,可以使用ls()查看
wrpcap(“pkts.pcap”,pkts) // 生成 pcap
wireshark(“pkts.pcap”) // 打开wireshark

收发包

这是一问一答的方式

pcap 解析

所以大家就知道这个工具有多牛皮,非常适合分析数据包

使用pacp 发送模拟数据包

snd_pkts=rdpcap(“path.pcap”)
sr(snd_pkts)

回复环境在发送问题数据,可以在现问题

ARP 协议

ARP协议类型

ICMP 协议

上图这种数据包的结构就非常的直观
scapy 软件的使用 对协议的初级理解非常关键
Ethernet —> 指的的是数据链路层的结构
IP -----> 指的是网络层的IP数据报 ICMP ------> IP层的 协议
RAW 为 ICMP 携带的数据包,即为payload 字段

UDP 协议

TCP 协议

TCP UDP 协议深度解析 (未完待续)相关推荐

  1. http,tcp,udp协议深度分析

    文章目录 前言 一.网络分层原理 1.现实世界中的复杂网络环境 2.OSI七层协议和TCP/IP协议 第一层:物理层 第二层:数据链路层 第三层:网络层 第四层:传输层 第五层:会话层 第六层:表示层 ...

  2. TCP/IP协议深度解析

    TCP如何有序性的 ARP TCP的拥塞控制 TCP的半连接队列与全连接队列 TCP粘包与分包 网线断了, TCP怎么处理 TCP的长连接与短连接 TCP的11个状态迁移 send返回正数, 是不是成 ...

  3. pms解析--未完待续

    pms 即PackageManagerService,有的朋友也喜欢叫他pkms,但是正常的叫法当然是pms啦,如果有较真的同学不要喷我哦 那么现在就开始介绍下这个Framework(java类库)级 ...

  4. pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

    1. SRCNN 1.1. Contribution end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 ). 指出了超分辨方向上传统方法( spar ...

  5. Spring事件机制Event源码解析(未完待续)

    Spring事件机制Event源码解析(未完待续) 监听器: ApplicationEvent事件 ApplicationListener监听器(观察者) ApplicationEventMultic ...

  6. 《智慧城市时空大数据平台建设技术大纲(2019版)》解析——未完,待续

    2月18日,自然资源部办公厅发布关于印发<智慧城市时空大数据平台建设技术大纲(2019版)>我们先来回顾下之前国家对于智慧城市建设的指导性纲要文件: 1.2015年,<智慧城市时空信 ...

  7. 深度学习(三十四)对抗自编码网络-未完待续

    占坑,未完待续-- 上面是网络结构.上半部分是一个自编码结构,给定输入数据X,我们经过编码层,可以得到编码层的数据分布q(z|x)的一个采样潜变量编码z.在以前我们的自编码分布q(z|x)是固定的,现 ...

  8. 《图解 HTTP》读书笔记(未完待续)

    ARP 协议(Address Resolution Protocol)一种以解析地址的协议,根据通信双方的 IP 地址就可以查出对应的 MAC 地址. MAC( Media Access Contro ...

  9. 最全的TCP/UDP 协议知识点整理

    关于计算机网络的基础知识,我前面写的两篇文章是入门文章,可以帮你构建一个计算机网络的基础架构,有了这个基础架构,后面的学习会很简单.下面是两篇文章的连接~~ 计算机网络体系结构与参考模型(1) 计算机 ...

最新文章

  1. 算法(第四版)C# 习题题解——1.3
  2. RabbitMQ(一):RabbitMQ快速入门
  3. Spark Streaming(一)概述
  4. “阿里云 Cloud AIoT Native” 等你一“名”惊人
  5. Dubbo学习总结(4)——Dubbo基于Zookeeper实现分布式实例
  6. 用nodejs向163邮箱, gmail邮箱, qq邮箱发邮件, nodemailer使用详解
  7. selenium常见面试题
  8. 【二分图】【最大匹配】【匈牙利算法】CODEVS 2776 寻找代表元
  9. 6位大师浅谈未来三年大数据的发展
  10. Python ord(),chr()函数
  11. Java键盘交互设计输入法,儿童键盘输入交互方式探讨:为熊孩子设计的输入法...
  12. 关于idea链接oracle数据库出现IO 错误: Got minus one from a read call, connect lapse 1 ms., Authen
  13. 那些年的 Hello World (HTML)
  14. 【艾琪出品】《计算机应用基础》【试题汇总4】
  15. Ubuntu 15.10 x64 安装 Android SDK
  16. idea使用中项目出现library root
  17. Socket的超时时间
  18. 关于5G通信技术,你了解多少?
  19. 八月六日个人训练记录
  20. 软件维护人员及运维人员岗位职责

热门文章

  1. 31、如何安装第三方模块?以及用过哪些第三方模块?
  2. solr与mysql数据同步的方案
  3. 20145223《信息安全系统设计基础》 GDB调试汇编堆栈过程分析
  4. SharePoint 2013 中如何使用Silverlight
  5. EXT GridPanel
  6. 售前工程师的成长(五)---一个老员工的经验之谈
  7. DropDownList--下拉菜单
  8. SQL Story摘录(七)————触摸NULL值
  9. centos7安装mysql缺失依赖_CentOS7安装mysql5.7不成功,解决依赖包之后还是无法安装成功...
  10. 浅析Java中的final关键字