반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Windows Kernel Driver
- pcap packet capture
- C언어 패킷캡쳐
- windows kernel debugging
- HackCTF
- pwnable
- 윈도우 커널 드라이버
- packet capture
- 네트워크 바이트 오더
- Windows Kernel Debug
- pcap packet
- vcruntime140.dll
- 바이트 오더
- 포너블
- arudino
- Network Byte Order
- 해킹
- IAT Hooking
- 시스템해킹
- 개발하기
- 개발 환경 준비
- 윈도우 커널
- Msvcrt.dll
- Windows
- 윈도우 커널 디버깅
- apphelp.dll
- Windows Kernel
- ucrtbase.dll
- vcruntime.dll
- hacking
Archives
- Today
- Total
미친해커
[Network] IPv4(Internet Protocol version 4) 헤더 본문
반응형
인터넷 프로토콜
인터넷 프로토콜(IP, Internet Protocol)은 두 호스트가 네트워크에서 패킷을 교환하며 정보를 주고 받는 데 사용하는 규약이며, 호스트의 주소 지정과 패킷 분할 및 조립 기능을 담당한다. 줄여서 아이피(IP)라고도 한다.
주소 체계
인터넷 프로토콜은 특정한 호스트의 주소를 지정할 수 있도록 설계되었다. 보편적으로 사용되는 IP 주소 체계는 IPv4와 IPv6가 있다.
IPv4는 인터넷 프로토콜의 4번째 버전이다. 전 세계적으로 사용된 첫 번째 인트넷 프로토콜이며, 과거에 사용되던 유일한 인터넷 프로토콜이였으나 오늘날에는 IPv4의 주소가 소진되어 IPv4의 할당이 중지되고 IPv6로 대체되고 있다.
IPv4의 주소체계는 총 12자리이며 네 부분으로 나뉜다. 각 부분 마다 0~255까지 3자리의 수로 표현된다. IPv4는 32비트로 구성되어 있으며, 한 부분당 1바이트이다.
IPv4 주소 예시 : 192.168.123.100
IPv4 주소의 개수는 32비트로 표현할 수 있는 2^32개인 약 43억개이다.
헤더
인터넷 프로토콜 버전 4 헤더는 옵션 미지정시 20바이트이며, 고정 20바이트와 가변 0 ~ 40바이트가 있다.
인터넷 프로토콜 버전 4 헤더는 최소 20바이트의 사이즈를 가지며 옵션에 따라 0 ~ 40바이트가 늘어날 수 있다.
typedef struct _NETWORK_IP_HEADER
{
unsigned char HeaderLength : 4; // IP Header Length
unsigned char Version : 4; // Internet Protocol Version
union
{
unsigned char TypeOfService; // Type of Service
struct
{
unsigned char ECN : 2; // Differentiated Services Codepoint
unsigned char DSCP : 6; // Explicit Congestion Notification
};
};
unsigned short TotalLength; // Total Packet Length in byte except for Ethernet Header Length
unsigned short Identification; // IP Packet Identifier
union
{
unsigned short Flag; // Information about the status of the packet segmentation.
unsigned short FragmentOffset : 13; // Original Location of Split Packets
struct
{
unsigned short : 13; // bit field padding
unsigned short MoreFragment : 1; // More fragment packets present
unsigned short DontFragment : 1; // It is last fragment packet
unsigned short Reserved : 1; // Reserved, always set to 0
} Flags;
};
unsigned char TTL; // Time To Live
unsigned char Protocol; // Protocol Type in the next layer
unsigned short Checksum; // Header Checksum
struct sockaddr_in SourceAddr; // Source IP Address
struct sockaddr_in DestinationAddr; // Destination IP Address
// unsigned long SourceAddr;
// unsigned long DestinationAddr;
} NETWORK_IP_HEADER, *PNETWORK_IP_HEADER;
반응형
'Network' 카테고리의 다른 글
[Network] IPv6(Internet Protocol version 6) 헤더 (0) | 2022.10.01 |
---|---|
[Network] 이더넷 헤더 (Ethernet Header(Protocol)) (0) | 2022.09.29 |
[Network] 네트워크 바이트 오더 (Network Byte Order) (0) | 2022.09.29 |
Comments