인디노트

tcphdr 에서 data 위치 찾는 C 함수 본문

개발 플랫폼 및 언어/네트워크 기술

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;
}
반응형
Comments