1. V4,V6头部差异
IP源路径选项:
对于IPV4,由于IP头部长度字段为4位,最大可以表示15,那么限制了IPV4的头部总长度为15*4 = 60字节。前10字节为固定的头部部分,所以最多有40个字节用来填充选项字段。
对于IPV6,固定长度的40字节的IPV6头部和传输层头部之间可以有扩展头部。
2. V4,6头部选项字段填充和获取使用setsockopt和getsockopt,传入参数level,optname,buf,buf长度。
用setsockopt来设置IP选项后,在该套接口上发送所有IP数据报都将包含这些选项。
清除选项用setsockopt,第四个参数设置成NULL,或者第五个参数设置成0.
4. 注意区分宽松和严格源路径选项。
5. 填充选项时,传送给setsockopt的缓冲区格式为:len = 3+IP地址长度(包括dstip)
|NOP + CODE + LEN +PTR +ip1 + ip2 。。。 +ip9+ dstip| 共44字节,最多有10个地址,不过ip1在IP数据报即将发送出去的时候,由内核移动到IP数据报的宿地址字段。
dstip为IP数据报的最终宿地址。
CODE指定源路径是宽松还是严格的。
LEN指定选项的字节长度,包括3字节的选项头部和dstip,这就已经有了7个字节了。
对于由一个IP地址构成的源路径,len = 7 +4 =11;
对于由二个IP地址构成的源路径,len = 7 +4 +4 =15;最多可以有9个IP,故最大可以为43.
ptr是一个指针(有点类似计数指针,并不是代表内存中的某个区域),表示下一个待处理IP的偏移量,初始值为4,表示指向第一个IP地址;
distip和NOP不属于源路径;
/*建立一个源路径选项,初始化还没有加入IP进去*/
u_char *creat_src_route(int type){
optr = (u_char *)malloc(44);
bzero(optr, 44);
*optr++ = IPOPT_NOP;
*optr++ = type ? 0x83 : 0x889;
lenptr = optr++;
*lenptr = 3;
*optr++ = 4;
return (optr-4);
}
/*添加地址到源路径,并更新选项中的len,并且optr指针指向下一个需要添加IP的位置*/
int add_src_route(const char *host){
struct addrinfo hints, *addrinfo;
struct sockaddr_in *addr;
bzero(&hints, sizeof(hints));
hints.ai_family = AF_INET;
if(getaddrinfo(host, NULL, &hints, &addrinfo) < 0 ){
err_sys("getaddrinfo");
memcpy(addr,(struct sockaddr_in *)addrinfo->ai_addr, sizeof(struct sockaddr_in));
*optr = addr->sin_addr;
optr ++= sizeof(struct in_addr);
*lenptr += sizeof(struct in_addr);
return (*lenptr+1);
}
6获取选项时,得到以下格式:
|ip1 + NOP+CODE+LEN+PTR+ip2+ip3+...+ip9+dstip|,会根据5中的源路径进行逆转。
getsockopt返回的buf指向第一个字节
相关推荐
生成对抗网络(GAN、DCGAN、ACGAN)-----学习笔记
生成对抗网络学习笔记 生成对抗网络有两个关键结构:生成模型、判别模型。 生成模型:输入是一个服从正态分布的N维向量,利用这个N维向量生成一张图片。 判别模型:对于生成模型输出的图像判别它是不是真的图像。 生成模型和判别模型的博弈关系在于:生成模型的目的是生成让判别模型无法判别真伪的图像,而判别模型的目的是判断输入图像的真伪。 结合代码来看生成对抗网络中,生成器和判别器的训练过程: 判别模型的训...
BASE64 编码原理
unit uBase64; { 编码原理: 将3个字节转换成4个字节((3 X 8)=24=(4X6)),先读入3个字节, 每读一个字节,左移8位,再右移四次,每次6位,这样就有4个 字节了。 解码原理: 将4个字节转换成3个字节,先读入4个6位(用或运算),每次左 移6位,再右移3次,每次8位,这样就还原了。 补"="符: Base64将
JPA - @MappedSuperclass - 基类注解
目录前言代码示例 前言 @MappedSuperclass注解一般作为基类的注解,表眀该类是映射的超类,继承于它的子类实体在映射时会自动添加到子类实体的对应数据库表中,用于共同的属性代码复用和模型分离。 代码示例 BaseEntity.java import lombok.Getter; import lombok.Setter; import javax.persistence.MappedSuperclass; import java.util.Date; @Getter @Setter @Ma
网络编程学习——IP选项
2019独角兽企业重金招聘Python工程师标准>>> ...
推荐系统召回总结(持续更新)
推荐系统架构 候选池:可供推荐的物料候选池,对于图文、短视频、新闻等来说通常是最近N天的新物料组成的集合,定期进行物料更新。 召回:从候选池中选出和用户相关的物料,交给后面的排序模块进行打分。召回面对的候选集通常是数十万或者百万甚至千万的量级,检索过程必须轻量快速。通常由多路召回组成,保证不遗漏且相关性、多样性尽量好,可以分为非个性化召回和个性化召回。 粗排:对召回选择的几千或者几百候选物料进行排序,快速打分选出topN,减少精排的压力,兼顾精准与效率。 精排:对粗排的结果进行精准排序,这个环节需要特征尽可
效果炸裂_安装midscene_copw基于midscene操作电脑_基于视觉的软件测试执行_MIDSCENE的安装和使用---AI大模型应用探索0012
摘要:本文介绍了如何通过安装MidSceneJS来增强Copaw的屏幕操作能力。首先需要安装Node.js和npm,并配置淘宝镜像源加速安装。然后全局安装MidScene CLI工具(npm install @midscene/cli -g)。接着配置视觉大模型服务,通过设置环境变量指定模型API密钥、名称、基础URL和家族类型(如qwen3.5-27b),配置文件需存放在C:\Users\Administrator.copaw目录。安装成功后,MidScene已能成功识别并操作屏幕,使用效果良好。文中还提
UNIX网络编程卷一 学习笔记 第二十七章 IP选项
IPv4允许在20字节的首部固定部分后跟最多共40字节的选项。尽管已经定义了10种IPv4选项,但最常用的是源路径选项。我们可通过存取IP_OPTIONS套接字选项访问这些选项,我们存取该套接字选项时,所用的缓冲区中的值就是它们置于IP数据报中的格式。 IPv6允许在固定长度40字节的IPv6首部之后,传输层首部(如ICMPv6、TCP、UDP)之前出现扩展首部,目前定义了6种扩展首部。与IPv4不同的是,IPv6扩展首部的访问途径是函数接口,而非强求用户理解这些首部如何呈现在IPv6分组中的真实细节。 I
【unity实战】Spline 插件让物体沿路径 “丝滑” 走位,实现火车沿轨道移动——Spline 插件的使用
Unity Spline系统教程:实现火车轨道移动 摘要:本文介绍了Unity Spline系统的核心功能与实战应用,通过火车轨道移动案例演示了完整开发流程。内容包括:1)安装Spline包并绘制样条线轨道;2)调整样条节点和曲线弧度;3)使用Spline Instantiate组件实例化轨道模型;4)通过Spline Animate组件实现小车自动沿轨移动;5)补充讲解了轨道闭合、分支节点、循环模式等进阶技巧。该系统可用于创建河流、摄像机路径等多种曲线应用,文中提供了官方文档链接和详细操作步骤,适合Uni
IP源路由原理和作用
IPv4 option 源路由选项提供了我们这个能力,我们可以决定,数据包如何被发往目的主机。 ? 严格源路由选择让路由器必须按照IP列表中的顺序转发,如果转发下一跳不在路由器直连子网中,那么数据包将被丢弃,源主机将收到源路由失败的ICMP消息。严格源路由选项类型值为137。 ? 松散源路由选项则对转发路径的要求宽松一些,只要求转发路径能按顺序经过选项中的IP地址列表,可以在列表中的两个IP地
ubuntu 安装node和npm
在ubuntu中经常需要用到node ,npm,因为npm基本会和node同时安装,所以只需要安装node即可。可以使用 nvm(Node Version Manager)来管理你的 Node.js 版本。
[游戏排查] Baldur‘s Gate 3 加载完成即崩溃?五步排查帮你快速定位问题
《博德之门3》加载崩溃问题解决方案:针对游戏进度条走完后闪退的情况,提供五步排查法。首先清除LevelCache缓存(成功率最高),其次检查Mod兼容性,然后切换Vulkan/DX11渲染API,再排查存档损坏问题,最后可删除配置目录(需备份存档)。重点提示Steam验证无法解决此类问题,建议按步骤顺序排查,多数情况下前两步即可解决问题。
速读原著-TCP/IP(IP源站选路选项)
第8章 Traceroute程序 8.5 IP源站选路选项 通常I P路由是动态的,即每个路由器都要判断数据报下面该转发到哪个路由器。应用程序对此不进行控制,而且通常也并不关心路由。它采用类似 Tr a c e r o u t e程序的工具来发现实际的路由。 源站选路(source routing)的思想是由发送者指定路由。它可以采用以下两种形式: • 严格的源路由选择。发送端指明 I P数据报所...
【WRF-UCM】BEP+BEM 模拟:README
【WRF-UCM】BEP+BEM 模拟:README
UNP卷一chapter27 IP选项
本章节讲述了IPv4及IPv6选项,由于IPv6选项的运用并不鲜见,此处只重点介绍IPv4选项的用法,也只是重点关注源路径选项。源路径选项的运用,先是通过往给定的44字节缓冲区中填写路径IP地址及目的IP地址,通过setsockopt()函数给相应套接字设置IPv4选项,接收端通getsockopt()函数读取IP报文首部中选项部分。1、IPv4选项共有10个,如NOP(no-operation,...
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
Data-Structures-and-Algorithm-Analysis-in-Java.pdf
作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...
linux ip to int,linux ip选项处理(二)
ip选项处理(一)中讨论了syn包的发送过程对ip选项的处理,接下来分析接收syn并转发的过程(2)路由节点接收syn到转发syn我们知道ip层接收数据的函数调用过程是ip_rcv ---> ip_rcv_finish,在ip_rcv_finish中将会对ip选项进行处理static inline int ip_rcv_finish(struct sk_buff *skb){......if...
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
IP选项初识
IPv4允许在20字节首部固定部分之后跟以最多40个字节的选项,最常用的是源路径选项。这些选项的访问途径是存取IP_OPTIONS套接字选项。 IPv6允许在固定长度的40字节IPv6首部和传输层(ICMPv6、TCP或UDP)首部之间出现扩展首部。 不同于IPv4的是,IPv6的扩展首部的访问途径是函数接口。 IPv4选项: 根据下图IPv4首部格式,发现IPv4选项字段跟在2
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
UNP Chapter 24 - IP选项
24.1. 概述 IPv4允许在固定的20字节头部之后跟以40字节的选项。虽然定义了10个不同的选项,但最常用的是源路径选项,这些选项透过IP_OPTIONS套接口选项访问。 IPv6允许在固定的40字节IPv6头部和传输层头部(如ICMPv6,TCP或UDP)之间出现扩展头部(extension header)。和IPv4不同的是,访问IPv6扩展头部的途径不是强迫用户去理解头部如何出现在I...
27.卷1(套接字联网API)---IP选项
1.概述2.IPv4 选项3.IPv4 源路径选项4.IPv6 扩展首部5.IPv6 步跳选项和目的地选项6.IPv6 路由首部7.IPv6 粘附选项8.历史性 IPv6 高级 API
Flex 编译器的编译选项
1.4.1 问题 你需要指定MXML编译器的编译选项. 1.4.2 解决方法 在项目属性对话框的Flex编译器面板内设置编译属性. 1.4.3 讨论 MXML编译器,也称mxmlc,是把ActionScript和MXML文件编译成可以在Flash播放器中观看的SWF文件的应用程序.当你在Flex Builder中运行或调试一个Flex应用时,MXML编译器被调用,并且文件将作为一个参数传递...
linux中ip正在被请求,linux ip选项处理(二)
ip选项处理(一)中讨论了syn包的发送过程对ip选项的处理,接下来分析接收syn并转发的过程(2)路由节点接收syn到转发syn我们知道ip层接收数据的函数调用过程是ip_rcv ---> ip_rcv_finish,在ip_rcv_finish中将会对ip选项进行处理static inline int ip_rcv_finish(struct sk_buff *skb){......if...
Flex 3 cookbook-技巧1.4 在Flex Builder中设置MXML编译器的编译选项
1.4.1 问题 你需要指定MXML编译器的编译选项. 1.4.2 解决方法 在项目属性对话框的Flex编译器面板内设置编译属性. 1.4.3 讨论 MXML编译器,也称mxmlc,是把ActionScript和MXML文件编译成可以在Flash播放器中观看的SWF文件的应用程序.当你在Flex Builder中运行或调试一个Flex应用时,MXML编译器被调用,并且文件将作为一个参数传...
SourceTree这是一个无效源路径/URL
SourceTree这是一个无效源路径/URL。 解决办法: 安装sourcetree的前提,需要本地安装git。 然后打开sourcetree—》点击上方工具—》点击选项—》点击git—》启用git
是否需要指定备用源路径? 一个或多个安装选项在目标服务器上缺少源文件。服务器将尝试从 Windows 更新或组策略指定的位置中获取缺少的源文件。你还可以在此页面上单击“指定备用源路径”链接,以提供有效
解决方案: 1、【运行】-输入gpedit.msc打开组策略,依次选择【计算机配置】—【管理模板】—【windows 组件】—【windows 更新】 2、然后双击“指定 Intranet Microsoft 更新服务位置”,将设置选择为“未配置 3、【运行】,执行gpupdate命令更新组策略即可。 ...
路由套接字
IP报文中的IP选项部分,是在20个字节空间之外的IP设置,通常的IPV4选项为IP源路径选项,用于记录数据报经过的主机路径,即路由器地址的集合 路由器套接字选项使用控制字来设置路由的特性,例如增加删除路由、路径信心、测度等信息, 通常的设计框架为: s = socket(AF_ROUTE, SOCK_RAW, 0); struct rt_msghdr rtm; /*设置rtm*/
Linux 软链接创建命令及用法
在 Linux 中,可以使用ln。
SourceTree克隆仓库时,总是提示输入密码
1.SourceTree的“工具”-“选项”-“一般”,配置上SSH秘钥: 2.将SSH密钥,配置到GitLab里; 3.仓库的“源路径 / URL”,填写SSH地址; 转载于:https://www.cnblogs.com/cag2050/p/5912524.html...
5489



被折叠的 条评论
为什么被折叠?



