http

作者: simon_李玉兵 | 来源:发表于2018-10-27 11:31 被阅读7次

    网络的基础TCP/IP

    阮一峰--互联网协议入门
    阮一峰--HTTP协议入门

    本人画的图,欢迎围观TCP/IP。转载请告知。

    HTTP请求的格式

    HTTP请求可以划分为四部分,在没有请求参数时,就只有三部分。

    请求行:动词 路径 协议/版本
    首部:key:valuex形式
    空格
    实体

    例如:打开gitbash。使用curl -X POST -d "hhh:xxx" -s -v -- "http://www.baidu.com""的请求。

    > POST / HTTP/1.1
    > Host:www.baidu.com
    > User-Agent: curl/7.60.0
    > Accept: */*
    > Content-Length: 7
    > Content-Type: application/x-www-form-urlencoded
    >
    } [7 bytes data]

    HTTP响应的格式

    协议/版本号 状态码 状态解释
    首部:key:valuex形式
    空格
    实体

    例如:打开gitbash。使用curl -X POST -d "hhh:xxx" -s -v -- "http://www.baidu.com""的响应。

    < HTTP/1.1 302 Found
    < Connection: Keep-Alive
    < Content-Length: 17931
    < Content-Type: text/html
    < Date: Wed, 24 Oct 2018 10:11:13 GMT
    < Etag: "54d9748e-460b"
    < Server: bfe/1.0.8.18
    >
    { [3296 bytes data]

    首部字段

    使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。

    首部字段太多无法显示.............

    各状态码的意义

    状态码告知从服务器端返回的请求结果

    类别 原因短语
    1xx 信息状态码 接收的请求正在处理
    2xx 成功状态码 请求正常处理完毕
    3xx 重定向转台吗 需要进行附加操作以完成请求
    4xx 客户端错误状态码 服务器无法处理请求
    5xx 服务器错误状态码 服务器处理请求出错

    200 ok

    表示从客户端发来的请求在服务器端被正常的处理了

    204 No Content

    代表服务器接收的请求已成功处理,但在返回的响应中不含实体的主体部分。
    比如,当从浏览器发出请求处理后,返回204响应,那么浏览器显示的页面不发生更新。
    一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用

    301 Moved Permanently

    被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。响应将返回新的URI,就是资源的新位置。
    新的永久性的URI应当在响应的Location域中返回,即响应首部location:uri

    302 Found

    要求客户端执行临时重定向,就像是资源临时外出,还是会回来。新的临时性的URI应当在响应的Location域中返回。

    304 Not Modified

    服务器端资源未改变,可直接使用客户端未过期的缓存。

    400 Bad Request

    该状态码表示请求报文中存在语法错误。

    403 Forbidden

    该状态码表明对请求的资源的访问被服务器拒绝了。

    404 Not Found

    该状态码表明服务器上无法找到请求的资源。

    500 Internal Server Error

    该状态码表明服务器端在执行请求时发生了错误。

    HTTP是不保存状态的协议

    HTTP协议自身不对请求和响应之间的通信状态进行保存。协议本身并不保留之前一切的请求或响应报文的信息。
    为了实现期望的保持状态功能,引入了Cookie技术(例如用户登录后的状态)

    持久连接节省通信量

    在HTTP1.0版本中有一个缺点,就是每次TCP连接只能发送一个请求。这在以前可能是够用的。
    但当浏览一个包含多张图片、视频的网页时,每次的请求都会造成无谓的TCP连接和断开。
    为了解决这个问题,HTTP/1.1和一部分HTTP/1.0想出持久连接Connection: keep-alive 。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。
    在HTTP/1.1中,所有的连接默认都是持久连接。

    管线化

    管线化出现后,不用等待响应亦可直接发送下一个请求。

    相关文章

      网友评论

        本文标题:http

        本文链接:https://www.haomeiwen.com/subject/zabnzftx.html