当前位置:网站首页>Connaissez - vous le protocole TCP (2)?
Connaissez - vous le protocole TCP (2)?
2022-06-28 07:57:00 【Le grand Gatsby.】
1.C'est écrit devant
Le blog précédent a déjà présentéTCPUne partie du contenu de l'accord,Aujourd'hui, passons au reste.
2.La relation entre le tampon du système d'exploitation et la fenêtre coulissante
Fenêtres et cache
La couche application n'a pas lu le cache à temps

Perte de paquets due au rétrécissement de la fenêtre
- Rétrécir d'abord la fenêtre,Réduire encore le cache
- Après la fermeture de la fenêtre,Taille de la fenêtre de détection de synchronisation

Nombre approprié de messages en vol
- bps*RTT

LinuxAjuster la fenêtre de réception et le cache d'application en dessous
net.ipv4.tcp_adv_win_scale = 1
Appliquer le cache = buffer / (2^tcp_adv_win_scale)
Linux- Oui.TCPComment le tampon est ajusté
- net.ipv4.tcp_rmem = 4096 87380 6291456
- Lire le cache minimum 、Par défaut、Max.,Octets unitaires,Écraser net.core.rmem_max
- net.ipv4.tcp_wmem = 4096 16384 4194304
- Écrire le cache minimum 、Par défaut、Max.,Octets unitaires,Écrasernet.core.wmem_max
- net.ipv4.tcp_mem = 1541646 2055528 3083292
- Le système n'a pas de pression de mémoire 、 Seuil du mode de pression de démarrage 、Max., L'Unit é est le nombre de pages
- net.ipv4.tcp_moderate_rcvbuf = 1
- Activer le mode de cache de réglage automatique
3. Comment réduire les petits messages et améliorer l'efficacité du réseau ?
SWS(Silly Window syndrome)Syndrome de la fenêtre confuse
- Annonce de petite fenêtre

SWS Éviter les algorithmes
- Bénéficiaire
- David D Clark Algorithmes: La valeur de déplacement de la limite de la fenêtre est inférieure à min(MSS, Cache/2)Heure, La fenêtre de notification est 0
- Expéditeur
- Nagle Algorithmes:TCP_NODELAY Pour fermer Nagle Algorithmes
- Lorsqu'aucun segment de message non reconnu n'a été envoyé ,Envoyer les données immédiatement
- Lorsqu'il y a un segment de message non reconnu ,Jusqu'à:1- Aucun segment de message non reconnu n'a été envoyé ,Ou 2-La longueur des données atteint MSS Envoyer quand

- Nagle Algorithmes:TCP_NODELAY Pour fermer Nagle Algorithmes
TCP delayed acknowledgment Confirmation tardive
Quand il y a des données de réponse à envoyer,ack Les données de réponse sont immédiatement envoyées à l'autre partie
S'il n'y a pas de données de réponse ,ack Cheveux La livraison sera retardée , Pour voir si des données de réponse peuvent être envoyées ensemble
Si vous attendez d'être envoyé ack Période, Le deuxième segment de données de l'autre est de retour. , Envoyez - le maintenant ack


Nagle VS delayed ACK
- Fermer delayed ACK:TCP_QUICKACK
- Fermer Nagle:TCP_NODELAY

Linux Plus radical ”Nagle”:TCP_CORK
- Union sendfile La technologie zéro copie utilise
4.Contrôle de la congestion:Démarrage lent
Penser globalement:Contrôle de la congestion
- Démarrage lent
- Prévention de la congestion
- Retransmission rapide
- Récupération rapide

Historique du contrôle de la congestion
- Sur la base de la perte de paquets
- New Reno:RFC6582
- BIC:Linux2.6.8 – 2.6.18
- CUBIC(RFC8312):Linux2.6.19
- Sur la base de la largeur de bande de détection
- BBR:Linux4.9
Démarrage lent
- Fenêtre de congestioncwnd(congestion window)
- Fenêtre d'annoncerwnd(receiver‘s advertised window)
- Envoyer la fenêtreswnd = min(cwnd,rwnd)
- Pour chaqueACK,cwnd Doublez

Fenêtre initiale de démarrage lent
- Démarrage lent de la fenêtre initiale IW(Initial Window)Changements
- 1 SMSS:RFC2001(1997)
- 2 - 4 SMSS:RFC2414(1998)
- IW = min (4SMSS, max (2SMSS, 4380bytes))
- 10 SMSS:RFC6928(2013)
- IW = min (10MSS, max (2MSS, 14600))

5.Contrôle de la congestion:Prévention de la congestion
Prévention de la congestion
- Seuil de démarrage lent ssthresh(slow start threshold)
- Atteindre ssthresh Après,Augmentation linéaire cwnd cwnd += SMSS*SMSS/cwnd

Démarrage lent et contrôle de la congestion

6.Contrôle de la congestion: Retransmission rapide et récupération rapide
Pourquoi un segment de données hors séquence a - t - il été reçu? ?
- Si le message est perdu , Il y aura un désordre continu ACK Paragraphes
- Si le chemin du réseau et le périphérique provoquent une désorganisation du segment de données , Il y aura un petit désordre ACK Paragraphes
- Si le message est répété , Il y aura un petit désordre ACK Paragraphes

Retransmission rapide(RFC2581)
- Bénéficiaire
- Lorsqu'un segment de données hors séquence est reçu , Envoyez immédiatement l'entaille qu'il attend ACK Numéro de série
- Lorsque des segments de données remplis d'entailles hors séquence sont reçus , Envoyez immédiatement le prochain ACK Numéro de série
- Expéditeur
- Dès réception 3 Dupliquer le désordre ACK Paragraphes(4 Même désordre ACK Paragraphes)Heure, N'attendez plus le déclenchement du minuteur de retransmission , Retransmission immédiate des segments de message sur la base d'un mécanisme de retransmission rapide
Le timeout ne démarre pas la retransmission rapide

La retransmission rapide doit - elle entrer dans le démarrage lent? ?
- Reçu en double ACK, Cela signifie que le réseau est toujours en mouvement
- Un démarrage lent réduit soudainement le flux de données

Récupération rapide(RFC2581)
- Redémarrer la retransmission rapide et normalement non hors séquence ACK Avant l'arrivée du segment , Démarrer la récupération rapide
- Pour chaque répétition reçue ACK,cwnd Ajouter 1- Oui. MSS
- Quand les nouvelles données ACK Après l'arrivée,Paramètres cwndPour ssthresh

7.SACK Avec algorithme de retransmission sélective
Seule la section manquante est conservatrice et optimiste
- Confirmation cumulative Sequence La question du numéro de série
- Client Je n'ai pas été informé de la réception Part4
- Server Envoyer la fenêtre/Client La fenêtre de réception s'arrête

Répétez tous les segments – Pessimisme positif
Répétez tous les segments : Pessimisme positif
- Peut gaspiller la bande passante
Retransmission seulement des segments manquants : Un optimisme conservateur
- Inefficience lors de la perte massive de paquets

SACK:TCP Selective Acknowledgment
- RFC2018

IntroductionSACK
- Confirmation sélective

SACK
- Left Edge of Block
- Right Edge of Block

8. Algorithme de contrôle de la congestion de la perte de paquets à la mesure
Message de données et de confirmation en vol

Congestion causée par la transmission de données d'un grand Pipeline à un petit Pipeline



Où est le meilleur point de contrôle ?
- Point de contrôle de la congestion basé sur la perte de paquets
- Délai élevé,Perte massive de paquets
- Avec la mémoire bon marché , Plus de retard
- Point de contrôle optimal
- Avec la largeur de bande maximale
- Délai minimal
- Taux minimal de perte de paquets
- RTT Avec Bw Changement indépendant
- Et un seul peut être mesuré avec précision

Les files d'attente vides fonctionnent mieux !


BBR:TCP Bottleneck Bandwidth and Round-trip propagation time
- Par Google À 2016 Publication,Linux4.9 Introduction du noyau,QUIC Utiliser

9.Google BBR Principe de l'algorithme de contrôle de la congestion
BBR In Youtube Application sur:Augmentation du débit

BBR In Youtube Application sur:RTT Délai plus court

BBR In Youtube Application sur: L'intervalle de rembobinage devient plus long

Où est le meilleur point de contrôle ?
- Algorithme de contrôle de la congestion basé sur la perte de paquets
- Délai élevé,Perte massive de paquets
- Avec la mémoire bon marché , Plus de retard
- Ligne longitudinale gauche ( Efficace pour l'ensemble du réseau )
- Avec la largeur de bande maximale
- Délai minimal
- Taux minimal de perte de paquets
- RTprop Avec BtlBw Changement indépendant
- Et un seul peut être mesuré avec précision

BBR Comment trouver la bonne RTprop Et BtlBw?
RTT Il y a du bruit de file d'attente
- ACK Confirmation tardive、 File d'attente des périphériques réseau
Qu'est - ce que RTprop? C'est une propriété physique

Basé sur pacing_gain Ajustement
- 700 ms Mesure à l'intérieur
- 10-Mbps, 40-msLiens
- Comment détecter une bande passante plus grande ?
- Promotion régulière pacing_gain

Quand les lignes changent pacing_gain Le rôle de
- 20 Secondes:10-Mbps, 40-ms Augmentation 20 Mbps
- 40 Secondes: Encore une fois. 10-Mbps

Comparer CUBIC Démarrage lent sous
- 10-Mbps, 40-ms
- Démarrage lent
- startup
- drain
- probe BW

Plusieurs vitesses initiales différentes TCP Largeur de bande moyenne de partage rapide des liaisons
- 100-Mbps/10-ms

Google B4 WANPratique
- 2-25 Augmentation du débit double
- Fonction de distribution cumulative
- 75% La connexion est limitée à linux kerner Recevoir le cache
- En Amérique- L'Ascension sur le chemin de l'Europe linux kernal Après avoir reçu la limite supérieure du cache 133Double augmentation

RTT Une forte baisse
- 10-Mbps, 40-ms

Débit à différents taux de perte de paquets :CUBIC VS BBR
- 100-Mbps/100-ms
- Rouge CUBIC
- Vert BBR

Youtube Plus d'une semaine 2 100 millions de données de lecture

SGSN Réseau mobile
- 128-Kbps/40-ms
- Difficulté à établir une nouvelle connexion

Bien reçu. Ack Heure
Mise à jour RTprop 、BtlBw

Lors de l'envoi des données

10.Quatre poignées de main pour fermer la connexion
Fermer la connexion:Prévenir la perte de données; Interaction avec la couche application
- FIN:Fin
- ACK:Confirmation

Fermeture simultanée des connexions aux deux extrémités

TCP Machine d'état
11 Statut des espèces
- CLOSED
- LISTEN
- SYN-SENT
- SYN-RECEIVED
- ESTABLISHED
- CLOSE-WAIT
- LAST-ACK
- FIN-WAIT1
- FIN-WAIT2
- CLOSING
- TIME-WAIT
3 Événements
- SYN
- FIN
- ACK

11. Optimiser la connexion fermée TIME-WAITStatut
TIME-WAIT Que se passe - t - il si l'état est trop court ou inexistant? ?
- MSL(Maximum Segment Lifetime)
- Durée de vie maximale du message
- Maintien 2MSL Durée TIME-WAIT Statut
- S'assurer que le port n'est pas réutilisable pendant le temps aller - retour d'au moins un message

linuxEn bas.TIME_WAITOptimisation:tcp_tw_reuse
- net.ipv4.tcp_tw_reuse = 1
- Après ouverture, La nouvelle connexion peut être utilisée en tant que client TIME-WAIT Port d'état
- Parce que timestamp L'existence de, Le système d'exploitation peut rejeter les messages en retard
- net.ipv4.tcp_timestamps = 1

TIME_WAIT Optimisation
- net.ipv4.tcp_tw_recycle = 0
- Après ouverture, Disponible à la fois comme client et serveur TIME-WAIT Port d'état
- C'est dangereux., Impossible d'éviter le retard du message 、 Les répétitions, etc., perturbent les nouvelles connexions
- net.ipv4.tcp_max_tw_buckets = 262144
- time_wait Nombre maximum de connexions d'état
- Fermer la connexion directement après le dépassement
RST Réinitialiser le message

12.keepalive 、 Somme de contrôle et données hors bande
TCP De Keep-Alive Fonction
- Linux De tcp keepalive
- Envoyer le rythme cardiaque
- Linux: net.ipv4.tcp_keepalive_time = 7200
- Intervalle d'envoi du paquet sonde
- net.ipv4.tcp_keepalive_intvl = 75
- Nombre de retraits de paquets de sondes
- net.ipv4.tcp_keepalive_probes = 9
- Envoyer le rythme cardiaque
Somme de contrôle en violation du principe de stratification
- Pour les données clés de l'en - tête (12Octets)+TCP Les données effectuent le calcul de la somme de contrôle
- Les calculs supposent que checksum Pour0

Appliquer les ajustements TCP Quand envoyer les données

Traitement d'urgence des données

13.Orienté vers le flux d'octets TCP Comment Multiplexer les connexions ?
Multiplexing Multiplexage
- Processus et techniques de transmission de signaux ou de flux de données multiplex sur un canal

HTTP2:TCP Multiplexage au - dessus de la connexion

Non - blocage socket: Traiter plusieurs TCP Connexion

epoll+Non - blocage socket
- epoll - Oui.:linux 2.5.44
- Tous les tampons ou les changements d'état de connexion trouvés en même temps dans le processus TCP Connexion
- 3 - Oui. API
- epoll_create
- epoll_ctl
- epoll_wait

epoll Pourquoi efficace?
- Les connexions actives ne représentent qu'une petite partie du total des connexions

Non - blocage+epoll+Programmation synchrone = Co - Process

14. Que peut faire l'équilibrage de charge à quatre niveaux ?
OSI Sept couches sous le modèle LB Avec quatre étages LB

Équilibrage de la charge à quatre niveaux et représentation de la couche TLS Désinstaller

Équilibrage de la charge à quatre niveaux et connexion à cinq tuples

Routeur à trois niveaux et équilibrage de charge à quatre niveaux

Multicouches LB
- À l'extérieur LB
- Interne LB

Les limites de la confiance

UDP Base théorique de l'équilibrage de la charge

15.À la fin
Ce blog présente principalementTCP Le reste de l'accord , Il reste un protocole réseau IPAccord.
边栏推荐
- SOC clock configuration
- MMR rearrangement (similarity is calculated by editing distance and repeatability)
- NDK cross compilation
- At 19:00 on Tuesday evening, the 8th live broadcast of battle code Pioneer - how to participate in openharmony's open source contribution in multiple directions
- Design of DSP image data stream
- Disposition Flex
- XML serialization backward compatible
- HJ字符个数统计
- 逆波兰表达式求值<难度系数>
- SOC timer and interrupt configuration
猜你喜欢
随机推荐
同花顺注册开户靠谱吗?安全吗?
HJ删除字符串中出现次数最少的字符
Unity UI shadow component
HJ base conversion
Unity-UI-shadow组件
A single node obtains the lock lock of the order number
数字藏品市场“三大套路”
nlp序列完全可以模拟人脑智能
ACM笔记
Ice, protobuf, thrift -- Notes
Ambari (VI) -- ambari API use
SQL master-slave replication setup
HJ字符个数统计
Idea package together, using compact middle packages to solve &
Disposition Flex
es数据导出csv文件
HJ质数因子
Static resource compression reduces bandwidth pressure and increases access speed
Is it reliable for flush to register and open an account? Is it safe?
2021 programming language ranking summary









