일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- appres
- 앱리소스
- WebAuthn
- SwiftUI
- OTP
- fido
- otpkey
- Nodejs
- apple
- SWIFT
- 안드로이드
- SSH
- 앨범북
- 인증
- kmip
- Android
- 앱스토어
- openssl
- SSL
- FIDO2
- 2FA
- OSX
- 애플
- MFA
- css
- MYSQL
- albumbook
- MSYS2
- git
- 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