首页 > 其他分享 >http协议

http协议

时间:2022-10-04 16:45:29浏览次数:79  
标签:协议 HTTP 请求 TCP 服务器 http 浏览器 客户端

简介

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)
是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础

概述

HTTP是一个客户端用户和网站请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。应答的服务器上存储着一些资源,比如HTML文件和图像。

步骤

以下是 HTTP 请求/响应的步骤:

  1. 客户端连接到Web服务器
    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。先建立TCP连接

  2. 发送HTTP请求
    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文
    一个请求报文由请求行、请求头部、空行和请求数据4部分组成。

  3. 服务器接受请求并返回HTTP响应
    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。
    一个响应由状态行、响应头部、空行和响应数据4部分组成。

  4. 释放连接TCP连接
    若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive(2,3S左右),则该连接会保持一段时间,在该时间内可以继续接收请求;

  5. 客户端浏览器解析HTML内容
    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。
    然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。
    客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。

在浏览器地址栏键入URL,按下回车之后会经历以下流程

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址;域名解析
  2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接;TCP连接
  3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器;发起HTTP请求
  4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器;HTTP响应
  5. 释放 TCP连接;
  6. 浏览器将该 html 文本并显示内容;

HTTP请求的特点

无状态保存

HTTP协议 自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。

无连接

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
补充:http1.1之后设置为keep alive不再立刻断开tcp连接

cookie

产生原因:http无状态保存的特性
作用:下次客户端访问时会携带cookie进行访问,服务器会知道和上次访问的是同一个服务器

session

产生原因:http无状态保存的特性
保存用户登陆之后的状态,操作,退出登录会消除session
作用:记忆用户的登陆状态

HTTP请求方法

GET:地址栏显示路径,在请求行里
POST:地址栏不显示路径,在请求体中

常见状态码

200 OK //客户端请求成功
302 //重定向
400 Bad Request //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
403 Forbidden //服务器收到请求,但是拒绝提供服务
404 Not Found //请求资源不存在或者输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常、

URL

https://zhihu.com:443/s?q=da&qq=gy

  • https:协议
  • //:层级URL标记符号,固定不变
  • zhihu.com:域名,或者是ip
  • 443:端口号,https默认是443,http默认是80
  • /:目录路径
  • 查询:GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题

http详解

请求头

响应头

标签:协议,HTTP,请求,TCP,服务器,http,浏览器,客户端
From: https://www.cnblogs.com/rabbitmind/p/16753999.html

相关文章

  • TCP协议
    三次握手第一次握手当客户端向服务器发起连接请求时,客户端会发送同步序列标号SYN到服务器,在这里我们设SYN为x,等待服务器确认,这时客户端的状态为SYN_SENT。第二次握手......
  • 彻底搞懂 Http 缓存策略,切记死背概念! 错误点
    https://juejin.cn/post/6907592506779631623 又查了查,似乎是chromium版本更新,把一些策略改了,这里写的一些是老版本的情况 起码在chrome上,有很多地方不对......
  • 讲讲http缓存机制。
    缓存分析:浏览器向服务器发起http请求,服务器响应该请求,在浏览器拿到服务器返回会的数据后,会根据响应报文的http头的缓存标识,决定结果是否缓存,,是则将结果和缓存标识......
  • SAP UI5 OData 请求的自定义 HTTP header 设置方法
    代码如下:oModel.setHeaders({"myHeader1":"value1","myHeader2":"value2"});我们可以先通过如下代码,拿到一个ODataServiceurl对应的ODataModel实例://"ODa......
  • nonebot2 使用 nonebot_plugin_gocqhttp 插件如何升级gocq
    在使用nonebot_plugin_gocqhttp这个插件一段时候后发现需要升级gocq这里给出了升级方法的说明:0.需要下载最新gocqhttp版本1.在nonebot2的accounts文件夹中替换旧的.exe......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践一、实验目的能够运用wireshark对OpenFlow协议数据交互过程进行抓包;能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与机制......
  • 实验3:OpenFlow协议分析实践
    实验3:OpenFlow协议分析实践一、实验目的能够运用wireshark对OpenFlow协议数据交互过程进行抓包;能够借助包解析工具,分析与解释OpenFlow协议的数据包交互过程与机制......
  • CSP模拟练习赛1 https://www.luogu.com.cn/contest/82861#problems
    P1321单词覆盖还原简单思路字符串#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>#include<map>#definelllonglon......
  • java网络编程--2 IP,端口,通信协议,TCP/UDP对比
    java网络编程--2IP,端口,通信协议,TCP/UDP对比1.3、IPip地址:InetAddress唯一定位一台网络上的计算机127.0.0.1:本机localhostIP地址的分类ipv4/ipv6IPV4......
  • 实验3:OpenFlow协议分析实践
    1)hello控制器6633端口(最高支持OpenFlow1.0)-->交换机50822端口交换机50822端口(最高支持OpenFlow1.5)-->控制器6633端口2)FeatureRequest控制器6633端口(需要你的特征......