linux raw socket 发送ip报文,Raw Socket Linux发送/接收数据包

该博客主要介绍了如何在Linux中利用Raw Socket发送和接收IP数据包,特别是在C语言中实现TCP报文的构造和校验和计算。通过示例代码,展示了如何设置IP头和TCP头,并进行数据包的发送与接收,以便分析TTL和窗口大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在接收数据包时遇到一些问题.

我可以接收和读取传入的数据包,但我想我不会与任何主机握手.

我只想在收到答案的情况下将数据包发送到具有开放端口的远程计算机,以查看TTL(生存时间)和窗口大小.

有谁知道错误在哪里? (我对C编程知之甚少)

码:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

struct pseudohdr {

u_int32_t src_addr;

u_int32_t dst_addr;

u_int8_t padding;

u_int8_t proto;

u_int16_t length;

};

struct data_4_checksum {

struct pseudohdr pshd;

struct tcphdr tcphdr;

char payload[1024];

};

unsigned short comp_chksum(unsigned short *addr, int len) {

long sum = 0;

while (len > 1) {

sum += *(addr++);

len -= 2;

}

if (len > 0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值