万维网与HTTP协议基础解析

需积分: 0 0 下载量 12 浏览量 更新于2024-08-05 收藏 697KB PDF 举报
"Ch6_万维网和HTTP协议1" 本文将深入探讨万维网(World Wide Web,简称WWW)和超文本传输协议(HTTP)。万维网是互联网上的一种主要应用,它允许用户通过浏览器访问和交互各种多媒体内容。而HTTP是万维网数据通信的核心协议,用于在客户端(如浏览器)和服务器之间交换信息。 首先,我们来看一下URL(统一资源定位符),它是访问网络资源的唯一标识。一个标准的URL通常由协议类型(如http、https、ftp等)、主机名(例如www.pku.edu.cn)、端口号(默认情况下,HTTP的端口是80,HTTPS是443)和路径组成。例如,"http://www.baidu.com"就是一个简单的URL,表明我们要使用HTTP协议访问百度网站的主页。 HTTP协议是基于TCP/IP协议栈的应用层协议,它定义了客户端和服务器之间的通信格式。HTTP请求由一系列的报文组成,包括请求行(包含方法如GET、POST、PUT等,URL和HTTP版本号)、请求头、空行以及可能的请求体。响应则包含状态行(HTTP版本号、状态码和状态消息)、响应头、空行和响应体。例如,状态码1xx表示信息响应,2xx表示成功,3xx表示重定向,4xx表示客户端错误,5xx表示服务器错误。 HTTP协议有两种连接模式:短连接(Close)和长连接(Keep-alive)。短连接在每次请求完成后就关闭,而长连接允许在一次TCP连接中发送多个HTTP请求和响应,以减少建立和关闭连接的开销。HTTP/1.1默认采用长连接,但可以通过设置Connection头来指定连接类型。 HTTP协议的版本发展也值得一提,HTTP/1.0是早期版本,而HTTP/1.1引入了更多改进,如管道化、Host头、分块编码等。随着互联网的发展,HTTP/2和HTTP/3应运而生,它们旨在提高性能和效率,比如HTTP/2通过多路复用解决了头部阻塞问题,HTTP/3则采用了QUIC协议以降低网络延迟。 此外,HTTP协议还涉及到Cookie技术,用于在客户端和服务器之间保持会话状态。服务器可以设置Cookie,将其包含在响应头中,客户端在后续请求中会携带这些Cookie信息,从而实现状态追踪。 万维网和HTTP协议是现代互联网不可或缺的部分,它们为我们提供了便捷的信息获取和交互方式。理解其工作原理对于从事IT行业的人员来说至关重要,无论是开发网页应用、网络编程还是网络安全分析,都需要对这些基础知识有深入的了解。

uint32 bluetooth_ch9141_read_buff (uint8 *buff, uint32 len) { uint32 data_l = len; fifo_read_buffer(&bluetooth_ch9141_fifo, buff, &data_l, FIFO_READ_AND_CLEAN); return data_l; }uint32 bluetooth_ch9141_send_buff (uint8 *buff, uint32 len) { uint16 time_count = 0; while(len > 30) { time_count = 0; while(BLUETOOTH_CH9141_RTS_PIN && time_count++ < BLUETOOTH_CH9141_TIMEOUT_COUNT) // 如果RTS为低电平,则继续发送数据 delay_ms(1); if(time_count >= BLUETOOTH_CH9141_TIMEOUT_COUNT) return len; // 模块忙,如果允许当前程序使用while等待 则可以使用后面注释的while等待语句替换本if语句 uart_putbuff(BLUETOOTH_CH9141_INDEX, buff, 30); buff += 30; // 地址偏移 len -= 30; // 数量 } time_count = 0; while(BLUETOOTH_CH9141_RTS_PIN && time_count++ < BLUETOOTH_CH9141_TIMEOUT_COUNT) // 如果RTS为低电平,则继续发送数据 delay_ms(1); if(time_count >= BLUETOOTH_CH9141_TIMEOUT_COUNT) return len; // 模块忙,如果允许当前程序使用while等待 则可以使用后面注释的while等待语句替换本if语句 uart_putbuff(BLUETOOTH_CH9141_INDEX, buff, (uint16)len); // 发送最后的数据 return 0; }uint8 bluetooth_ch9141_init (void) { wireless_type = WIRELESS_CH9141; // 本函数使用的波特率为115200 为蓝牙转串口模块的默认波特率 如需其他波特率请使用上位机修改模块参数 fifo_init(&bluetooth_ch9141_fifo, bluetooth_ch9141_buffer, BLUETOOTH_CH9141_BUFFER_SIZE); uart_init(BLUETOOTH_CH9141_INDEX, BLUETOOTH_CH9141_TX_PIN, BLUETOOTH_CH9141_RX_PIN, BLUETOOTH_CH9141_BUAD_RATE, BLUETOOTH_CH9141_TIMER); return 0; }void bluetooth_ch9141_uart_callback (void) { // 读取无线串口的数据 并且置位接收标志 bluetooth_ch9141_data = BLUETOOTH_CH9141_DATA_BUF; fifo_write_buffer(&bluetooth_ch9141_fifo, &bluetooth_ch9141_data, 1); // 存入 FIFO }static fifo_struct bluetooth_ch9141_fifo; static uint8 bluetooth_ch9141_buffer[BLUETOOTH_CH9141_BUFFER_SIZE]; // 数据存放数组 static uint8 bluetooth_ch9141_data;为我设置参数让这些函数可以让HC-05蓝牙工作

2023-07-14 上传
2023-07-10 上传