如何在linux里使用C语言修改ttl值

如何在linux里使用C语言修改ttl值,第1张

ttl是每个IP包里面携带的信息,数据结构在/include/netinet/ip.h里面,注意那个u_int8_t ip_ttl——

struct ip

{

#if __BYTE_ORDER == __LITTLE_ENDIAN

unsigned int ip_hl:4 /* header length */

unsigned int ip_v:4 /* version */

#endif

#if __BYTE_ORDER == __BIG_ENDIAN

unsigned int ip_v:4 /* version */

unsigned int ip_hl:4 /* header length */

#endif

u_int8_t ip_tos /* type of service */

u_short ip_len /* total length */

u_short ip_id /* identification */

u_short ip_off /* fragment offset field */

#define IP_RF 0x8000 /* reserved fragment flag */

#define IP_DF 0x4000 /* dont fragment flag */

#define IP_MF 0x2000 /* more fragments flag */

#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */

u_int8_t ip_ttl /* time to live */

u_int8_t ip_p /* protocol */

u_short ip_sum /* checksum */

struct in_addr ip_src, ip_dst /* source and dest address */

}

如果你仅仅是想改变某个IP包里面的ttl值,你需要自己创建这个ip结构。如果你是想在创建socket的时候改ttl值,用setsockopt函数

int8_t是在C语言中C99标准规定的,恰好8位(1个字节)的有符号整型数的别名。规定将其定义在<stdint.h>,通常为:范围-128~127。(类比于16、32、64位可记成是-2^7~2^7-1)

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8558187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存