IPアドレスからホスト名への変換処理をしようとしています。

$addr = $ENV{"REMOTE_ADDR"};
$host = gethostbyaddr (pack ("C4", split (/\./, $addr)), 2);

この処理で、gethostbyaddr以下が良く分かりません。
$addrに格納されたIPアドレスの『.』を取り去った四つの数字をバイナリ化(?)
したものを・・・?
最後の2が何を表すのか、また他に使える数字にはどんな
ものがあるのか知りたいです。

それとgethostbyaddr関数ってpackとペアに使わなくちゃいけないものなんですか?