Bazı garip sonuçlara yol açan netcat ile belirli portları dinleyerek Jenkins'de OS'deki bağlantı noktası tahsisi sorunlarını ayıklamaya çalışıyordum. bir ikinci terminal sonraOS X neden aynı TCP bağlantı noktasını iki kez dinlemeye izin veriyor?
$ uname -rs
Darwin 12.2.1
$ nc -l 54321
: X, 10.8.2 işletim sistemi bir terminalde
$ nc -l 54321
ve üçüncü terminalde
,lsof
her iki örneğini göstermektedir aynı bağlantı noktasına bağlı:
$ lsof -i | grep 54321
nc 70706 chris 3u IPv4 0x55618c024692f4d1 0t0 TCP *:54321 (LISTEN)
nc 70769 chris 3u IPv4 0x55618c0232cb8661 0t0 TCP *:54321 (LISTEN)
Linux'ta
:
İlk terminali:
$ uname -rs
Linux 3.2.0-34-generic
$ nc -l 54321
İkinci terminali:
$ nc -l 54321
nc: Address already in use
Neden OS X ayrıca adres geçtiği anlamına bildirmez kullanılır?
"lsof -i" çıktı sözdizimini bilmiyorum, ancak 0x55618c024692f4d1 ve 0x55618c0232cb8661 nedir? IP adresleri ise, açıkçası dinleyicinin "herhangi bir" adrese değil belirli bir IP adresine bağlı olması açıktır. – CodeCaster
Anlamsız bellek adresleri. Sahip oldukları tek amaç, bunların iki ayrı soket olduğunu (örn., Bir fork() 'veya' dup() ') olmadığını tanımlamaktır. – duskwuff
'lsof -i 'işlevinin çalıştırılması, bu alan için 27 benzersiz değer verir (" DEVICE "); Bunun bir hafıza adresi olduğuna inanıyorum. Son sütun, soketlerin * * 'ye bağlı olduğunu gösterir. –