UCSPI-TCP yolu
Netcat dışında araç setleri vardır. Bunlardan birkaçının nasıl kullanılacağı aşağıda açıklanmıştır. Hepsi , ne olursa olsun, service
sizin çalıştıran bir komut dosyasının varlığını varsayar func
:
#! / Bin / sh
okunurken -r MESAJ
yapmak
echo 1> & 2 "$ {TCPREMOTEIP}" "$ {TCPREMOTEPORT}" rx "$ {MESSAGE}"
fonk
tamam
TCPREMOTEIP
Ve TCPREMOTEPORT
ortam değişkenleri UCSPI-TCP protokolü tarafından tanımlanır.
Komut dosyası, çeşitli araç setleri kullanılarak her TCP bağlantısı için ayrı bir işlem olarak oluşturulur. Aşağıda, araçlar kısa bir komut dosyasında kullanıldığı şekilde gösterilmektedir. Geleneksel olarak adlandırılan böyle bir senaryo, run
bunları bir daemontools-aile hizmet yöneticisi altında nasıl çalıştıracağıdır. Tabii ki doğrudan çağrılabilirler.
Bernstein ucspi-tcp
Daniel J. Bernstein'ın ucspi-tcp tcpserver
ile service
senaryoyu doğurur :
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 0.0.0.0 7777 ./hizmet
Bernstein ucspi-tcp'nin IPv6 özellikli geliştirilmiş sürümleri vardır. Erwin Hoffman ile tcpserver
IPv4 ve IPv6'yı bir arada ele almaya çalışır (işletim sistemi bunu destekliyorsa, birkaç tanesi desteklemez) ve service
komut dosyasını ortaya çıkarır :
#! / bin / sh -e
exec tcpserver -v -P -R -H -l 0 :: 0 7777 ./service
Bercot s6-networking, s6 ve yürütme
Laurent Bercot en s6-ağ ile, s6-tcpserver4
ve s6-tcpserver6
ayrı ayrı IPv4 ve IPv6 işlemek ve yumurtlamaya service
senaryoyu:
#! / Komut / execlineb
s6-tcpserver4 -v 0.0.0.0 7777
./hizmet
#! / Komut / execlineb
s6-tcpserver6 -v :: 0 7777
./hizmet
Daha önce zincir gibi s6-tcpserver-access
ve s6-applyuidgid
zincirdeki araçları arayarak daha karmaşık sunucular oluşturabilir ./service
.
nosh UCSPI araçları
Nosh araç seti tcp-socket-listen
ile, TCP soketini dinler, işletim sistemi bunu destekliyorsa IPv4 ve IPv6'yı tekrar simüle eder tcp-socket-accept
ve service
komut dosyasını ortaya koyan zincirler :
#! / Bin / nosh
tcp-soket-dinle - kombine4ve6 :: 7777
tcp-socket-accept --verbose --localname 0
./hizmet
Veya biri OpenBSD gibi işletim sistemlerinde iki ayrı işlem gerçekleştirir:
#! / Bin / nosh
tcp-soket-dinleme 0.0.0.0 7777
tcp-socket-accept --verbose --localname 0
./hizmet
#! / Bin / nosh
tcp-soket-dinle :: 7777
tcp-socket-accept --verbose --localname ::
./hizmet
Bir gibi araçlar konulması yoluyla daha karmaşık sunucularını oluşturabilir ucspi-socket-rules-check
ve setuidgid
zincirde.
#! / Bin / nosh
tcp-soket-dinle - kombine4ve6 :: 7777
setuidgid ayrıcalıklı kullanıcı
tcp-socket-accept --verbose --localname 0
ucspi-socket-rules-check --verbose
./hizmet
Pape ipsvd
Gerrit Pape ipsvd tcpsvd
ile service
senaryoyu ortaya çıkarır :
#! / bin / sh -e
exec tcpsvd -v 0.0.0.0 7777 ./hizmet
UCSPI-UDP
service
Standart komut bir akış soketi olduğunda ortak komut dosyası işleyebilir . Ancak TCP'yi açıkça belirtmediniz.
Yukarıda belirtilen araç setlerinden bazıları, TCP sunucuları oluşturmak için onları nasıl kullanabileceğine benzer şekilde UDP sunucuları oluşturmak için kullanılabilse udp-socket-listen
de, kabuk yerleşikleri olmadığı için kabuk komut dosyası ile gerçek hizmet programını oluşturmak zor standart giriş bir datagram soketi olduğunda mutlaka iyi başa çıkabilir .
daha fazla okuma
- Protokol:
- toolsets:
- Daniel J. Bernstein. ucspi-tcp . kripto.
- s6-ağ oluşturma . Laurent Bercot. skarnet.org.
- s6 . Laurent Bercot. skarnet.org.
- Jonathan de Boyne Pollard (2016). hayır . Yazılımları.
- ipsvd . Gerrit Pape. smarden.org.
- referans kılavuzları: