TCP UDP 协议深度解析 (未完待续)
前言
致歉
- 我打算将 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 协议深度解析 (未完待续)相关推荐
- http,tcp,udp协议深度分析
文章目录 前言 一.网络分层原理 1.现实世界中的复杂网络环境 2.OSI七层协议和TCP/IP协议 第一层:物理层 第二层:数据链路层 第三层:网络层 第四层:传输层 第五层:会话层 第六层:表示层 ...
- TCP/IP协议深度解析
TCP如何有序性的 ARP TCP的拥塞控制 TCP的半连接队列与全连接队列 TCP粘包与分包 网线断了, TCP怎么处理 TCP的长连接与短连接 TCP的11个状态迁移 send返回正数, 是不是成 ...
- pms解析--未完待续
pms 即PackageManagerService,有的朋友也喜欢叫他pkms,但是正常的叫法当然是pms啦,如果有较真的同学不要喷我哦 那么现在就开始介绍下这个Framework(java类库)级 ...
- pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)
1. SRCNN 1.1. Contribution end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 ). 指出了超分辨方向上传统方法( spar ...
- Spring事件机制Event源码解析(未完待续)
Spring事件机制Event源码解析(未完待续) 监听器: ApplicationEvent事件 ApplicationListener监听器(观察者) ApplicationEventMultic ...
- 《智慧城市时空大数据平台建设技术大纲(2019版)》解析——未完,待续
2月18日,自然资源部办公厅发布关于印发<智慧城市时空大数据平台建设技术大纲(2019版)>我们先来回顾下之前国家对于智慧城市建设的指导性纲要文件: 1.2015年,<智慧城市时空信 ...
- 深度学习(三十四)对抗自编码网络-未完待续
占坑,未完待续-- 上面是网络结构.上半部分是一个自编码结构,给定输入数据X,我们经过编码层,可以得到编码层的数据分布q(z|x)的一个采样潜变量编码z.在以前我们的自编码分布q(z|x)是固定的,现 ...
- 《图解 HTTP》读书笔记(未完待续)
ARP 协议(Address Resolution Protocol)一种以解析地址的协议,根据通信双方的 IP 地址就可以查出对应的 MAC 地址. MAC( Media Access Contro ...
- 最全的TCP/UDP 协议知识点整理
关于计算机网络的基础知识,我前面写的两篇文章是入门文章,可以帮你构建一个计算机网络的基础架构,有了这个基础架构,后面的学习会很简单.下面是两篇文章的连接~~ 计算机网络体系结构与参考模型(1) 计算机 ...
最新文章
- 算法(第四版)C# 习题题解——1.3
- RabbitMQ(一):RabbitMQ快速入门
- Spark Streaming(一)概述
- “阿里云 Cloud AIoT Native” 等你一“名”惊人
- Dubbo学习总结(4)——Dubbo基于Zookeeper实现分布式实例
- 用nodejs向163邮箱, gmail邮箱, qq邮箱发邮件, nodemailer使用详解
- selenium常见面试题
- 【二分图】【最大匹配】【匈牙利算法】CODEVS 2776 寻找代表元
- 6位大师浅谈未来三年大数据的发展
- Python ord(),chr()函数
- Java键盘交互设计输入法,儿童键盘输入交互方式探讨:为熊孩子设计的输入法...
- 关于idea链接oracle数据库出现IO 错误: Got minus one from a read call, connect lapse 1 ms., Authen
- 那些年的 Hello World (HTML)
- 【艾琪出品】《计算机应用基础》【试题汇总4】
- Ubuntu 15.10 x64 安装 Android SDK
- idea使用中项目出现library root
- Socket的超时时间
- 关于5G通信技术,你了解多少?
- 八月六日个人训练记录
- 软件维护人员及运维人员岗位职责
热门文章
- 31、如何安装第三方模块?以及用过哪些第三方模块?
- solr与mysql数据同步的方案
- 20145223《信息安全系统设计基础》 GDB调试汇编堆栈过程分析
- SharePoint 2013 中如何使用Silverlight
- EXT GridPanel
- 售前工程师的成长(五)---一个老员工的经验之谈
- DropDownList--下拉菜单
- SQL Story摘录(七)————触摸NULL值
- centos7安装mysql缺失依赖_CentOS7安装mysql5.7不成功,解决依赖包之后还是无法安装成功...
- 浅析Java中的final关键字