일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- git
- apple
- 앨범북
- OTP
- 앱리소스
- WebAuthn
- SwiftUI
- Android
- albumbook
- 2FA
- openssl
- SWIFT
- Nodejs
- css
- kmip
- 애플
- 인증
- MSYS2
- appres
- OSX
- MFA
- MYSQL
- otpkey
- FIDO2
- 안드로이드
- SSH
- SSL
- fido
- Xcode
- 앱스토어
Archives
- Today
- Total
인디노트
iphdr 에서 TCP, UDP 헤더 구하기 본문
TCP 헤더
struct tcphdr {
unsigned short int source; // 출발지 포트 번호
unsigned short int dest; // 목적지 포트 번호
unsigned int seq; // 전송 시퀀스 번호
unsigned int ack_seq; // 수신 시퀀스 번호
unsigned short int doff; // 데이터 오프셋
unsigned short int window; // 윈도우 크기
unsigned short int check; // 체크섬
unsigned short int urg_ptr; // 긴급 포인터
};
UDP 헤더
struct udphdr {
unsigned short int source; // 출발지 포트 번호
unsigned short int dest; // 목적지 포트 번호
unsigned short int len; // 데이터 길이
unsigned short int check; // 체크섬
};
IP 헤더와 TCP/UDP 헤더를 모두 포함하는 구조체
struct iphdr {
// IP 헤더 정보
// ...
// TCP/UDP 헤더 정보
union {
struct tcphdr tcp;
struct udphdr udp;
} transport;
};
위 구조체를 사용하여 IP 헤더에서 TCP/UDP 헤더 정보를 추출할 수 있습니다. 예를 들어, 다음과 같이 IP 패킷을 가리키는 포인터가 주어졌다면,
char* ip_packet = /* IP 패킷 데이터 */;
struct iphdr* ip_header = (struct iphdr*)ip_packet;
TCP 헤더는 다음과 같이 추출
if (ip_header->protocol == IPPROTO_TCP) {
struct tcphdr* tcp_header = &(ip_header->transport.tcp);
// TCP 헤더 정보 사용
}
UDP 헤더는 다음과 같이 추출
if (ip_header->protocol == IPPROTO_UDP) {
struct udphdr* udp_header = &(ip_header->transport.udp);
// UDP 헤더 정보 사용
}
반응형
'개발 플랫폼 및 언어 > 네트워크 기술' 카테고리의 다른 글
NIC 맥주소 가져오는 C 코드 (0) | 2023.04.11 |
---|---|
Ethernet 에서 내가 보낸 데이터를 내가 수신하는 것을 감지하는 방법 (0) | 2023.04.11 |
OSI 7 계층에서의 스위치 및 라우터의 역할 (0) | 2022.03.21 |
네트워크 패킷 (데이터) 송수신 (0) | 2022.03.21 |
VMWare Fusion 에 네트워크 추가 (링크) (0) | 2021.12.12 |
Comments