当前位置:网站首页>[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..
边栏推荐
- PCL knowledge points - voxelized grid method for down sampling of point clouds
- Schoolbag novel multithreaded crawler [easy to understand]
- ssb门限_SSB调制「建议收藏」
- VirtualLab基础实验教程-7.偏振(1)
- Wechat applet - arrows floating up and down
- 第十五章 字符串本地化和消息字典(一)
- AtCoder Beginner Contest 237 VP补题
- Migrate your accelerator based SAP commerce cloud storefront to Spartacus
- About me
- 一年頂十年
猜你喜欢
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
The difference of message mechanism between MFC and QT
Example nonlinear integer programming
HBuilderX运行到手机或模拟器提示没有找到设备
Easyswoole3.2 restart failed
From collection to output: inventory those powerful knowledge management tools - inventory of excellent note taking software (4)
[非线性控制理论]7_High gain and High Frequency
Chrome browser quick access stackoverflow
What if the default browser cannot be set?
easyswoole3.2重启不成功
随机推荐
visibilitychange – 指定标签页可见时,刷新页面数据
Timing / counter of 32 and 51 single chip microcomputer
Vscode knowledge points - Common Errors
About me
Map集合详细讲解
Update iteration of cloud communication interface -- the official launch of subail API V4
Ocio V2 reverse LUT
泡椒凤爪制作教程
chrome浏览器快速访问stackoverflow
HDU - 1114 Piggy-Bank(完全背包)
JS20 array flattening
When the industrial Internet began to enter the deep-water area, it appeared more in the form of industry
Si446 usage record (I): basic data acquisition
Sword finger offer 21 Adjust the array order so that odd numbers precede even numbers
第十五章 字符串本地化和消息字典(一)
This "architect growth note" made 300 people successfully change jobs and enter the big factory, with an annual salary of 50W
Win10系统使用pip安装juypter notebook过程记录(安装在系统盘以外的盘)
LeetCode:1380. Lucky number in matrix -- simple
What if the default browser cannot be set?
【GAMES101】作业4 Bézier 曲线