
Насколько я знаю,
'$sysctl | grep net.ipv4.tcp'
дает общесистемное значение параметра TCP, мне нужно создать скрипт на Bash для моего практического файла колледжа, в котором, если мы откроем браузер и введем URL, напримерwww.google.comто время SYN установления этого соединения и время SYN+ACK необходимо взять и сравнить с общесистемным параметром, чтобы принять решение о задержке и отобразить сообщение о SYN и SYN+ACK?
решение1
tcpdump позволит вам увидеть разницу во времени между SYN и SYN/ACK, что даст вам начальное RTT (при условии, что вы осуществляете захват с клиента).
Например, tcpdump -nS -s0 host www.google.com -ttt
показывает информацию, которую вы ищете.
Если вы хотите автоматически извлечь только начальное время кругового пути, один простой способ (но не безошибочный) — перенаправить вывод tcpdump в файл и использовать grep и awk для извлечения только дельта-времени для пакетов SYN/ACK. Например:
tcpdump -nS -s0 host www.google.com -ttt > /tmp/handshake.txt
cat /tmp/handshake.txt | egrep '\[S\.\]' | awk 'BEGIN { FS = " " } ; { print $1 }'
Приведенные выше команды можно добавить в простой bash-скрипт в соответствии с вашими требованиями.
Я не уверен, что вы имеете в виду, когда говорите о сравнении с "системным параметром". Не существует значения sysctl, которое бы контролировало время круговой передачи, оно также сильно варьируется в зависимости от того, о каком сервере вы говорите.