Linux에서 iphdr은 ip 데이터 패킷의 설명 구조입니다. iphdr이 있는 헤더 파일은 "/usr/src/linux/include/linux/ip.h"이며 구조는 데이터 배치로 구성됩니다. 구조적 데이터, 구조화된 데이터를 구성하는 각 데이터 조각을 구조적 데이터의 구성원이라고 하며, 이는 메모리 간격의 크기와 해석 의미를 설명합니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.
iphdr은 컴퓨터 용어입니다. Linux에서의 IP 데이터 패킷의 설명 구조이다.
헤더 파일은 /usr/src/linux/include/linux/ip.h이며, 구조는 다음과 같습니다.
struct iphdr { #if defined(__LITTLE_ENDIAN_BITFIELD) //小端模式下 __u8 ihl:4,//首部长度(4位) version:4;//ip协议版本IPv4 #elif defined (__BIG_ENDIAN_BITFIELD) //大端模式下 __u8 version:4, ihl:4; #else #error "Please fix <asm/byteorder.h>" #endif __u8 tos;//服务类型字段(8位) __be16 tot_len;//16位IP数据报总长度 __be16 id;//16位标识字段(唯一表示主机发送的每一分数据报) __be16 frag_off;//(3位分段标志+13位分段偏移数) __u8 ttl;//8位数据报生存时间 __u8 protocol;//协议字段(8位) __be16 check;//16位首部校验 __be32 saddr; //源IP地址 __be32 daddr; //目的IP地址 };
Extended Knowledge
iphdr->version
버전(4 숫자), 현재 프로토콜 버전 번호는 4이므로 IP를 IPv4라고도 합니다.
iphdr->ihl
헤더 길이(4비트): 헤더 길이는 IP 계층 헤더에 있는 32비트 단어의 수(즉, IP 계층에 4바이트~32비트가 몇 개 포함되는지를 나타냅니다) 헤더)(모든 옵션 포함). 4비트 필드이므로 헤더의 길이는 최대 60바이트일 수 있습니다. 일반 IP 데이터그램(옵션 없음) 필드의 값은 5 5 * 32 / 8 = 5 * 4 = 20바이트입니다.
iphdr->tos
서비스 유형 필드(8비트): 서비스 유형(TOS) 필드에는 3비트 우선 순위 하위 필드(현재 무시됨), 4비트 TOS 하위 필드 및 사용되지 않는 1비트가 포함됩니다. 비트이지만 0으로 설정되어야 합니다. 4비트 TOS 하위 필드는 최소 지연, 최대 처리량, 최대 신뢰성 및 최소 비용을 나타냅니다. 4비트 중 1비트만 설정할 수 있습니다. 4비트가 모두 0이면 정상적인 서비스를 의미한다.
iphdr->tot_len
전체 길이 필드(16비트)는 전체 IP 데이터그램의 길이(바이트)를 나타냅니다. 헤더 길이 필드와 전체 길이 필드를 사용하면 IP 데이터그램의 데이터 내용의 시작 위치와 길이를 알 수 있습니다. 이 필드는 16비트 길이이므로 IP 데이터그램의 길이는 최대 65535바이트일 수 있습니다. 일부 데이터 링크(예: 이더넷)는 최소 길이에 도달하기 위해 일부 데이터를 채워야 하기 때문에 전체 길이 필드는 IP 헤더에 필요한 내용입니다. 길이. 이더넷의 최소 프레임 길이는 46바이트이지만 IP 데이터는 더 짧을 수 있습니다. 전체 길이 필드가 없으면 IP 계층은 46바이트 중 IP 데이터그램의 내용이 얼마나 되는지 알 수 없습니다.
iphdr->id
식별 필드(16비트)는 호스트가 보낸 각 데이터그램을 고유하게 식별합니다. 일반적으로 해당 값은 메시지가 전송될 때마다 1씩 증가합니다.
추천 학습: Linux 비디오 튜토리얼
위 내용은 리눅스에서 iphdr이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!