当前位置:网站首页>[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..
边栏推荐
- Solving simple differential equations
- em120.gige.h
- Update iteration of cloud communication interface -- the official launch of subail API V4
- What if the default browser cannot be set?
- 871. Minimum refueling times
- Sword finger offer 25 Merge two sorted linked lists
- HBuilderX运行到手机或模拟器提示没有找到设备
- chrome瀏覽器快速訪問stackoverflow
- Eye of depth (II) -- matrix and its basic operations
- JDBC
猜你喜欢
Goodbye, shucang. Alibaba's data Lake construction strategy is really awesome!
Ssm+ wechat applet to realize property management system
TCP拥塞控制详解 | 2. 背景
List summation [dummy+ tail interpolation + function processing list reference common pit]
简单线性规划问题
Sword finger offer 24 Reverse linked list
HBuilderX运行到手机或模拟器提示没有找到设备
Sword finger offer 26 Substructure of tree
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
vector的底层模拟实现
随机推荐
HBuilderX运行到手机或模拟器提示没有找到设备
Nexus简介及小白使用IDEA打包上传到Nexus3私服详细教程
Win10 system uses pip to install juypter notebook process record (installed on a disk other than the system disk)
将您的基于 Accelerator 的 SAP Commerce Cloud Storefront 迁移到 Spartacus
When the industrial Internet began to enter the deep-water area, it appeared more in the form of industry
ROS knowledge points -- the difference between ros:: nodehandle N and NH ("~")
Chmod command principle and usage details [easy to understand]
How to create a new page for SAP Spartacus storefront
书包网小说多线程爬虫[通俗易懂]
维护万星开源向量数据库是什么体验
MATLAB中nexttile函数使用
ROS知识点——ros::NodeHandle n 和 nh(“~“)的区别
线性规划例题 投资的收益与风险
LeetCode:1380. Lucky number in matrix -- simple
Win10系统使用pip安装juypter notebook过程记录(安装在系统盘以外的盘)
IPtables中SNAT、DNAT和MASQUERADE的含义
Si446 usage record (I): basic data acquisition
Making tutorial of chicken feet with pickled peppers
One year is worth ten years
Leetcode question brushing record | 933_ Recent requests