Files
NE_YuR/network/weblab/main.typ
2026-01-19 22:35:09 +08:00

151 lines
7.8 KiB
Typst
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#import "labtemplate.typ": *
#show: nudtlabpaper.with(title: "网站搭建实验",
author: "程景愉",
id: "202302723005",
training_type: "无军籍",
grade: "2023",
major: "网络工程",
department: "计算机学院",
advisor: "逄德明",
jobtitle: "教授",
lab: "307-211",
date: "2026.01.17",
header_str: "《计算机网络》实验报告",
)
#set page(header: [
#set par(spacing: 6pt)
#align(center)[#text(size: 11pt)[《计算机网络》实验报告]]
#v(-0.3em)
#line(length: 100%, stroke: (thickness: 1pt))
],)
// Global text settings
#set text(font: song, size: 10.5pt)
#set par(first-line-indent: 2em, justify: true, leading: 1em)
// Heading styling
#show heading: it => box(width: 100%)[
#v(0.50em)
#set text(font: hei)
#counter(heading).display()
#h(0.5em)
#it.body
]
#outline(title: "目录", depth: 3, indent: 2em)
#pagebreak()
#outline(
title: [图目录],
target: figure.where(kind: image),
)
#pagebreak()
// List settings
#set enum(indent: 0.5em, body-indent: 0.5em)
// Disable indentation for lists
#show enum: set par(first-line-indent: 0pt)
#show list: set par(first-line-indent: 0pt)
= 实验目的
1. 了解万维网World Wide Web的历史起源与发展通过复刻世界上第一个网站直观感受早期Web技术的形态理解超文本标记语言HTML的基本结构与演变。
2. 掌握现代Web前端开发技术包括HTML5语义化标签、CSS3样式设计及响应式布局能够独立设计并编写符合标准、美观大方的个人主页。
3. 熟悉互联网基础设施的运作机制包括域名系统DNS的注册与解析原理以及Linux服务器的基本操作。
4. 掌握Web服务器软件Caddy的安装与配置实现网站在个人服务器上的部署并配置HTTPS安全访问打通从开发到上线的全流程。
= 实验原理
1. *HTML (HyperText Markup Language)*: 超文本标记语言是构建Web的基础。它使用标签Tags来定义网页的内容结构如标题、段落、链接和图片。实验中涉及从早期的HTML标签到现代HTML5语义化标签的应用。
2. *CSS (Cascading Style Sheets)*: 层叠样式表用于控制网页的外观和布局。通过CSS选择器、盒模型、Flexbox/Grid布局以及媒体查询Media Queries可以将结构与表现分离实现适应不同屏幕尺寸的响应式设计。
3. *Web服务器与HTTP协议*: Web服务器如Caddy运行在服务端监听标准端口80/443接收客户端浏览器发起的HTTP/HTTPS请求并返回请求的资源HTML文件、图片等。Caddy以其自动化的HTTPS配置和简洁的Caddyfile配置语法著称。
4. *DNS (Domain Name System)*: 域名系统将人类易记的域名(如 `hifuu.ink`映射为计算机网络中通讯使用的IP地址使用户能够通过域名便捷地访问服务器。
= 实验环境
- *操作系统*: Linux (个人公网服务器环境使用Rockylinux 9)
- *Web服务器*: Caddy Web Server (支持自动 HTTPS)
- *开发环境*: VS Code, Typst (实验报告排版)
- *前端技术栈*: HTML5, CSS3 (未使用庞大的前端框架,保持轻量级)
- *域名服务商*: 阿里云 (Aliyun)
- *测试工具*: Firefox Developer Edition
= 实验步骤及结果
== 复刻世界上第一个网站https://www.hifuu.ink/TheProject.html
实验的第一部分是致敬历史,复刻由万维网之父 Tim Berners-Lee 创建的世界上第一个网站 "The World Wide Web project"。
我获取了原始的 `TheProject.html` 源代码。代码中包含了许多早期 HTML 的特征,例如 `<NEXTID>` 标签(这是当年 NeXTSTEP 开发环境特有的标签)以及 `<DL>`, `<DT>`, `<DD>` 定义列表的使用。该页面通过简单的超链接结构,构建了一个关于 W3C 项目本身的各种信息的索引。
#figure(
rect(width: 100%, height: 8cm, stroke: (thickness: 1pt, dash: "dashed"))[
#align(center + horizon)[#image("screenshot2.png")]
],
caption: [复刻的世界上第一个网站页面效果],
)
== 搭建个人主页 (https://www.hifuu.ink)
实验的第二部分是设计并实现我的个人主页 "CGH0S7 Official"。主页旨在展示个人简介、技术栈、教育经历及博客链接。
=== 页面结构设计 (HTML5)
`index.html` 中,我采用了 HTML5 的语义化标签来构建页面结构,这有助于代码的可读性和 SEO 优化:
- *`<header>`*: 包含了网站导航 (`<nav>`) 和个人品牌区域 (`.brand`),展示头像与昵称。
- *`<section>`*: 将页面内容划分为不同的逻辑区块,包括关于我 (`About`)、爱好 (`Hobby`)、教育经历 (`Education`)、奖项 (`Awards`)、发表论文 (`Publications`)、博客 (`Blog`) 和联系方式 (`Contact`)。
- *`<footer>`*: 页脚部分,展示版权信息和构建时间。
=== 样式与交互设计 (CSS3)
为了实现现代化的视觉体验,我在 `<style>` 标签中编写了 CSS 样式:
- *CSS 变量*: 定义了 `:root` 变量(如 `--accent: #CEA152`),方便统一管理主题色和字体颜色。
- *Flexbox 与 Grid 布局*: 导航栏使用 Flexbox 实现水平排列;教育经历卡片使用 Grid 布局 (`grid-template-columns: 1fr auto`) 实现文字与校徽的对齐。
- *响应式设计*: 使用 `@media (max-width: 640px)` 媒体查询。当屏幕宽度小于 640px Header 自动调整为垂直排列,卡片布局也切换为单列模式,确保在手机端有良好的浏览体验。
#figure(
rect(width: 100%, height: 10cm, stroke: (thickness: 1pt, dash: "dashed"))[
#align(center + horizon)[#image("screenshot1.png")]
],
caption: [个人主页 (hifuu.ink) PC 端显示效果],
)
#figure(
rect(width: 50%, height: 10cm, stroke: (thickness: 1pt, dash: "dashed"))[
#align(center + horizon)[#image("screenshot3.jpg")]
],
caption: [个人主页移动端响应式布局效果],
)
== 服务器部署与上线
=== 域名购买与解析
为了让个人主页能够在公网访问,我在 *阿里云* 平台购买了域名 `hifuu.ink`
在阿里云的域名控制台中,我添加了一条 A 记录,将主机记录 `@` 指向了我个人 Linux 服务器的公网 IP 地址。等待 DNS 缓存刷新后ping 域名即可解析到正确的 IP。
=== 配置 Caddy Web Server
我选择使用 *Caddy* 作为 Web 服务器,主要看重其配置简单且默认支持自动 HTTPS通过 Let's Encrypt
部署步骤如下:
1. 将编写好的 `index.html``avatar.jpg` 以及复刻的 `hifuu.ink` 文件夹上传至服务器目录。
2. 编写 `Caddyfile` 配置文件,指定站点根目录。
3. 启动 Caddy 服务。Caddy 自动检测到域名配置,并自动完成了 SSL 证书的申请和安装。
= 实验总结
== 心得感悟
本次实验是一次非常有意义的web开发初体验。
首先,通过复刻 Web 诞生之初的网页,我深刻体会到了互联网技术从简陋到繁荣的巨大变迁。几十行简单的 HTML 代码,却是如今万物互联世界的基石。
其次,在编写个人主页的过程中,我不仅巩固了 HTML5 CSS3 的语法,更重要的是学会了如何通过布局和配色来提升用户体验。看到自己设计的页面在不同设备上都能完美展示,这种“所见即所得”的反馈带给我很大的成就感。
最后,服务器部署环节让我走出了“本地开发”的舒适区。从购买域名到配置 Linux 服务器再到看着浏览器地址栏那把代表安全的“小锁”HTTPS亮起我理解了网站上线背后的技术链路。使用 Caddy 服务器极大地简化了配置流程,让我能更专注于内容本身。这次实验不仅不仅让我拥有了一个属于自己的互联网角落,也为后续深入学习计算机网络原理打下了坚实的基础。