当前位置: 首页 > news >正文

深入理解万维网:URL、HTTP与HTML

深入理解万维网:URL、HTTP与HTML

  1. 统一资源定位符(URL)

1.1 什么是URL?
统一资源定位符URL(Uniform Resource Locator)是万维网上用于标识和定位各种文档的标准方法,它使每个资源在互联网范围内具有唯一标识。

示例URL:

https://www.makeru.com.cn:443/index.html

1.2 URL语法结构

scheme://host.domain:port/path/filename

• scheme - 定义因特网服务类型

• host - 定义域主机(默认www)

• domain - 定义因特网域名

• port - 定义主机端口号

• path - 定义服务器路径

• filename - 定义资源名称

1.3 常见URL Scheme

Scheme描述用途
http超文本传输协议普通网页,不加密
https安全超文本传输协议加密的安全网页
ftp文件传输协议文件上传下载
file本地文件协议访问本地文件
  1. HTTP与HTTPS协议

2.1 HTTP协议基础
HTTP(Hypertext Transfer Protocol)是用于分布式、协作式超媒体信息系统的应用层协议。

特点:
• 基于TCP/IP通信协议

• 默认端口80

• 无状态协议

• 使用请求-响应模型

2.2 HTTPS协议
HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本:
• 添加SSL/TLS加密层

• 默认端口443

• 提供数据加密、完整性校验和身份验证

2.3 HTTP请求-响应流程

  1. 建立TCP连接

  2. 客户端发送HTTP请求

  3. 服务器处理请求

  4. 服务器返回HTTP响应

  5. 关闭连接(HTTP/1.1默认保持连接)

  6. HTTP消息结构

3.1 HTTP请求消息

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

3.2 HTTP响应消息

HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Content-Type: text/html
Content-Length: 143<!DOCTYPE html>
<html>
...
</html>
  1. HTTP方法
方法描述
GET获取资源
POST提交数据
PUT更新资源
DELETE删除资源
HEAD获取头部信息
OPTIONS查询服务器支持的方法
  1. HTTP状态码

5.1 状态码分类

分类描述
1xx信息响应
2xx成功响应
3xx重定向
4xx客户端错误
5xx服务器错误

5.2 常见状态码

状态码描述
200请求成功
301永久重定向
404资源未找到
500服务器内部错误
  1. HTML基础

6.1 HTML文档结构

<!DOCTYPE html>
<html>
<head><title>页面标题</title>
</head>
<body><h1>我的第一个标题</h1><p>我的第一个段落。</p>
</body>
</html>

6.2 常见HTML元素
<h1>-<h6>:标题

<p>:段落

<a>:超链接

<img>:图像

<div>:块级容器

<span>:行内容器

  1. 使用Socket实现HTTP通信

7.1 基础Socket实现

#include <sys/socket.h>
#include <netinet/in.h>int main() {// 创建套接字int fd = socket(AF_INET, SOCK_STREAM, 0);// 绑定地址struct sockaddr_in addr = {.sin_family = AF_INET,.sin_port = htons(8080),.sin_addr.s_addr = INADDR_ANY};bind(fd, (struct sockaddr *)&addr, sizeof(addr));// 监听并接受连接listen(fd, 5);int cfd = accept(fd, NULL, NULL);// 处理请求char buf[BUFSIZ];recv(cfd, buf, BUFSIZ, 0);printf("%s\n", buf);// 关闭连接close(cfd);close(fd);return 0;
}

7.2 处理GET请求

int do_get(int fd, char *buf, size_t len) {char type[16], resource[16];sscanf(buf, "%s%s\n", type, resource);if(strncasecmp("GET", type, 3)) {send(fd, "HTTP/1.1 501 Not Implemented\r\n\r\n", 29, 0);return -1;}char *pathname = (strlen(resource) == 1 && resource[0] == '/') ? "index.html" : &resource[1];FILE *fp = fopen(pathname, "r");if(!fp) {send(fd, "HTTP/1.1 404 Not Found\r\n\r\n", 26, 0);return -1;}char response[BUFSIZ];fread(response, 1, len, fp);char header[1024];sprintf(header, "HTTP/1.1 200 OK\r\n""Content-Length: %ld\r\n""Content-Type: text/html\r\n\r\n", strlen(response));send(fd, header, strlen(header), 0);send(fd, response, strlen(response), 0);fclose(fp);return 0;
}

相关文章:

  • 第16天-使用Python Pillow库常见图像处理场景
  • 如何使用Antv X6使用拖拽布局?
  • anaconda创建环境出错HTTPS
  • 每日Prompt:实物与手绘涂鸦创意广告
  • 【HTML-4】HTML段落标签:构建内容结构的基础
  • MySQL备份恢复:数据安全的终极指南
  • RPC 协议详解、案例分析与应用场景
  • 将VMware上的虚拟机和当前电脑上的Wifi网卡处在同一个局域网下,实现同一个局域网下实现共享
  • Neo4j实现向量检索
  • 【专题】机器学习期末复习资料
  • 【机器学习】支持向量机(SVM)
  • 华为鸿蒙电脑发布,折叠屏怎么选?
  • ToDesk云电脑、并行智算云与顺网云AI支持能力深度实测报告
  • 深度解析 Java 中介者模式:重构复杂交互场景的优雅方案
  • Linux上conda环境安装完全手札
  • JavaScript-DOM-02
  • 遨游科普:三防平板有哪些品牌?哪个品牌值得推荐?
  • 新浪、京东golang一面整理
  • 2025.05.21华为暑期实习机考真题解析第三题
  • ./build/mkfs.jffs2: Command not found
  • 做海报的高清模板的网站/2023年10月疫情恢复
  • 有用织梦做的大网站吗/做市场推广应该掌握什么技巧
  • 南昌网站设计哪家专业好/舆情系统
  • 景区网站建设原则/百度号码认证申诉平台
  • 卡通网站建设/免费推广软件工具
  • wordpress网站图标/谷歌google官网下载