[Jiwang] Explication détaillée du protocole HTTP

1. Aperçu HTTP

Le nom complet de HTTP est Hyper Text Transfer Protocol. Il s'agit d'un simple protocole de requête-réponse, qui est un protocole de couche application et est basé sur le protocole TCP. Il spécifie le type de messages que le client peut envoyer au serveur et le type de réponse qu'il reçoit. Tous les serveurs www sont basés sur ce protocole.

2. Flux de travail des requêtes HTTP

La septième couche du modèle OSI où fonctionne le protocole HTTP est la couche d'application la plus élevée. Une application importante du protocole HTTP est le service www. Voici le workflow de requête du protocole HTTP.

(1)用户在浏览器输入访问地址:http://www.baidu.com

(2)浏览器请求DNS进行域名解析,从而得到域名对应的IP地址

(3)浏览器将端口号(默认80)从访问地址中解析出来

(4)浏览器通过解析出来的IP和端口号与服务器之间进行tcp三次握手建立一条可靠的tcp连接

(5)三次握手建立好tcp连接后,浏览器向服务器发送一条http请求报文

(6)服务器响应并读取浏览器的请求信息,然后返回响应报文

(7)服务器关闭http连接,关闭tcp连接,浏览器显示访问内容到网页上
3. Format du message de requête HTTP

Insérer la description de l'image ici
Un exemple est le suivant :
Insérer la description de l'image ici
Ligne de demande : Décrit la méthode de demande, l'URL de la demande, le protocole HTTP et la version.
En-têtes de demande (en-têtes de message, en-têtes de demande) : Décrit qui envoie la demande, d'où vient la demande, ou les préférences et capacités du client. . Le serveur peut essayer de fournir une meilleure réponse au client en fonction des informations client fournies dans l'en-tête de la requête. Le format des informations dans l'en-tête de la requête est clé : valeur.
Corps de la requête (corps du message, données de la requête) : les données transmises par le client au serveur.

4. Format des URL

URL (Uniform Resource Locator), Uniform Resource Locator. Chaque fichier sur Internet possède une URL unique. Les informations qu'il contient indiquent l'emplacement du fichier et la manière dont le navigateur doit le gérer.
Insérer la description de l'image ici
Le format spécifique de l'URL :

1、资源在哪台主机上——域名(dormain)或者ip来体现主机(host)
2、和主机上的哪个进程去获取资源——端口(port)
3、具体定位到是该进程管理的哪个资源——资源路径/路径(path)
4、URL设计之初,不仅仅为HTTP协议使用。所以需要表示出本次资源对应的协议(protocol/schema)
5、针对本次请求,除了资源本身之外的特殊要求。(查询字符串 query string、文档片段fragment)
5. Méthode de demande
Méthode de demande illustrer
OBTENIR Effectue une demande « show » à la ressource spécifiée. Dans une requête GET, les données transmises dans la requête sont incluses dans l'URL et affichées dans la barre d'adresse du navigateur. Lors de la transmission de données dans une requête GET, les données doivent être des caractères ASCII. Les requêtes GET peuvent être mises en cache par les navigateurs.
POSTE Soumettez les données à la ressource spécifiée et demandez au serveur de les traiter (par exemple, soumettre un formulaire ou télécharger un fichier). Les données sont incluses dans le corps de la demande. Lorsque la requête POST transmet des données, les données peuvent être des caractères ASCII ou des données d'octets. La valeur par défaut est le type de caractère. Les requêtes POST ne sont pas mises en cache par les navigateurs par défaut.
TÊTE Demandez au serveur une réponse cohérente avec la requête GET, sauf que le corps de la réponse ne sera pas renvoyé. Cette méthode obtient les métainformations contenues dans l'en-tête du message de réponse sans avoir à transmettre l'intégralité du contenu de la réponse.
METTRE Téléchargez son dernier contenu vers l’emplacement de ressource spécifié.
SUPPRIMER Demandez au serveur de supprimer la ressource représentée par le Request-URI.
TRANSE Requêtes d'écho reçues par le serveur, principalement utilisées à des fins de tests ou de diagnostics.
OPTIONS Fait en sorte que le serveur renvoie toutes les méthodes de requête HTTP prises en charge par la ressource. Utilisez '*' au lieu du nom de la ressource et envoyez une demande d'options au serveur Web pour tester si les fonctions du serveur fonctionnent correctement.
CONNECTER Le protocole HTTP/1.1 est réservé aux serveurs proxy pouvant modifier les connexions aux pipelines. Généralement, le SSL de l'utilisateur crypte la connexion du serveur (via un serveur proxy HTTP non crypté).
6. La différence entre GET et POST (important, souvent demandé lors des entretiens)
OBTENIR POSTE
bouton retour/actualisation inoffensif Les données seront soumises à nouveau (le navigateur doit informer l'utilisateur que les données seront soumises à nouveau)
signet Peut être ajouté à vos favoris Ne peut pas être ajouté aux favoris
cache peut être mis en cache ne peut pas être mis en cache
type de codage Seul l'encodage d'URL est possible (application-x-www-form-urlencoded) Prend en charge plusieurs encodages (multipart/form-data, etc.)
histoire Les paramètres persistent dans l'historique du navigateur Les paramètres ne sont pas conservés dans l'historique du navigateur
Limitations sur la longueur des données Lors de l'envoi de données, la méthode GET ajoute des données à l'URL ; la longueur de l'URL est limitée (la longueur maximale de l'URL est de 2048 caractères) Illimité
Restrictions sur les types de données Seuls les caractères ASCII sont autorisés Les données binaires illimitées sont également autorisées
sécurité* GET est moins sécurisé que POST car les données envoyées font partie de l'URL POST est plus sécurisé que GET car les paramètres ne sont pas enregistrés dans l'historique du navigateur ou dans les journaux du serveur Web.
visibilité Les données sont visibles par tout le monde dans l'URL Les données ne seront pas affichées dans l'URL

* Sécurité : Du point de vue de la transmission, ils sont tous dangereux car HTTP est transmis en texte brut sur le réseau. Tant que le paquet est capturé sur le nœud du réseau, le message de données peut être obtenu dans son intégralité.

7. Attributs courants d'en-tête de message
Champ illustrer Exemple
Accepter Types de contenu de réponse acceptables Accepter : texte/plain (type de texte)
Accepter le jeu de caractères Jeux de caractères acceptables Accepter le jeu de caractères : utf-8
Accepter-Encodage Codage acceptable du contenu de la réponse Accepter l'encodage : gzip, dégonfler
Accepter la langue Liste des langues de contenu de réponse acceptables Accepter-Langue : en-US
Accepter-Datetime Version acceptable du contenu de la réponse exprimée dans le temps Accepter-Datetime:Jeudi 31 mai 2007 20:35:00 GMT
Contrôle du cache Dans la requête/réponse, s'il faut utiliser le mécanisme de mise en cache Cache-Control : pas de cache
Connexion Le type de connexion que le client souhaite utiliser de préférence Connexion : keep-alive Connexion : mise à niveau
Longueur du contenu La longueur du corps de la requête en notation octale Longueur du contenu : 348
Type de contenu Le type MIME du corps de la requête Type de contenu : application/x-www-form-urlencoded
Date La date et l'heure d'envoi du message Date : 26 décembre 2022 17:30:00 GMT
Attendre Indique que le client demande au serveur d'effectuer des actions spécifiques Attendez-vous : 100-continuer
Depuis L'adresse e-mail de l'utilisateur qui a initié cette demande De : [email protected]
Hôte Nom de domaine du serveur et numéro de port, le port par défaut peut être omis Hébergeur : www.itbilu.com:80 ou www.itbilu.com
Si-correspond Principalement utilisé pour PUT, la correspondance d'entités ne peut fonctionner que If-Match: “9jd00cdj34pss9ejqiw39d82f20d0ikd”
If-Modified-Since 资源未被修改的情况下返回304未修改 If-Modified-Since: Dec, 26 Dec 2022 17:30:00 GMT
User-Agent 浏览器的身份标识字符串 User-Agent: Mozilla/
Upgrade 要求服务器升级到一个高版本协议 Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Via 告诉服务器,这个请求是由哪个代理发出的 Via: 1.0 fred, 1.1 itbilu.com.com (Apache/1.1)
Referer 表示跳转到当前页面的之前的页面 Referer: http://itbilu.com/nodejs
Origin 发起一个针对跨域资源共享的请求 Origin: http://www.itbilu.com
8、HTTP状态码分类
分类 分类描述
1XX 信息,服务器收到请求,需要请求者继续执行操作
2XX 成功,操作被成功接收并处理
3XX 重定向,需要进一步的操作以完成请求
4XX 客户端错误,请求包含语法
5XX 服务器错误,服务器在处理请求的过程中发生了错误

常见的状态码及含义

状态码 含义
200 请求成功,已经正常处理完毕
301 请求重定向,转移到其他URL
302 请求临时重定向
304 请求被重定向到客户端本地缓存
400 客户端请求存在语法错误
401 客户端请求没有经过授权
403 客户端的请求被服务器拒绝,一般为客户端没有访问权限
404 资源未找到,客户端请求的URL在服务端不存在
500 服务端出现异常

HTTP状态码列表

状态码 英文名称 中文描述
100 Continue 继续。客户端应继续其请求
101 Switching protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议。
200 OK 请求成功。一般用于GET与POST请求
201 Created 已创建。成功请求并创建了新的资源
202 Accepted 已接受。已经接受请求,但未处理完成。
203 Non-Authoritative Information 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205 Reset Content 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过次返回码清除浏览器的表单域。
206 Partial Content 部分内容。服务器成功处理了部分GET请求。
300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择。
301 Moved Permanently 永久移动。请求的资源已被永久地移动到新URL,返回信息会包括新的URL,浏览器会自动定向到新URL。今后任何新的请求都应使用新的URL代替。
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有的URL。
303 See Other 查看其它地址。与301类似。使用GET和POST请求查看。
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源。
305 Use Proxy 使用代理。所请求的资源必须通过代理访问。
306 Unused 已经被废弃的HTTP状态码
307 Temporary Redirect 临时重定向。与302类似。使用GET请求重定向。
400 Bad Request 客户端请求的语法错误,服务器无法理解。
401 Unauthorized 请求要求用户的身份认证。
402 Payment Required 保留,将来使用。
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求。
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置“您所请求的资源无法找到”的个性页面。
405 Method Not Allowed 客户端请求中的方法被禁止
406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权。
408 Request Time-out 服务器等待客户端发送的请求时间过长,超时
409 Conflict 服务器完成客户端的PUT请求可能返回此代码,服务器处理请求时发生了冲突
410 Gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置。
411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息
412 Precondition Failed 客户端请求信息的先决条件错误
413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息。
414 Request-URL Too Large 请求的URL过程(URL通常为网址),服务器无法处理
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
416 Requested range not satisfiable 客户端请求的范围无效
417 Expectation Failed 服务器无法满足Expect的请求头信息
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 服务器不支持请求的功能,无法完成请求
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中。
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理
9、HTTP几个重要概念

连接:Connection
  一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。
  在http1.1,request和reponse头中都有可能出现一个connection的头,此header的含义是当client和server通信时对于长链接如何进行处理。
  在http1.1中,client和server都是默认对方支持长链接的,如果client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close。不论request还是response的header中包含了值为close的connection,都表明当前正在使用的tcp链接在当天请求处理完毕后会被断掉。以后client再进行新的请求时就必须创建新的tcp链接了。

消息:Message
  HTTP通讯的基本单位,包括一个结构化的八元组序列并通过连续传输。

请求:Request
  一个客户端到服务器的请求消息包括应用于资源的方法,资源的标识符和协议的版本号。

响应:Response
  一个服务器返回的信息包括HTTP协议的版本号、请求的状态(例如“成功”或“没找到”)和文档的MIME类型。

实体:Enity
  数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信息中。一个实体包括实体头信息和实体的本身内容。

客户端:Client
  一个为发送请求目的而建立连接的应用程序。

用户代理:User-Agent
  初始化一个请求的客户机,它们是浏览器、编辑器或者其他工具。

代理:Proxy
  一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其他客户机建立请求。请求时通过可能的翻译在内部或经过传递到其它服务器中。一个代理在发送请求信息之前,必须解释并且如果可能重写它。
  代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代理完成的请求。

网关:Gateway
  一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好像对被请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。
  网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP系统中的资源。

通道:Tunnel
  是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP通讯,尽管通道可能是被一个HTTP请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal)必须存在或中介(Intermediary)不能解释中继的通讯时通道被经常使用。


  Cache : stockage local des informations de réponse du cache .

10. Caractéristiques du HTTP

(1) Prise en charge du modèle client/serveur.

(2) Simple et rapide
  Lorsqu'un client demande des services au serveur, il lui suffit de transmettre la méthode et le chemin de la demande. Les méthodes de requête couramment utilisées incluent get, post et head. Chaque méthode spécifie un type différent de contact entre le client et le serveur. En raison de la simplicité du protocole http, la taille du programme du serveur http est petite et la vitesse de communication est très rapide.

(3) http indépendant et flexible
  permet la transmission de tout type d'objet de données.

(4) Aucune connexion
  signifie que chaque connexion est limitée au traitement d’une seule demande. Le serveur traite la demande du client, puis répond et se déconnecte après avoir reçu la réponse. Cette méthode peut gagner du temps de transmission.

(5) Stateless
  http est un protocole sans état. Sans état signifie que le protocole n'a pas de capacité mémoire pour le traitement des transactions. Un inconvénient de cette méthode est que si un traitement ultérieur nécessite l'utilisation d'informations antérieures, celles-ci doivent être retransmises, ce qui entraîne une augmentation de la quantité de données transmises par connexion. L’avantage est que si les connexions ultérieures ne nécessitent pas les informations fournies précédemment, la réponse sera plus rapide. Afin de résoudre les caractéristiques apatrides de http, des technologies de cookies et de sessions sont apparues.

Je suppose que tu aimes

Origine blog.csdn.net/muyiyufei/article/details/128204815
conseillé
Classement