美文网首页
网络传输-http

网络传输-http

作者: Gaizka | 来源:发表于2019-05-22 11:20 被阅读0次

    1. HTTP简介

    HTTP是应用层协议的一种,超文本传输协议。

    2. HTTP传输模型

    image.png

    3. HTTP协议栈中各层数据流

    首先我们看看客户端请求的时候,数据在各层协议的数据组织如下图:

    image.png

    而服务器解析客户机请求就是反向操作的过程,如下图:

    image.png

    4. HTTP请求报文

    image.png

    5. HTTP响应

    image.png

    6. HTTP 的建立连接过程,由于它是基于TCP协议的,只有TCP连接完成,它才可以进行数据传输,TCP的协议就是HTPP 的建立连接过程:

    image.png

    6.1 为什么要三次握手?

    防止客户端是失效的连接请求到达服务器导致网络错乱问题:例如客户端向服务器请求连接,由于网络缓慢问题导致该请求滞留在某个路由节点,这是客户端做了超时处理,但是此时该请求到了服务端,服务端还是认为客户端需要进行连接,那么它会将客户端发送确认连接响应,并且进如SYN_RECEV状态,由于客户端一直没有回复确认连接,服务器会一直处于等待状态,从而导致了资源浪费。

    7. HTTP请求报文

    image.png

    请求报文包括请求头、请求头、请求数据

    7.1 请求头

    请求方法

    HTTP/1.1 定义的请求方法有8种:GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS、TRACE。
    最常的两种GET和POST,如果是RESTful接口的话一般会用到GET、POST、DELETE、PUT。

    请求地址

    URL:统一资源定位符,是一种自愿位置的抽象唯一识别方法。
    组成:<协议>://<主机>:<端口>/<路径>
    端口和路径有时可以省略(HTTP默认端口号是80)

    7.2 请求头

    image.png

    7.3 请求数据 可选部分,比如GET请求就没有。

    8. HTTP响应报文

    image.png

    响应报文包括: 状态行(状态码 协议版本 状态吗描述信息)、响应头部、响应数据

    8.1 状态行

    1xx:指示信息--表示请求已接收,继续处理。
    2xx:成功--表示请求已被成功接收、理解、接受。
    3xx:重定向--要完成请求必须进行更进一步的操作。
    4xx:客户端错误--请求有语法错误或请求无法实现。
    5xx:服务器端错误--服务器未能实现合法的请求。
    

    8.2 响应头部

    image.png

    8.3 响应数据 可选部分

    9. HTTP 断开

    image.png

    9.1 为什么TCP不是3次分手

    假如client在收到server的FIN请求段后直接close,那么服务器会做超时处理重发FIN数据段,这是client回复的不是ACK=1,ack=seq(server的序列号)+1, 而是给server回复了RST=1数据段,那么server认为是数据错误,从而向上层报错,但是这样的跟TCP是可靠连接的概念是相悖的,所以在收到server端的FIN数据段后自己也要回复ACK确认数据段,并且进入TIME_WAIT状态等待2MSL后如果没有消息就进入close 状态。

    相关文章

      网友评论

          本文标题:网络传输-http

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