HTTP 简明基础知识

本文涉及的产品
.cn 域名,1个 12个月
简介: HTTP超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。

HTTP超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。它是一个客户端和服务器端请求和应答的标准(TCP)。 客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求,服务器端响应报文的过程。本文简要描述http以及web网站的一些基础知识供大家参考。

一、什么是http

http,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
    HTTP是一个客户端和服务器端请求和应答的标准(TCP)。客户端是终端用户,服务器端是网站。
    客户端(user agent)通过使用Web浏览器、网络爬虫等工具,发起一个到服务器上指定端口(默认端口为80)的HTTP请求。
    应答的服务器上存储着(一些)资源,比如HTML文件和图像,(我们称)这个应答服务器为源服务器(origin server)。

    通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。
    HTTP服务器则在那个端口监听客户端发送过来的请求。
    一旦收到请求,服务器(向客户端)发回一个状态行,比如"HTTP/1.1 200 OK",和(响应的)消息等。
    消息的消息体可能是请求的文件、错误消息、或者其它一些信息。

二、http协议版本

0.9:已过时,只接受 GET 一种请求。
1.0:第一个在通讯中指定版本号的HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。
1.1:当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。
    支持以管道方式同时发送多个请求,以便降低线路负载,提高传输速度。

三、http相关概念

html:
        超文本标记语言,“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。
    url:
        统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。
        互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
        常用的表示方法:协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志
        url最常用协议即是http,其他协议如,httpsftp,mailto,ldap,file,news,gopher,telnet等
    uri:
        统一资源标识符,是一个用于标识某一互联网资源名称的字符串。常见的格式为,协议名称://域名.根域名/目录/文件名.后缀 
        该标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。
        uri示例,http://www.baidu.com/photo/abc.gif
            这个示例中是一个使用了http协议的资源,位于服务器www.baidu.com上
            通过uri中的字符串/photo访问服务器上的photo文件夹下的abc.gif文件
    urn:
        Uniform Resource Name,统一资源名称。url,urn是uri的子集。

四、web资源

存放在Internet网上供外界访问的文件或程序,又根据它们呈现的效果及原理不同,将它们划分为静态资源和动态资源。
    静态资源:
        浏览器能够直接打开的,如一个js文件,浏览器可以直接打开没有出现问题,那么就说明它是一个静态资源。
        如,html文件、css文件、js文件等它们都是静态资源。
    动态资源:
        浏览器不能够直接打开,但是经过翻译之后浏览器能够打开的资源称之动态资源。
        比如说jsp文件、servlet、php、ASP等这些都是动态资源。
    差别:
        浏览器访问静态资源,服务器会直接响应给浏览器;
        若浏览器访问的是动态资源,服务器先将动态资源翻译或转换成静态资源,然后再响应给浏览器
    web资源类型:
        html        text/html类型
        txt         text/plain类型
        jpeg        image/jpeg类型
        gif         image/gif类型 
        mov,flv     视频资源类型

五、http报文

请求报文语法格式
        起始行 :<方法>  <URL>  <协议版本>
        请求首部 :headers
        主体 :请求的内容(包含客户端请求服务器的数据)
    方法:客户端希望服务器端对资源执行的动作
        GET:从服务器获取一份web资源,需要服务器发送
        HEAD:只从服务器获取文档的首部
        POST:向服务器发送需要处理的数据(一般是表单提交)
        PUT:与GET相反,向服务器发送资源;服务器通常需要存储此资源(位置:通常为文件系统)
        DELETE:删除URL指向的资源
        OPTIONS:探测服务器端对请求的URL所支持使用的请求方法
        TRACE:跟一次请求中间所经过的代理服务器、防火墙或网关
    通用首部:在报文中添加的附加信息,用于描述主体
        Connection: 定义C/S之间关于请求、响应的有关选项
        Connection: keep-alive
        Cache-Control: 缓存控制
        Via: 显示了报文经过的中间节点

    请求首部:
        Client-IP:客户端IP
        Host: 请求的主机
        Referer: 指明了请求当前资源原始资源的URL
        User-Agent: 用户代理
        Accept首部:
        Accept: 指明服务器能发送的媒体类型
        Accept-Charset: 支持使用的字符集
        Accept-Encoding: 支持使用的编码方式
        Accept-Language: 支持使用语言
        条件式请求:
        Expect: 告诉服务器能够发送哪些媒体类型
        If-Modified-Since: 是否在指定时间内修改过此资源
        If-None-Match:如果提供的实体标记与当前文档的实体标记不符,就获取此文档
        跟安全相关请求:
        Authorization: 客户端提交给服务器的认证数据,如帐号和密码
        Cookie: 客户端发送给服务器身份标识

    响应报文的语法格式
        起始行 :<协议版本>  <响应状态码>  <原因短语>
        响应首部:headers
        主体:响应的内容

    响应状态码
        100-199   信息提示
        200-299   成功状态码
        300-399   重定向
        400-499   客户端错误
        500-599   服务器错误
        401:认证失败
        404:找不到请求的资源
        403:对资源没有访问权限

    响应首部
        Date:消息产生的时间
        Age: 响应持续时间
        Server: 向客户端说明自己的程序名称和版本
        ETage:不透明验证者
        Location:URL备用的位置
        Content-Length:实体的长度
        Content-Tyep:实体的媒体类型
        协商首部:
        ary: 首部列表,服务器会根据列表中的内容挑一个最适用的版本发送给客户端
        Accept-Ranges: 对当前资源来讲,服务器所能够接受的范围类型
        跟安全相关:
        WWW-Authentication:质询,即要求客户提供帐号和密码
        Set-Cookie:服务器端在某客户端第一次请求时发送令牌

六、http交互过程(http/web事务)

这里写图片描述

一次Web请求响应的交互过程 (服务器的具体工作细节)
1、建立连接:接收客户端连接请求;
2、接收请求:从来自于网络的请求报文请求一次特定的资源请求;
   连接的输入/输出处理结构:
   单进程web服务器:启动一个进程接收请求,而且一次只处理一个请求;当处理结束后再接收并处理后续的请求;
   多进程web服务器:
       启动多个进程,每个进程处理一个请求,每来一个请求生成一个进程;
       属于预生成模型,事先生成多个空闲子进程;进程池(线程池);
   复用I/O的web服务器:一个进程响应多个请求;基于事件驱动模式实现;
   复用I/O的多线程web服务器:一个进程响应n个请求;启动m个进程;同时能处理的请求数:n*m

3、处理请求:对请求报文进程解析,获知请求资源等信息;
    根据请求文的首部来判定用户请求的资源;
        有许多详细信息:HEADER
            host: www.baidu.com
            url: /images/logo.jpg
            method: get

4、访问资源:获取报文中指定请求的资源;
    web服务器即web资源服务器,负责发送预先创建好的或动态生成的内容;此些的放置位置称为docroot;
        /var/www/html/a.html
        docroot = /var/www/html
        /var/www/html/imags/jpgs/a.jpg
        http://www.baidu.com/imags/jpgs/a.jpg

    web服务器支持多种资源映射方式:(将文件系统路径和URL路径进行映射)
        (1) docroot
        (2) virtualhost docroot
        (3) user home docroot
        (4) alias

        注意:访问控制机制有可能会影响资源的访问权限;

5、构建响应报文:

6、发送响应报文:
    长连接:keep-alive
    短连接

7、记录日志

七、http 无状态

http无状态:
是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。其次随着客户端与服务器进行动态交互的Web应用程序的出现,如购物车程序需要知道用户到底在之前选择了什么商品,则需要解决无状态的问题。为支持客户端与服务器之间的交互,需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。

Cookie解决方案:
通过客户端保持状态,该方式将服务器发给客户端的特殊信息,以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。当用户连接到支持cookie的网站时,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息。如登陆购物添加到购物车以及登陆时是否保存密码等都是通过将信息保存到Cookie是产生的作用。

Session解决方案:
当客户端访问服务器时,服务器根据需求设置Session,将会话信息保存在服务器上,同时将标示Session的SessionId传递给客户端浏览器。浏览器将这个 SessionId 保存在内存中,我们称之为无过期时间的 Cookie。浏览器关闭后,这个 Cookie 就会被清掉,它不会存在于用户的 Cookie 临时文件。以后浏览器每次请求都会额外加上这个参数值,服务器会根据这个 SessionId,就能取得客户端的数据信息。如果客户端浏览器意外关闭,服务器保存的 Session 数据不是立即释放,此时数据还会存在,只要我们知道那个SessionId,就可以继续通过请求获得此Session 的信息。因为此时后台的 Session 还存在,当然我们可以设置一个 Session 超时时间,一旦超过规定时间没有客户端请求时,服务器就会清除对应 SessionId 的 Session 信息。

目录
相关文章
|
网络协议
深入理解HTTP的基础知识:请求-响应过程解析
在当今数字化的世界中,理解HTTP协议的基础知识变得至关重要。本文将带您深入探索HTTP的核心概念和请求-响应的过程。HTTP是一种用于在计算机之间传输超文本数据的协议,它不仅定义了数据交换的规则和格式,还为不同的应用程序提供了通信和交换信息的能力。通过深入了解HTTP的请求-响应过程,我们将更好地理解网络通信的基本原理,为构建和优化网络应用打下坚实的基础。
895 2
|
7月前
|
JSON 网络协议 安全
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
【2月更文挑战第3天】《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
150 0
|
5月前
|
JSON 网络协议 安全
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
【7月更文挑战第16天】本文介绍了HTTP和HTTPS协议的基本概念与作用,强调了理解HTTP协议对使用抓包工具Fiddler的重要性。HTTP是用于Web浏览器与服务器间信息传输的协议,不加密,易被截取,不适合传输敏感信息。HTTPS是HTTP的安全版,通过SSL/TLS提供加密和服务器身份验证,确保数据安全。HTTP请求包括请求行、请求头、空行和可选的请求主体,响应则有响应行、响应头、空行和响应主体。HTTP协议无状态,而HTTPS解决了安全性问题,但也带来了额外的计算开销。Fiddler作为一个强大的抓包工具,可以帮助开发者和测试人员分析HTTP/HTTPS通信,理解请求和响应的结构。
86 4
《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(1)-HTTP和HTTPS基础知识
|
6月前
|
缓存 网络协议 安全
【常见开源库的二次开发】HTTP之libcurl库——基础知识扫盲(一)
【常见开源库的二次开发】HTTP之libcurl库——基础知识扫盲(一)
98 1
|
7月前
|
安全 网络协议 网络安全
HTTPS基础知识
【5月更文挑战第7天】HTTPS并非是应用层的一种新协议。只是HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替而已。
|
7月前
|
Web App开发 存储 物联网
一文了解 HTTP 基础知识
HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输数据的一种协议,对于网络开发人员来说,理解这一协议是至关重要的。由于其广泛的应用,除了在网页应用传输数据之外,它还被应用于物联网(IoT)中的数据和命令传输。
|
存储 缓存 前端开发
【计算机网络】HTTP/HTTPS协议基础知识汇总
【计算机网络】HTTP/HTTPS协议基础知识汇总
321 1
|
域名解析 Web App开发 存储
HTTP的基础知识和DNS的解析过程
我们都知道现在大部分的B/S 系统。其核心的通讯协议还是 TCP/IP 协议,应用层的话就是HTTP 协议,我们最常的打交到的就是HTTP协议了。所以了解HTTP协议的相关知识显得尤为重要。
2098 0
HTTP的基础知识和DNS的解析过程
|
域名解析 网络协议 大数据
小白必须掌握的几点HTTP协议的基础知识,建议收藏
1.TCP/IP的分层管理 TCP/IP协议族里重要的一点就是分层。TCP/IP协议族按层次分别分为以下4层:应用层、传输层、网络层和数据链路层 应用层: 应用层决定了向用户提供应用服务时通信的活动。 TCP/IP协议族内预存了各类通用的应用服务。比如,FTP(文件传输协议)和DNS(域名系统)服务就是其中两类。HTTP协议也处于该层。
149 1
小白必须掌握的几点HTTP协议的基础知识,建议收藏
|
JSON 前端开发 JavaScript
JavaScript基础知识之脚本化HTTP
JavaScript------脚本化HTTP
128 0