Sous Linux / Mac / Windows, est-il possible d’accéder à l’horodatage TCP et / ou au RTT dans l’espace utilisateur d’un socket TCP connecté?

Sous Linux / Mac / Windows, est-il possible d’accéder à l’horodatage TCP et / ou au RTT dans l’espace utilisateur d’un socket TCP connecté? Je fais référence à l’horodatage TCP et au calcul RTT associé activé par la RFC 1323 . Évidemment, je pourrais utiliser un socket brut, mais le socket ne serait ni connecté ni capable d’envoyer des paquets TCP sur Windows (post XP Update 3, je crois).

Sous Windows (EstatsType = TcpConnectionEstatsFineRtt):
GetPerTcp6ConnectionEStats
GetPerTcpConnectionEStats

Sous Linux (tcp_info.tcpi_rtt):
Mesure des fenêtres de congestion TCP (getsockopt)

Sur Mac (xtcpcb64.t_srtt):
sysctl TCPCTL_PCBLIST pour acquérir la structure xtcpcb64

Je veux annexer plus d’informations.

Pour iOS / MacOSX, j’ai trouvé une autre méthode très similaire à Linux tcp_info . C’est la struct tcp_connection_info . Vous pouvez le trouver dans le usr/include/netinet/tcp.h du usr/include/netinet/tcp.h iOS / MacOSX xcode. Vous pouvez l’utiliser comme suit:

 int length = sizeof(struct tcp_connection_info); getsockopt(socket_fd, IPPROTO_TCP, TCP_CONNECTION_INFO, (void *)info, (socklen_t *)&length); 

Je l’ai testé sur iOS 10.2.