วิธีตรวจสอบการหมดเวลา TCP ใน linux / macos


11

ฉันมีปัญหาเครือข่ายใน MacOS ที่ฉันต้องแก้ไขปัญหา ฉันรู้ว่าซ็อกเก็ต TCP มีการหมดเวลาภายในที่จะปิดการเชื่อมต่อหากบุคคลที่อยู่ห่างไกลไม่ตอบสนอง (แต่ไม่มีการตัดการเชื่อมต่อที่สง่างามอย่างใดอย่างหนึ่ง) มันเป็นคำสั่ง / เครื่องมือใด ๆ ที่ฉันสามารถใช้เพื่อตรวจสอบค่าที่แน่นอนของการหมดเวลานี้หรือไม่?

คำตอบ:


15

คุณสามารถดูค่า tcp ที่ระบบตั้งไว้ทั้งหมดด้วย

$ sysctl net.inet.tcp

ตีความจาก tcp_var.h, tcp_subr.c และ tcp_timer.c:

  • net.inet.tcp.keepidle = ตัวจับเวลาที่ไม่ทำงาน keepalive
  • net.inet.tcp.keepintvl = interval เพื่อส่ง keepalives
  • net.inet.tcp.keepinit = หมดเวลาสำหรับการสร้างการซิงค์
  • net.inet.tcp.mssdflt = ขนาดเซกเมนต์สูงสุด TCP เริ่มต้น
  • net.inet.tcp.v6mssdflt = ขนาดเซกเมนต์สูงสุดของ TCP เริ่มต้นสำหรับ IPv6
  • net.inet.tcp.minmss = ขนาดเซกเมนต์สูงสุดของ TCP Minmum
  • net.inet.tcp.minmssoverload = จำนวน TCP Segments ต่อวินาทีอนุญาตให้อยู่ภายใต้ขนาด MINMSS
  • net.inet.tcp.rfc1323 = เปิดใช้งานส่วนขยาย rfc1323 (TCP ประสิทธิภาพสูง)
  • net.inet.tcp.rfc1644 = เปิดใช้งานส่วนขยาย rfc1644 (TTCP)
  • net.inet.tcp.do_tcpdrain = เปิดใช้งานรูทีน tcp_drain เพื่อขอความช่วยเหลือเป็นพิเศษเมื่อ mbufs เหลือน้อย
  • net.inet.tcp.pcbcount = จำนวน PCB ที่ใช้งาน
  • net.inet.tcp.icmp_may_rst = ข้อความที่ไม่สามารถเข้าถึง ICMP บางข้อความอาจยกเลิกการเชื่อมต่อใน SYN_SENT
  • net.inet.tcp.strict_rfc1948 = พิจารณาว่ามีการติดตาม RFC1948 หรือไม่
  • net.inet.tcp.isn_reseed_interval = วินาทีระหว่างการ reseeding ความลับของ ISN
  • net.inet.tcp.background_io_enabled = พื้นหลัง IO เปิดใช้งาน
  • net.inet.tcp.rtt_min = อนุญาตให้ใช้ค่า rtt ขั้นต่ำ
  • net.inet.tcp.randomize_ports = สุ่มหมายเลขพอร์ต TCP
  • net.inet.tcp.tcbhashsize = ขนาดของ hashtable บล็อกการควบคุม TCP
  • net.inet.tcp.msl = อายุการใช้งานส่วนสูงสุด
  • net.inet.tcp.always_keepalive = สมมติว่า SO_KEEPALIVE ในการเชื่อมต่อ TCP ทั้งหมด
  • net.inet.tcp.broken_peer_syn_rxmit_thres = จำนวนการซิงค์ที่ส่งใหม่ก่อนที่ TCP จะปิดการใช้งาน rfc1323 และ rfc1644 ในช่วงเวลาที่เหลือ
  • net.inet.tcp.pmtud_blackhole_detection = การตรวจจับการค้นพบหลุมดำเส้นทาง MTU
  • net.inet.tcp.pmtud_blackhole_mss = เส้นทางการตรวจจับหลุมดำ MTU Discovery ลด MSS

ฉันเชื่อว่าตามค่าเริ่มต้น keepalives 8 จะถูกส่งก่อนการเชื่อมต่อถูกปิดหากมีการตั้งค่า SO_KEEPALIVE เวลามีหน่วยเป็นมิลลิวินาที



3

ฉันไม่แน่ใจว่านี่คือสิ่งที่คุณกำลังมองหาหรือไม่ แต่คุณสามารถตรวจสอบคุณค่าที่รักษาไว้ได้ด้วย:

$ netstat -o

3
netstat ไม่ยอมรับตัวเลือก '-o' สำหรับฉันใน Mac OS X 10.6.6
fuzzyTew

1

อาจไม่เกี่ยวข้อง แต่ใช้ได้สำหรับฉัน:

ฉันกำลังพยายามกำหนดหมดเวลาแบบโต้ตอบ ssh / tcp กับเซิร์ฟเวอร์ของเราดังนั้นฉันจึง:

date; ssh host.domain 'sleep 10000'; date

เอาท์พุทตัวอย่าง:

Thu May 24 12:22:39 CEST 2018
packet_write_wait: Connection to 172.29.1.27 port 22: Broken pipe
Thu May 24 14:22:40 CEST 2018
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.