개발 플랫폼 및 언어/네트워크 기술
tcphdr 에서 data 위치 찾는 C 함수
인디개발자
2023. 4. 16. 22:36
#include <netinet/tcp.h>
// tcp 헤더 구조체
struct tcphdr {
u_int16_t source; // 송신 포트 번호
u_int16_t dest; // 수신 포트 번호
u_int32_t seq; // 시퀀스 번호
u_int32_t ack_seq; // 확인 응답 번호
u_int16_t doff:4; // 데이터 오프셋
u_int16_t res1:4; // 예약
u_int16_t res2:2; // 예약
u_int16_t urg:1; // 긴급 플래그
u_int16_t ack:1; // 확인 응답 플래그
u_int16_t psh:1; // 전송 제어 플래그
u_int16_t rst:1; // 재설정 플래그
u_int16_t syn:1; // 연결 요청 플래그
u_int16_t fin:1; // 연결 종료 플래그
u_int16_t window; // 윈도우 크기
u_int16_t check; // 체크섬
u_int16_t urg_ptr; // 긴급 포인터
};
// TCP 헤더를 받아 데이터 위치를 반환하는 함수
char *get_tcp_data(struct tcphdr *tcp_header, char *packet) {
// 데이터 오프셋 값으로부터 데이터의 시작 위치를 계산
int data_offset = tcp_header->doff * 4;
char *data = packet + data_offset;
// 반환
return data;
}
반응형