Làm cách nào để kiểm tra thời gian chờ TCP trong linux / macos?


11

Tôi gặp sự cố mạng trên MacOS của mình mà tôi cần khắc phục sự cố. Tôi biết rằng ổ cắm TCP có thời gian chờ bên trong sẽ đóng kết nối nếu bên từ xa không phản hồi (nhưng cũng không ngắt kết nối duyên dáng). Đây có phải là bất kỳ lệnh / công cụ nào tôi có thể sử dụng để kiểm tra giá trị chính xác của thời gian chờ này không?

Câu trả lời:


15

Bạn có thể thấy tất cả các giá trị tcp do hệ thống thiết lập với

$ sysctl net.inet.tcp

Giải thích từ tcp_var.h, tcp_subr.c và tcp_timer.c:

  • net.inet.tcp.keepidle = bộ đếm thời gian nhàn rỗi
  • net.inet.tcp.keepintvl = khoảng thời gian để gửi thủ tục
  • net.inet.tcp.keepinit = thời gian chờ để thiết lập syn
  • net.inet.tcp.mssdflt = Kích thước phân đoạn tối đa TCP mặc định
  • net.inet.tcp.v6mssdflt = Kích thước phân đoạn tối đa TCP mặc định cho IPv6
  • net.inet.tcp.minmss = Kích thước phân đoạn tối đa TCP tối thiểu
  • net.inet.tcp.minmssoverload = Số lượng phân đoạn TCP mỗi giây được phép ở dưới kích thước MINMSS
  • net.inet.tcp.rfc1323 = Kích hoạt tiện ích mở rộng rfc1323 (TCP hiệu suất cao)
  • net.inet.tcp.rfc1644 = Kích hoạt tiện ích mở rộng rfc1644 (TTCP)
  • net.inet.tcp.do_tcpdrain = Kích hoạt thói quen tcp_drain để được trợ giúp thêm khi có ít mbufs
  • net.inet.tcp.pcbcount = Số lượng PCB hoạt động
  • net.inet.tcp.icmp_may_rst = Một số tin nhắn không thể truy cập ICMP có thể hủy kết nối trong SYN_SENT
  • net.inet.tcp.strict_rfc1948 = Xác định xem RFC1948 có được theo dõi chính xác không
  • net.inet.tcp.isn_reseed_interval = Giây giữa việc sắp xếp lại bí mật ISN
  • net.inet.tcp.background_io_enables = Đã bật IO nền
  • net.inet.tcp.rtt_min = giá trị rtt tối thiểu được phép
  • net.inet.tcp.randomize_ports = Ngẫu nhiên số cổng TCP
  • net.inet.tcp.tcbhashsize = Kích thước của hashtable khối điều khiển TCP
  • net.inet.tcp.msl = Tuổi thọ phân khúc tối đa
  • net.inet.tcp.always_keepalive = Giả sử SO_KEEPALIVE trên tất cả các kết nối TCP
  • net.inet.tcp.broken_peer_syn_rxmit_thres = Số lượng SYN được truyền lại trước khi TCP vô hiệu hóa rfc1323 và rfc1644 trong những lần thử còn lại
  • net.inet.tcp.pmtud_blackhole_detection = Phát hiện lỗ đen MTU Discovery
  • net.inet.tcp.pmtud_blackhole_mss = Đường dẫn MTU Discovery Phát hiện lỗ đen MSS hạ thấp MSS

Tôi tin theo mặc định 8 thủ tục sẽ được gửi trước khi kết nối bị đóng nếu SO_KEEPALIVE được đặt. Thời gian tính bằng mili giây.


4

Đối với linux bạn có thể sử dụng:

$ sysctl -a | grep net.ipv4

3

Tôi không chắc đây có phải là thứ bạn đang tìm kiếm không, nhưng bạn có thể kiểm tra giá trị duy trì bằng:

$ netstat -o

3
netstat không chấp nhận tùy chọn '-o' cho tôi trong Mac OS X 10.6.6
fuzzyTew

1

Có thể không liên quan, nhưng làm việc cho tôi:

Tôi đang cố gắng xác định thời gian chờ tương tác ssh / tcp cho một trong các máy chủ của chúng tôi, vì vậy tôi chỉ:

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

đầu ra ví dụ:

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.