Présentation détaillée du serveur Web
1. Introduction au protocole HTTP
HTTP est l'abréviation de Hyper Text Transfer Protocol. Son développement est le résultat de la coopération entre le World Wide Web Consortium et l'Internet Engineering Task Force (IETF), qui ont finalement publié une série de RFC (RFC 1945) définissant la version HTTP/1.0. La plus connue d’entre elles est la RFC 2616. La RFC 2616 définit une version couramment utilisée aujourd'hui : HTTP 1.1.
Le protocole HTTP (HyperText Transfer Protocol, Hypertext Transfer Protocol) est un protocole de transfert utilisé pour transférer l'hypertexte du serveur WWW vers le navigateur local. Cela peut rendre le navigateur plus efficace et réduire la transmission réseau. Il garantit non seulement que l'ordinateur transmet correctement et rapidement les documents hypertextes, mais détermine également quelle partie du document est transmise et quelle partie du contenu est affichée en premier (comme le texte avant les graphiques), etc.
HTTP est un protocole de communication basé sur TCP/IP pour transférer des données (fichiers HTML, fichiers images, résultats de requêtes, etc.).
HTTP est un protocole de couche application, composé de requêtes et de réponses, et est un modèle client-serveur standard.
HTTP est un protocole sans état.
![Échec du téléchargement de la compréhension approfondie du protocole HTTP.jpg Veuillez réessayer.]

Cela limite l'utilisation du protocole HTTP, et il est impossible pour le serveur de transmettre des messages au client lorsque celui-ci n'initie pas de requête.
Le protocole HTTP est un protocole sans état. Il n'y a aucune correspondance entre cette requête et la dernière requête du même client.
2.Analyse du protocole http
1. Requête du navigateur

On peut correspondre aux opérations CRUD d'ajout, de suppression, de modification et de requête de la base de données :
CREATE : PUT
LECTURE : GET
MISE À JOUR : POST
DELETE : DELETE
Réponse du serveur
Points de réponse HTTP Pour les deux parties : Header et Body (Body est facultatif), les lignes les plus importantes du Header que nous voyons dans le réseau sont les suivantes :
HTTP/1.1 200 OK
200 indique une réponse réussie , et le OK suivant est illustré.
Si la valeur renvoyée n'est pas 200, il existe souvent d'autres fonctions, telles que
La réponse échouée est 404 Not Found : la page Web n'existe pas
500 Erreur interne du serveur : Erreur interne du serveur
...etc...

Content-Type : text/html
Content-Type indique le contenu de la réponse, ici text/html représente une page Web HTML.
3. Processus d'analyse du navigateur
Lorsque le navigateur lit le code source HTML de la page d'accueil de Sina, il analysera le HTML, affichera la page, puis, en fonction des différents liens contenus dans le HTML. , Envoyez une requête HTTP au serveur Sina, obtenez les images, vidéos, Flash, scripts JavaScript, CSS et autres ressources correspondants, et enfin affichez une page complète.
3. Résumé
1. Processus de requête HTTP
En suivant la page d'accueil de Sina, résumons le processus de requête HTTP :
Étape 1 : Le navigateur envoie d'abord une requête HTTP au serveur. La requête comprend :
Méthode : GET ou POST, GET demande uniquement des ressources, POST sera accompagné des données utilisateur ; > Nom de domaine : spécifié par l'en-tête de l'hôte : Hôte : www.sina.com
et autres en-têtes associés
S'il s'agit d'un POST, la demande comprend également un corps, y compris les données utilisateur
Étape ; 2 : Serveur Renvoie une réponse HTTP au navigateur. La réponse comprend :
Code de réponse : 200 signifie succès, 3xx signifie redirection, 4xx signifie qu'il y a une erreur dans la requête envoyée par le client et 5xx signifie une une erreur s'est produite lors du traitement côté serveur ;
Type de réponse : spécifié par Content-Type ; et autres en-têtes associés
Habituellement, la réponse HTTP du serveur contient du contenu, c'est-à-dire qu'il existe un corps contenant le le contenu de la réponse et le code source HTML de la page Web se trouve dans le Body .
Étape 3 : Si le navigateur doit continuer à demander d'autres ressources au serveur, telles que des images, effectuez une autre requête HTTP et répétez les étapes 1 et 2.
Le protocole HTTP adopté par le Web adopte un modèle requête-réponse très simple, ce qui simplifie grandement le développement. Lorsque nous écrivons une page, il nous suffit d'envoyer le HTML dans la requête HTTP, et nous n'avons pas besoin de réfléchir à la manière de joindre des images, des vidéos, etc. Si le navigateur a besoin de demander des images et des vidéos, il enverra une autre requête HTTP. Par conséquent, une requête HTTP ne traite qu'une seule ressource (cela peut être compris comme une connexion courte dans le protocole TCP. Chaque lien n'obtient qu'une seule ressource. Si vous en avez besoin de plus, vous devez établir plusieurs liens)
Le protocole HTTP également a une forte évolutivité , bien que le navigateur demande la page d'accueil, Sina peut lier des ressources d'autres serveurs en HTML, comme , dispersant ainsi la pression des requêtes sur différents serveurs, et un site peut être lié à d'autres sites, et d'innombrables sites sont liés les uns aux autres pour former le World Wide Web, appelé comme WWW.
Format 2.HTTP


- Chaque requête et réponse HTTP suit le même format. Un HTTP contient deux parties : l'en-tête et le corps, dont le corps est facultatif.
- Le protocole HTTP est un protocole texte, son format est donc également très simple.
- Format de requête HTTP GET :
GET /path HTTP/1.1
Lorsque deux rn consécutifs sont rencontrés, la partie en-tête se termine et toutes les données suivantes sont le corps.
En-tête1 : Valeur1
En-tête2 : Valeur2
En-tête3 : Valeur3
Chaque en-tête est une ligne et le caractère de nouvelle ligne est rn ou Le format de la requête HTTP POST avec os.linesep
:
POST /path HTTP/1.1
Header1 : Value1
Header2 : Value2
Header3 : Value3
body data va ici...Format de réponse HTTP :
Réponse HTTP si incluse corps, également séparé par rnrn.
200 OK
En-tête1 : Valeur1
En-tête2 : Valeur2
En-tête3 : Valeur3
les données du corps vont ici...Veuillez noter encore une fois que le type de données du Body est déterminé par l'en-tête Content-Type. S'il s'agit d'une page Web, le Body est du texte. S'il s'agit d'une image, le Body est les données binaires de l'image.
Lorsque Content-Encoding existe, les données Body sont compressées. La méthode de compression la plus courante est gzip. Par conséquent, lorsque vous voyez Content-Encoding : gzip, vous devez d'abord décompresser les données Body pour obtenir les données réelles. Le but de la compression est de réduire la taille du corps et d'accélérer la transmission sur le réseau.
4Serveur statique Web1. Afficher la page fixe
import socketimport multiprocessingimport osimport timedef serverHandler(clientSocket, clientAddr):'与请求的客户端进行交互'# 接收客户端发来的消息 recvData = clientSocket.recv(1024).decode('utf-8') print(recvData)# 服务端向客户端发消息,作为响应 responseLine = 'HTTP/1.1 200 OK' + os.linesep responseHeader = 'Server: laowang' + os.linesep responseHeader += 'Date: %s' % time.ctime() + os.linesep responseBody = '差一点一米八' sendData = (responseLine + responseHeader + os.linesep + responseBody).encode('gbk') clientSocket.send(sendData)# 关闭 clientSocket.close()def main():'程序入口'# socket对象 serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定的端口号,可以重复使用端口号#serverSocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)# 绑定 serverSocket.bind(('', 8000))# 监听 serverSocket.listen()while True:# 接收 clientSocket, clientAddr = serverSocket.accept() print(clientSocket)# 开一个新的进程,执行交互 multiprocessing.Process(target=serverHandler, args=(clientSocket, clientAddr)).start()# 关闭客户端对象 clientSocket.close()if __name__ == '__main__': main()

2. Afficher la page requise
import time,multiprocessing,socket,os,re G_PATH = './html' def serveHandler(clientSocket,clientAddr): recvData = clientSocket.recv(1024).decode('gbk') lineFirst = recvData.splitlines()[0] strFirst = re.split(r' +',lineFirst) fileName = strFirst[1] filePath = G_PATHif '/'== fileName: filePath += './index.html'else: filePath += fileNametry:file = Nonefile =open(filePath,'r',encoding='gbk') responseBody = file.read() responseLine = 'HTTP/1.1 200 OK' + os.linesep responseHeader = 'Server: ererbai' + os.linesep responseHeader += 'Date:%s' % time.ctime() + os.linesep except FileNotFoundError: responseLine = 'HTTP/1.1 404 NOT FOUND' + os.linesep responseHeader = 'Server: ererbai' + os.linesep responseHeader += 'Date:%s' % time.ctime() + os.linesep responseBody = '很抱歉,服务器中找不到你想要的内容' except Exception: responseLine = 'HTTP/1.1 500 ERROR' + os.linesep responseHeader = 'Server: ererbai' + os.linesep responseHeader += 'Date: %s' % time.ctime() + os.linesep responseBody = '服务器正在维护中,请稍后再试。'finally:if file!=None and not file.closed:file.close() senData = (responseLine + responseHeader + os.linesep + responseBody).encode('gbk') clientSocket.send(senData) clientSocket.close() def main(): serveSocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) serveSocket.bind(('',8000)) serveSocket.listen()while True: clientSocket,clientAddr = serveSocket.accept() print(clientSocket) multiprocessing.Process(target=serveHandler,args=(clientSocket,clientAddr)).start() clientSocket.close()if __name__ == '__main__': main()



Si vous rencontrez des problèmes pendant le processus d'apprentissage ou si vous souhaitez obtenir des ressources d'apprentissage, vous êtes invités à rejoindre le groupe d'échange d'apprentissage
343599877, apprenons ensemble le front-end !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution : 1. Vérifiez les paramètres d'eMule pour vous assurer que vous avez entré l'adresse du serveur et le numéro de port corrects ; 2. Vérifiez la connexion réseau, assurez-vous que l'ordinateur est connecté à Internet et réinitialisez le routeur ; est en ligne. Si vos paramètres sont S'il n'y a pas de problème avec la connexion réseau, vous devez vérifier si le serveur est en ligne ; 4. Mettez à jour la version d'eMule, visitez le site officiel d'eMule et téléchargez la dernière version du logiciel eMule ; 5. Demandez de l'aide.

Que dois-je faire si le serveur RPC est indisponible et n'est pas accessible sur le bureau Ces dernières années, les ordinateurs et Internet ont pénétré tous les recoins de nos vies. En tant que technologie de calcul centralisé et de partage de ressources, l'appel de procédure à distance (RPC) joue un rôle essentiel dans la communication réseau. Cependant, nous pouvons parfois rencontrer une situation dans laquelle le serveur RPC n'est pas disponible, ce qui entraîne l'impossibilité d'accéder au bureau. Cet article décrit certaines des causes possibles de ce problème et propose des solutions. Tout d’abord, nous devons comprendre pourquoi le serveur RPC n’est pas disponible. Le serveur RPC est un

En tant qu'utilisateur LINUX, nous devons souvent installer divers logiciels et serveurs sur CentOS. Cet article présentera en détail comment installer Fuse et configurer un serveur sur CentOS pour vous aider à effectuer les opérations associées en douceur. Installation de CentOS fuseFuse est un cadre de système de fichiers en espace utilisateur qui permet aux utilisateurs non privilégiés d'accéder et de faire fonctionner le système de fichiers via un système de fichiers personnalisé. L'installation de Fuse sur CentOS est très simple, suivez simplement les étapes suivantes : 1. Ouvrez le terminal et connectez-vous en tant que. utilisateur root. 2. Utilisez la commande suivante pour installer le package fuse : ```yuminstallfuse3. Confirmez les invites pendant le processus d'installation et entrez `y` pour continuer. 4. Installation terminée

Le rôle d'un relais DHCP est de transmettre les paquets DHCP reçus vers un autre serveur DHCP du réseau, même si les deux serveurs se trouvent sur des sous-réseaux différents. En utilisant un relais DHCP, vous pouvez déployer un serveur DHCP centralisé dans le centre réseau et l'utiliser pour attribuer dynamiquement des adresses IP à tous les sous-réseaux/VLAN du réseau. Dnsmasq est un serveur de protocole DNS et DHCP couramment utilisé qui peut être configuré en tant que serveur relais DHCP pour faciliter la gestion des configurations d'hôtes dynamiques sur le réseau. Dans cet article, nous allons vous montrer comment configurer Dnsmasq comme serveur relais DHCP. Sujets de contenu : Topologie du réseau Configuration d'adresses IP statiques sur un relais DHCP D sur un serveur DHCP centralisé

Dans la transmission de données sur réseau, les serveurs proxy IP jouent un rôle important, aidant les utilisateurs à masquer leurs véritables adresses IP, à protéger la confidentialité et à améliorer la vitesse d'accès. Dans cet article, nous présenterons le guide des meilleures pratiques sur la façon de créer un serveur proxy IP avec PHP et fournirons des exemples de code spécifiques. Qu'est-ce qu'un serveur proxy IP ? Un serveur proxy IP est un serveur intermédiaire situé entre l'utilisateur et le serveur cible. Il agit comme une station de transfert entre l'utilisateur et le serveur cible, transmettant les demandes et les réponses de l'utilisateur. En utilisant un serveur proxy IP

Que dois-je faire si je ne peux pas accéder au jeu lorsque le serveur Epic est hors ligne ? Ce problème a dû être rencontré par de nombreux amis. Lorsque cette invite apparaît, le jeu authentique ne peut pas être démarré. Ce problème est généralement dû à des interférences du réseau et du logiciel de sécurité. Alors, comment doit-il être résolu ? J'aimerais partager la solution avec vous, j'espère que le didacticiel logiciel d'aujourd'hui pourra vous aider à résoudre le problème. Que faire si le serveur Epic ne peut pas accéder au jeu lorsqu'il est hors ligne : 1. Il peut être interféré par un logiciel de sécurité. Fermez la plateforme de jeu et le logiciel de sécurité, puis redémarrez. 2. La seconde est que le réseau fluctue trop. Essayez de redémarrer le routeur pour voir s'il fonctionne. Si les conditions sont correctes, vous pouvez essayer d'utiliser le réseau mobile 5g pour fonctionner. 3. Alors il y en aura peut-être plus

Comment installer l’extension PHPFFmpeg sur le serveur ? L'installation de l'extension PHPFFmpeg sur le serveur peut nous aider à traiter les fichiers audio et vidéo dans les projets PHP et à implémenter des fonctions telles que l'encodage, le décodage, l'édition et le traitement des fichiers audio et vidéo. Cet article explique comment installer l'extension PHPFFmpeg sur le serveur, ainsi que des exemples de code spécifiques. Tout d’abord, nous devons nous assurer que PHP et FFmpeg sont installés sur le serveur. Si FFmpeg n'est pas installé, vous pouvez suivre les étapes ci-dessous pour installer FFmpe

Cockpit est une interface graphique Web pour les serveurs Linux. Il est principalement destiné à faciliter la gestion des serveurs Linux pour les utilisateurs nouveaux/experts. Dans cet article, nous aborderons les modes d'accès à Cockpit et comment basculer l'accès administratif à Cockpit depuis CockpitWebUI. Sujets de contenu : Modes d'entrée du cockpit Trouver le mode d'accès actuel au cockpit Activer l'accès administratif au cockpit à partir de CockpitWebUI Désactiver l'accès administratif au cockpit à partir de CockpitWebUI Conclusion Modes d'entrée au cockpit Le cockpit dispose de deux modes d'accès : Accès restreint : il s'agit de la valeur par défaut pour le mode d'accès au cockpit. Dans ce mode d'accès vous ne pouvez pas accéder à l'internaute depuis le cockpit
