傳送RST報文

2021-05-22 06:41:09 字數 1810 閱讀 5318

/*

* file:   main.c

* author: bearice

** created on 2023年12月31日, 下午12:36

*/#include

<

stdio.h

>

#include

<

stdlib.h

>

#include

<

sys/

ioctl.h

>

#include

<

sys/

types.h

>

#include

<

sys/

socket.h

>

#include

<

arpa

/inet.h

>

#include

<

net/if.

h>

#include

<

net/

ethernet.h

>

#include

<

netinet/in

.h>

#include

<

netinet/ip

.h>

#include

<

netinet

/tcp.h

>

//#include

#include

<

pcap.h

>

typedef unsigned char u8;

typedef unsigned short

u16;

typedef unsigned long

u32;

struct

psdhdr

;u16 checksum

(u16

*buffer

, int

size

) if

(size

)cksum

+= *(

u16*)

buffer

;cksum

= (cksum

>>

16) + (

cksum

& 0xffff

);cksum

+= (

cksum

>>

16);

return

(u16

) (~

cksum);}

u16 tcp_checksum

(struct

iphdr

* iph

, struct

tcphdr

* tcph

, char

* data

, int

size

) int

inject_reset

(int

sip,

int

dip,

int

sport

, int

dport

, int

ttl,

int

seq)

int

main

(int

argc

, char

** argv) }

}}}}

return

(exit_success);}

RST報文詳解

我們知道tcp建立連線的時候需要三次連線,tcp釋放連線的時候需要四次揮手,在這個過程中,出現了很多特殊的標誌報文段,例如syn ack fin,在tcp協議中,除了上面說了那些標誌報文段之外,還有其他的報文段,如push標誌報文段以及今天需要重點講解的rst報文段。rst reset the co...

多次RST以及不同場景下的RST報文的差異

在某個tcp互動過程中,我們發現在互動的後期,客戶端多次向伺服器端傳送rst報文,如下圖所示 我們首先來看客戶端發出的第乙個rst報文的解碼 rst與ack標誌位都置一了,並且具有ack number,非常明顯,這個報文在釋放tcp連線的同時,完成了對前面已接收報文的確認。我們再來看看客戶端發出的後...

多次RST以及不同場景下的RST報文的差異

在某個tcp互動過程中,我們發現在互動的後期,客戶端多次向伺服器端傳送rst報文,如下圖所示 我們首先來看客戶端發出的第乙個rst報文的解碼 rst與ack標誌位都置一了,並且具有ack number,非常明顯,這個報文在釋放tcp連線的同時,完成了對前面已接收報文的確認。我們再來看看客戶端發出的後...