【WiFi】HTTP1.0、1.1、2和HTTPS

基础知识

  1. HTTP/1.0
    默认是短连接;

  2. HTTP/1.1
    默认是长连接,(如果阻塞了,还是会开新的TCP连接的)
    可以不等响应,继续请求;接收还是按照发送的顺序来的(提出了管线化(pipelining)理论)

  3. HTTP/2
    HTTP/2详解
    解决了线头阻塞的问题;
    在这里插入图片描述

  4. HTTPS
    HTTP与HTTPS的区别

TCP数据包模拟HTTP/1.1

OTA也是采用这种,读取到的数据,存储到flash中,然后在进行升级,细节根据不同硬件平台做处理

端口:80

  1. 先通过域名解析,获取IP地址

    //DNS域名解析
    int err = getaddrinfo(WEB_SERVER, WEB_PORT, &hints, &res);//域名,端口,TCP设置,返回的地址信息
    
  2. 创建TCP、socket

  3. 按照HTTP协议格式发送请求
    在这里插入图片描述

    //http请求包
    static const char *REQUEST = "GET "WEB_URL" HTTP/1.1\r\n"
        "Host: "WEB_SERVER"\r\n"
        "\r\n";
    
  4. 接收返回数据

  5. json解析

HTTP/2

在实际应用中,改动不是很大,主要是底层协议上的修改
后续具体在分析

/* The HTTP/2 server to connect to */
#define HTTP2_SERVER_URI  "https://http2.golang.org"
/* A GET request that keeps streaming current time every second */
#define HTTP2_STREAMING_GET_PATH  "/clockstream"
/* A PUT request that echoes whatever we had sent to it */
#define HTTP2_PUT_PATH            "/ECHO"


/* Set current time: proper system time is required for TLS based
     * certificate verification.
     */
    set_time();

    /* HTTP2: one connection multiple requests. Do the TLS/TCP connection first */
    printf("Connecting to server\n");
    struct sh2lib_handle hd;
    if (sh2lib_connect(&hd, HTTP2_SERVER_URI) != 0) //解析url,获取IP地址和接口,并连接
    {
        printf("Failed to connect\n");
        return;
    }
    printf("Connection done\n");

    /* HTTP GET  */
    sh2lib_do_get(&hd, HTTP2_STREAMING_GET_PATH, handle_get_response);

    /* HTTP PUT  */
    sh2lib_do_put(&hd, HTTP2_PUT_PATH, send_put_data, handle_echo_response);

    while (1) {
        /* Process HTTP2 send/receive */
        if (sh2lib_execute(&hd) < 0) {
            printf("Error in send/receive\n");
            break;
        }
        vTaskDelay(2);
    }

    sh2lib_free(&hd);

HTTPS

说到这里就要提到SSL和TSL

  • SSL:(Secure Socket Layer,安全套接字层),位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。该协议由两层组成:SSL记录协议和SSL握手协议。

  • TLS:(Transport LayerSecurity,传输层安全协议),用于两个应用程序之间提供保密性和数据完整性。该协议由两层组成:TLS记录协议和TLS握手协议。

SSL是Netscape开发的专门用户保护Web通讯的,目前版本为3.0。最新版本的TLS
1.0是IETF(工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。两者差别极小,可以理解为SSL 3.1,它是写入了RFC的。

端口:443

具体代码看mbedtls

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值