当前位置:网站首页>[comment le réseau se connecte] chapitre 6: demande d'accès au serveur et réponse au client (terminé)
[comment le réseau se connecte] chapitre 6: demande d'accès au serveur et réponse au client (terminé)
2022-07-02 17:38:00 【Currybeefer】
1.Schéma du serveur
Quand le paquet réseau arriveWebAprès le serveur,Le serveur recevra le paquet et le traitera.Il existe de nombreux types de serveurs,Son matériel et son système d'exploitation sont différents de ceux du client.Mais les parties liées au réseau,Comme une carte réseau,Pile de protocole,SocketLa bibliothèque ou quelque chose comme le client n'est pas différent.Que ce soit du matériel ouOSComment changer,TCPEtIPToutes les fonctions sont les mêmes.(Bien sûr.SocketL'utilisation de la bibliothèque et la structure du programme serveur sont différentes)
La structure du programme du serveur est illustrée à la figure,Nous pouvons diviser le programme en deux modules,Attendre le module de connexionaEt le module responsable de la communication avec le clientb.
Le module d'attente de connexion s'exécute lorsque le serveur démarrea,Ce module est responsable de la création de sockets,Puis entrez l'état de pause en attente de connexion.Quand le client commence la connexion,aLe module reprend le fonctionnement et reçoit la connexion,Puis démarrez le module de communicationb,Voilà.bSocket pour compléter la connexion.Et puisbCommunique avec le client en utilisant la socket connectée.Chaque fois qu'il y a une nouvelle connexion client,Et ça déclenche unb,Donc le client etbC'est une relation individuelle..
2.Processus de connexion du serveur
Ensuite, regardons le processus par lequel le serveur accepte la connexion.
Tout d'abord,aLe module existe au démarrage du programme serveur,Tout d'abord,,La pile de protocole appellesocketCréer une Socket, Écrivez le numéro de port spécifié dans la prise à utiliser .Et puis...,La pile de protocole appellelisten Écrivez les informations de contrôle pour attendre l'état de connexion à la prise , De cette façon, la prise entre dans l'état d'attente de connexion . Puis la pile de protocole appelle acceptPour accepter la connexion, Ensuite, mettez le programme en pause immédiatement . Attendez que le paquet réseau arrive , Continuer le processus .
Une fois le paquet client arrivé , Le programme renvoie le paquet correspondant et accepte l'opération de connexion .A Le module fait une copie de la prise en attente de connexion , Connectez la prise client à cette copie .Puis démarrezbModule, Envoyer une copie à bModule. L'opération d'envoi et de réception des données a suivi .
Pourquoi copier une copie de socket au lieu de la remettre directement à bEt alors?? Parce que si vous ne créez pas un nouveau , Alors cette prise est donnée à bModule arrière, Il n'y aura pas de prise en attente de connexion , S'il y a d'autres clients qui initient une connexion, il y a un problème .
Donc puisque les sockets sont copiées dans un parent , Les numéros de port de ces sockets doivent être les mêmes . Quand un paquet réseau arrive , Si la pile de protocole ne regarde que TCP Head Receiver end slogan , Il n'y a aucun moyen de savoir à quelle socket le paquet doit être livré .
La solution est, Il ne suffit pas de regarder le slogan du récepteur , La pile de protocole passe par le client IPAdresse,Numéro de port,ServeurIPAdresse, Numéro de port pour déterminer conjointement à quelle socket le paquet doit être livré .Comme le montre la figure
3. Réception du serveur
5.
Voici une description détaillée du fonctionnement du serveur lorsqu'il reçoit des paquets réseau ,Disons que c'est unTCPPaquets réseau.
MACModule
D'abord dans la carte réseau MACLe module est responsable de, Lorsque la carte réseau reçoit le signal , Extraire le signal d'horloge en fonction de la variation du signal d'en - tête , Ensuite, utilisez ce signal d'horloge pour restaurer l'information numérique .
Ensuite, regardez la séquence de vérification du cadre à la fin du paquet FCS Pour vérifier les erreurs , S'il est constaté que les données ont été déformées par des effets tels que le bruit , Jeter le paquet réseau .
QuandFCSVérification réussie,Vérifiez maintenantMACRécepteur dans la têteMACAdresse, Voyez si ce sac vous a été envoyé .
Si c'est le sien, Enregistrer l'information dans le tampon de la carte réseau ,Appel interrompu,JeanCPUPour traiter les paquets réseau reçus.CPUSelonMAC Le champ type Ethernet de l'en - tête détermine le type de protocole ,Ici., Représentation de la valeur d'un type IPAccord,Donc il appelleTCP/IPPile de protocole, Et lui transmettre le paquet .
IPModule
Et c'est tout.IPLe module commence à fonctionner.IP Le module vérifie IP Le format de l'en - tête est - il normalisé? , Et regardez le récepteur IP L'adresse est - elle écrite sur vous - même? . Lorsque le serveur a une fonction de transfert de paquets comme un routeur , Pour les paquets qui ne sont pas les leurs, ils sont également transmis au routeur selon la table de routage .
Si c'est toi, Ensuite, vérifiez si le paquet a été fractionné (Si ça se diviseIP Il y aura un logo dans l'en - tête. ), Si elle est fragmentée, elle est temporairement en mémoire , Les tranches égales arrivent et sont assemblées ensemble .Et vérifierIP Champ Numéro de Protocole de l'en - tête ,La découverte estTCPAccord,À transmettre àTCPTraitement des champs.
TCPModule
SiTCPTêteSYNPour1, Indique qu'il s'agit d'un paquet qui initie la connexion ,C'estTCP Le module vérifie TCP Numéro de port du récepteur dans l'en - tête , Vérifiez s'il y a des sockets avec le même numéro de port et en attente de connexion . Si ce n'est pas le cas, retourner au client le paquet contenant la notification d'erreur .
S'il y a une prise ,Copier une copie de cette Socket, Et puis l'expéditeur IPAdresse,Numéro de port, Numéro de série initial , Les paramètres nécessaires, tels que la taille de la fenêtre, sont écrits dans la réplique , Espace mémoire alloué pour envoyer et recevoir des tampons . Puis générer un représentant pour recevoir l'accusé de réception ACKNo., Initialisation du numéro de séquence utilisé pour envoyer les données du serveur au client , Taille de la fenêtre représentant la capacité restante du tampon de réception , Et l'utiliser pour générer TCPTête,MandatIP Module envoyé au client .
Lorsque ce paquet arrive au client , Le client renvoie un accusé de réception ACKNo.,Quand çaACK Retour au serveur , L'opération de connexion est terminée . C'est le serveur qui devrait entrer dans l'appel accept État de suspension pour , Lorsque le descripteur de la nouvelle socket est transmis au programme serveur , Le programme serveur reprendra .
SiTCP Le module reçoit maintenant un paquet de données ,Vérifiez.IPModules etTCP Les deux parties du module IPInformations sur l'adresse et le numéro de port, Et trouver les sockets où toutes ces informations correspondent . Ensuite, le numéro de série du paquet qui doit être reçu est calculé en fonction du numéro de série précédent enregistré dans cette socket et de la longueur des données ,Et puis avecTCP Numéro de série de la tête , Voir s'il y a une perte de sac .Si jamais,EtTCP Les données sont retirées du paquet , Dans le tampon de réception , Connectez - vous au dernier bloc de données reçu dans le tampon .
AprèsTCP Un paquet de réponse de confirmation sera généré , Calculé à partir du numéro de série du paquet et de la longueur des données ACKNo.,MandatIP Module envoyé au client .( Avant de retourner ce paquet , Ça va attendre un moment. , Voyez si vous pouvez fusionner avec les paquets de réponse suivants )
Et puisTCP Déconnecter le module , Pour plus de détails, voir ce qui a été écrit précédemment ,Très détaillé.Je n'en parlerai plus ici..
5.Le serveur renvoie un message de réponse
Une fois que le serveur a terminé le traitement des messages de demande , Vous pouvez retourner le message de réponse . Le processus de travail ici est le même que lorsque le client envoie un message de demande au serveur .
Tout d'abord,,WebAppel du serveurSocketDe la bibliothèquewrite, Envoyer un message de réponse à la pile de protocole .À ce moment - là,, Vous devez dire à la pile de protocole à qui envoyer ce message de réponse , Mais nous n'avons pas besoin d'informer directement le client IPAdresse, etc, Au lieu de cela, il suffit de donner un descripteur qui représente la socket utilisée pour la communication . Tous les états de communication sont enregistrés dans la prise , Il contient également des informations sur l'objet de la communication , Donc tout va bien tant qu'il y a un descripteur .
Et puis..., La pile de protocole divise les données en plusieurs paquets réseau , Ensuite, ajoutez la tête et envoyez - la . Ces paquets contiennent l'adresse du client destinataire , Ils passent par les commutateurs et les routeurs , Arrivée finale au client via internet .
.Vous trouverez ci - joint une carte complète du voyage de l'ensemble du paquet réseau
C'est la fin du livre , Je résume simplement les grandes lignes du livre , J'ai aussi omis des choses que je ne pensais pas nécessaires . C'est un très bon livre d'introduction , Après avoir regardé, j'ai senti que tout le cadre du réseau informatique avait . Ensuite, il faut creuser dans les livres .
La route est longue.,Je vais chercher..
边栏推荐
猜你喜欢
Solution to the problem that the easycvr kernel of intelligent video analysis platform cannot be started as a service
What if the default browser cannot be set?
si446使用记录(一):基本资料获取
List summation [dummy+ tail interpolation + function processing list reference common pit]
【网络是怎样连接的】第六章 请求到达服务器以及响应给客户端(完结)
Microservice architecture practice: using Jenkins to realize automatic construction
si446使用记录(二):使用WDS3生成头文件
USB interface powered Bluetooth color light strip controller
TCP拥塞控制详解 | 2. 背景
Sword finger offer 22 The penultimate node in the linked list
随机推荐
Listing of chaozhuo Aviation Technology Co., Ltd.: raising 900million yuan, with a market value of more than 6billion yuan, becoming the first science and technology innovation board enterprise in Xia
Visibilitychange – refresh the page data when the specified tab is visible
AtCoder Beginner Contest 237 VP补题
871. Minimum refueling times
【网络是怎么连接的】第四章 探索接入网和网络运营商
Timing / counter of 32 and 51 single chip microcomputer
SSB threshold_ SSB modulation "suggestions collection"
Introduction to Hisilicon hi3798mv100 set top box chip [easy to understand]
Map集合详细讲解
什么是软件开发中的 green field 和 brown field 模式 - 绿地开发和棕地开发
The construction of scalable distributed database cluster and the partition design of oneproxy sub database
Experience home office, feel the completion of the project | community essay solicitation
Alibaba Tianchi SQL learning notes - Day3
The beginning of life
Chmod command principle and usage details [easy to understand]
Ssm+ wechat applet to realize property management system
HBuilderX运行到手机或模拟器提示没有找到设备
Briefly introduce the use of base64encoder
Explanation of traceroute command
Sword finger offer 21 Adjust the array order so that odd numbers precede even numbers