Pourquoi dites-vous que tcp fait la distinction entre serveur et client, mais pas udp (compréhension personnelle)

avant-propos

La première chose à expliquer est que d'un point de vue programmation, il doit y avoir quelques différences entre les codes du serveur et du client.Que ce soit tcp ou udp, cette mention dans le titre n'est qu'une compréhension large.

Avant de bien comprendre la pile de protocoles tcp/ip précédente, j'ai toujours entendu des remarques telles que tcp distingue le serveur et le client, mais pas udp . Après avoir étudié récemment la pile de protocoles tcp/ip, j'ai constaté que de nombreux blogs ne mentionnaient pas ce point de vue lorsqu'ils introduisaient les protocoles tcp et udp. Ce qui suit est ma simple compréhension.

La différence entre la programmation tcp udp

Dans la programmation client , il n'y a presque aucune différence entre tcp et udp. La seule différence évidente est peut-être que tcp n'a pas besoin de spécifier l'adresse lors de l'envoi et de la réception (en fait, c'est aussi le reflet du titre, donc je ne vais pas ' n'en parlons pas ici).

Dans la programmation côté serveur , il y a une grande différence entre tcp et udp. Côté serveur, udp n'a qu'à faire attention à sauvegarder l'adresse IP et le numéro de port de l'autre côté, mais tcp est beaucoup plus compliqué, y compris la nécessité de créer un socket pour écouter d'abord le port spécifié, puis continuer à boucler pour accepter de nouvelles connexions et ainsi de suite.

Vous pouvez vous demander pourquoi le côté udp n'a pas besoin de créer un socket spécial pour écouter le port spécifié, qui est similaire à tcp, mais tcp est juste un udp plus compliqué. Mais en fait, cela implique la plus grande différence entre tcp et udp - l'état de la connexion .

udp pas de connectivité

Pour le serveur udp, s'il est aussi fait comme tcp, c'est trop inutile.

TCP nécessite une poignée de main à trois lors de l'établissement d'une connexion et quatre vagues à la fin pour déclarer un processus de connexion complet. Et udp est beaucoup plus simple, il suffit de l'envoyer à l'adresse spécifiée et c'est fini, que l'autre partie le reçoive ou non.

C'est précisément à cause de cette caractéristique que pour udp, changer de connexion signifie changer une adresse différente à envoyer, alors que tcp doit faire signe quatre fois et serrer la main trois fois avant de basculer vers une nouvelle connexion. C'est aussi la raison pour laquelle tcp appelle les méthodes d'envoi et de réception mentionnées ci-dessus sans spécifier l'adresse. Pour tcp, la connexion ressemble plus à une session. Dans cette connexion, bien sûr, il envoie et reçoit toujours des paquets de l'extrémité opposée. Pourquoi s'embêter ? Expliquez à chaque fois. Par conséquent, pour le serveur tcp, il doit y avoir une file d'attente de connexion pour stocker les connexions établies avec les clients, et un socket pour obtenir spécifiquement les connexions dans cette file d'attente, tandis que le serveur udp n'a besoin que de recevoir des tampons du tampon de réception . extraire le paquet reçu dans la zone et l'envoyer au pair, car pour udp, il s'agit simplement d'une adresse différente à envoyer, et il ne se soucie pas de savoir si l'envoi réussira ou non.

Résumer

Pour udp, l'envoi et la réception ressemblent plus à vous et moi. Il est difficile pour vous de voir qui est le serveur et qui est le client à partir de ce comportement, alors que la connexion tcp est segment par segment et que la fin qui gère plusieurs segments est bien sûr le serveur.

Voici également une réponse sur ce sujet, que je trouve plutôt bonne : Quelle est la différence entre un serveur UDP et un client UDP ?

Guess you like

Origin blog.csdn.net/weixin_55658418/article/details/127908187