2011-05-14 1 views
0

에서 ip_output 내가 이해할 수없는 코드의 2 개 라인을있다 원래 size의 IP 패킷 헤더의 길이 (struct ip)?HLEN과는 sizeof (구조체의 IP)는

도와 주실 수 있습니까?

+3

당신은 우리 앞에있는 코드가있는 사람입니다. –

답변

0

이것이 BSD의 ip_fragment 함수에서 나온 것 같습니다. 변수 중 하나는 mhlen이고 하나는 hlen이므로 서로 다를 수 있습니다. IP 헤더는 가변 길이입니다. struct ip에는 고정 부분이 있습니다. hlen 변수의 끝에는 가변 길이 옵션을 포함한 실제 길이가 있습니다.

+0

네 실제로 그들은 2 변수입니다, 나는 처음에는 신경 쓰지 않습니다. 실제로 headeroflength를 sizeof (struct ip)와 비교하는 이유는 무엇입니까? sizeof (struct ip)의 답은 무엇인지 압니까? 그런데 고마워요 * – elie

+0

안녕하세요, 미안하지만 이걸 보셨습니다. 'sizeof (struct ip)'는 항상 20입니다. 코드를 디코딩하는 데 도움이되는 헤더 레이아웃에 대한 자세한 내용은 http://en.wikipedia.org/wiki/IPv4#Header를 참조하십시오. – andrewdski

0

IP 헤더에는 추가 옵션이있을 수 있습니다 (예 : 소스 경로 레코드, tracerouting 용). IP 헤더의 전체 크기는 32 비트 워드의 수로 hlen 필드에 인코딩되므로 IP 옵션이 없으면 5 (20 바이트), IP 옵션이있는 경우에는 더 커집니다.