1
0
mirror of https://github.com/ZSCNetSupportDept/website.git synced 2025-10-28 17:05:03 +08:00

73 Commits

Author SHA1 Message Date
govolokatliai
505b5497c8 1 2025-10-09 16:39:57 +08:00
govolokatliai
59ae1bc18d 1 2025-10-09 16:01:52 +08:00
govolokatliai
745101a2c7 1 2025-10-09 16:01:47 +08:00
govolokatliai
7b686abdb1 修改一处错误 2025-10-09 16:01:29 +08:00
govolokatliai
a877c1f646 introduction 2025-10-09 15:59:11 +08:00
govolokatliai
e1b15adfa7 移动...还有 2025-09-16 20:32:58 +08:00
govolokatliai
edfdc0845a 1 2025-08-13 08:11:34 +08:00
govolokatliai
8c00ae728a update! 2025-07-28 19:00:22 +08:00
govolokatliai
3f07c7efef 修改小细节 2025-07-28 18:53:02 +08:00
govolokatliai
35a60440c6 1 2025-07-28 18:01:04 +08:00
govolokatliai
722ad2cef9 Web历史初版~~ 2025-07-17 12:38:52 +08:00
abc
755322847f 1 2025-07-13 13:26:45 +08:00
abc
8136fab29e 1 2025-07-13 11:23:58 +08:00
abc
22271802e6 Web的历史 2025-07-13 11:13:08 +08:00
abc
cd16809e7c 1 2025-07-13 11:12:56 +08:00
abc
44c1f68731 小细节修改 2025-07-13 10:02:55 +08:00
abc
84e00aadf7 寻线器讲解 2025-07-13 10:01:57 +08:00
govolokatliai
b7edc55f49 1 2025-06-28 19:26:44 +08:00
govolokatliai
c34ca74f0f 更新查看IP,更新基础文章,更新一个转接器科普 2025-06-28 19:25:12 +08:00
govolokatliai
ce0ea699d6 更新查看IP,更新基础文章,更新一个转接器科普 2025-06-28 18:38:42 +08:00
govolokatliai
5647e89b97 修改mermaid样式,在dark下也使用light 2025-06-28 15:42:04 +08:00
govolokatliai
36b8b7eee5 将电科大网络架构整合片区信息中 2025-06-23 22:38:51 +08:00
govolokatliai
18b6e3f474 更新学校的网络结构 2025-06-23 20:38:40 +08:00
govolokatliai
9ec62ff431 更改下载链接到网维下载中心 2025-06-22 14:29:07 +08:00
govolokatliai
ca1fc3a39c 优化阅读格式,增加下载中心的链接 2025-06-22 14:17:21 +08:00
govolokatliai
87635a59cd blog archive 2025-06-22 12:48:47 +08:00
govolokatliai
77680208b7 更新index页面,增加一个提示。。。 2025-06-22 12:36:17 +08:00
govolokatliai
2308c75b4d search 2025-06-22 00:41:12 +08:00
govolokatliai
92ae4a93d0 更新开发组文档,完善wiki的错误码板块,优化了结构 2025-06-21 15:30:30 +08:00
govolokatliai
91b2352507 1 2025-06-18 11:32:43 +08:00
govolokatliai
66d7e045b7 优化手机访问,修改wiki中的错误板块的结构~ 2025-06-14 03:54:13 +08:00
govolokatliai
266a2976bb 准备新的开发组文档,初步手机端访问支持
原来的在docs/devdocs/_legacy目录下面
2025-06-13 23:02:06 +08:00
govolokatliai
c80789134c 更新基础知识 2025-06-13 22:39:54 +08:00
govolokatliai
a220cdeb19 更新一下文章 2025-05-13 15:29:45 +08:00
govolokatliai
a83651c6d1 首页 2025-05-11 01:06:03 +08:00
govolokatliai
fdcf2c95b1 添加女生宿舍的网络结构解释 2025-05-10 19:09:18 +08:00
govolokatliai
855ac896d2 添加各大片区的工具包位置 2025-05-10 19:00:55 +08:00
govolokatliai
98c776306a 完善一批文章 2025-05-09 08:39:17 +08:00
govolokatliai
a7b41cfdef 添加一份移动补充材料 2025-05-09 08:22:05 +08:00
govolokatliai
bf34d1e8a7 暂时隐藏一些文章 2025-05-09 08:21:44 +08:00
govolokatliai
c6a20958d8 完善寻线的教程 2025-04-21 21:09:21 +08:00
绎鸾
b03bc3d5cf Update 北门.md 2025-04-17 15:55:17 +08:00
绎鸾
a3bf27d594 Update 北门.md 2025-04-17 15:54:12 +08:00
govolokatliai
e1ac7d912b 改善一些说明 2025-04-14 09:02:27 +08:00
govolokatliai
2a93fcba30 修改一处IP的错误 2025-04-14 08:02:36 +08:00
govolokatliai
6dfa9dd9d5 给公告加了两个truncate 2025-03-23 19:01:05 +08:00
govolokatliai
6cbf6b7069 增加了对线和学校的网络结构的图表说明 2025-03-23 18:50:32 +08:00
govolokatliai
5db6d75710 为片区信息增加图表,不准确的地方以后再改。。 2025-03-23 18:50:00 +08:00
govolokatliai
94ef585baa 添加图表页面 2025-03-23 18:49:19 +08:00
govolokatliai
813351c1c8 使用Mermaid图表功能,不过好像和黑暗模式不太兼容 2025-03-23 15:56:47 +08:00
govolokatliai
c61c133d7d 升级版本,为网站添加Mermaid图表支持 2025-03-23 15:55:49 +08:00
govolokatliai
ff217a3f34 “资源”板块里增加了路由器文档的下载链接 2025-03-23 02:23:58 +08:00
govolokatliai
cad1dc76c8 为一批没写完的文档增加一个提示 2025-03-23 02:05:44 +08:00
govolokatliai
712307d43a 更改了渲染markdown文档时h2的样式,使得这些元素显眼一点了 2025-03-23 01:19:34 +08:00
govolokatliai
0a3992fbf4 改进了首页的界面! 2025-03-23 00:30:15 +08:00
govolokatliai
284e791494 把MacOS修理指南移动在杂项 2025-03-23 00:11:58 +08:00
govolokatliai
50ea7aa5d6 wiki更新:更新了电信光猫,移动新拨号的相关文章,另外优化了结构 2025-03-17 17:48:09 +08:00
govolokatliai
f0af38c247 优化语言 2024-12-29 12:42:28 +08:00
绎鸾
b27b2b7b2a Add files via upload 2024-12-28 21:47:52 +08:00
govolokatliai
afc432298e Web后端教程:优化了语言,让他对新手更加友好 2024-11-03 14:38:48 +08:00
govolokatliai
c249213cc6 完善Web后端教程-增加HTTP协议和AJAX例子 2024-11-03 13:59:41 +08:00
govolokatliai
af35ada10e 继续完善Web后端的教程。。。 2024-11-02 19:55:40 +08:00
govolokatliai
124b80857b 完善了Web后端教程 2024-11-02 16:01:52 +08:00
govolokatliai
19ebcc67d4 增加了系列文章-Web后端培训 2024-11-01 18:56:26 +08:00
govolokatliai
1faabe5bc1 增加在文档最后显示最近修改时间 2024-10-31 19:01:55 +08:00
govolokatliai
3f4bff2f66 新建文章集-git培训,规划开发组项目 2024-10-14 21:23:30 +08:00
govolokatliai
755a0cd758 增加了提示 2024-09-27 23:22:19 +08:00
govolokatliai
7a5d8a7ff0 增加了指南 2024-09-27 23:18:18 +08:00
govolokatliai
325f5b906f 增加一篇指南 2024-09-27 21:58:15 +08:00
govolokatliai
48c28f77ba 后端API文档(内测) 2024-09-23 01:25:50 +08:00
govolokatliai
c1f35228c4 更新recruitment.html 2024-09-05 17:11:38 +08:00
govolokatliai
ff04048f76 增加了一个测试的招新页面 2024-09-05 15:21:22 +08:00
govolokatliai
1c114c9e85 啊啊啊啊啊 2024-09-04 03:58:54 +08:00
208 changed files with 50320 additions and 3384 deletions

5
.gitignore vendored
View File

@@ -18,3 +18,8 @@
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
/docs/wiki/gitignore
/draft

View File

@@ -1,30 +1,29 @@
# zsc网维开发组网站 # zsc网维开发组网站
这里是开发组的网站源代码仓库采用Docusaurus框架,欢迎issue和PR 这里是开发组的网站源代码仓库采用Docusaurus框架,欢迎issue和PR
目前网站主要托管新wiki和开发组文档还可以发布一些文章。如果想编写内容的话请联系开发组组长。
## 依赖 ## 依赖
`nodejs >= 18.0` `nodejs >= 18.0`
## 构建 ## 构建
不同于传统的静态网页生成器本项目不需要额外加装构建工具生成器和内容本身加起来就是一个单独的react.js应用所以理论上你只需要把这个repo pull到本地再用npm构建即可运行`npm run docusaurus`来运行框架本身提供的一些脚本.
要构建可以拿去部署的静态网站资源,运行:
``` 在终端输入以下命令:
``` shell
git clone https://github.com/ZSCNetSupportDept/website git clone https://github.com/ZSCNetSupportDept/website
cd website
npm install npm install
npm run docusaurus build npm run docusaurus build
``` ```
运行`npm run docusaurus deploy`可以自动构建静态网站并且push到`build`上\ 然后在`build`文件夹下就出现了编译过后的结果,可以进行下一步的部署
https://zscdev-demo.pages.dev 是本仓库的一个demo网站基于master构建而不是build
## 部署
参见 https://zscdev-demo.pages.dev/docs/devdocs/网站/开发组网站/开发组网站-部署
## 内容发布
参见文档
## 开发
务必在本地测试好改动后再push
## 关于
若有问题,可以联系开发组组长
针对新手我们有一个教程帮助你快速入门https://zscdev-demo.pages.dev/docs/devdocs/网站/开发组网站/快速上手 如果你有直接push本仓库的权限你可以运行`npm run docusaurus deploy`自动构建并部署静态网站;在构建之后,还会自动将结果推送到仓库的`build`分支上,服务器部署了脚本自动抓取这个分支的内容来更新网站\
https://zscdev-demo.pages.dev 是本仓库的一个demo网站基于master构建而不是build
## 关于
任何问题,请联系开发组组长~^_^~

View File

@@ -1,2 +1,3 @@
# Hello World! # Hello World!
<!--truncate-->
**This is a Test post** **This is a Test post**

View File

@@ -1,4 +1,5 @@
# 你可以在哪里找到开发组? # 你可以在哪里找到开发组?
<!--truncate-->
目前,开发组成员可以通过如下的方式联系: 目前,开发组成员可以通过如下的方式联系:
- 开发组成员可以通过github上的[论坛](https://github.com/ZSCNetSupportDept/forum/discussions)交流(仅限内部访问) - 开发组成员可以通过github上的[论坛](https://github.com/ZSCNetSupportDept/forum/discussions)交流(仅限内部访问)
- 开发组有一个QQ群961797864 - 开发组有一个QQ群961797864

View File

@@ -0,0 +1,78 @@
# 给纯新手的网维快速入门指南
许多新进网维的小伙伴们都可能对我们的日常工作一脸懵:网维是干什么的,我们到底在修什么?其他人说的交换机,主线到底是什么?
甚至有很多正式成员都搞不明白这个问题,为了提升大家的业务水平和网络技术,我们特意编写了这份指南,希望能对你有些许的用处。
<!--truncate-->
## 网络
网维,那不就是修网络的吗?但是,网络是什么?他究竟是什么样的?为什么我可以访问到遥远彼方的内容(网页,游戏,等)?
首先我们需要知道计算机中的一切数据都是一串二进制数字也就是许多的01010101101010.........,网络的本质就是在计算机之间传输这些数字如何进行传输呢通常是使用物理现实的两种状态来表示0和1这两个数字。
比如一个电路简单点说有一个电灯电路闭合电灯亮我们定义这样的状态是1,反之电路断开电灯暗我们定义这样的状态为0,我们让计算机监听这个电路的状态通过电路断开闭合状态不断的超高速的变化就可以传递01010101这些数字来进行信息的传递。
:::info 信息
这里有我们写的一篇科普文章,介绍了网线的一些概念:[Click Me](/docs/wiki/基础知识/科普/网线是什么)
:::
不一定需要电路这种介质还可以是无线电波例如定义电波幅度大于某个值为1,小于某个值为0或者大于某个频率为0,小于某个频率为1,让计算机接受这样的电波并解读,也可以传递信息。
其实,简单地说,前者就是以太网(有线网)本质,网线本质上就是电线,里面是以高频率断断续续的电流,把电线接到计算机里,计算机就可以依据电路的变化情况来获取信息.而后者则是无线网(Wi-Fi,移动通信技术等)本质,他们通过调制电磁波来传递信息。
### 网维
网维主要修的是学生宿舍的以太网,在每个宿舍的每个人的桌子前,都有一个网线端口,用户将网线插入端口和计算机,即可连接到宿舍的楼层线路,端口后面是墙线,意思是它是埋在墙里的,我们一般情况下没法动他
依据宿舍片区的不同,墙线可能直接通去了机房,也有可能是连接到了宿舍的路由器(交换机/光猫),经过这一层转发,再前往机房。
:::tip 提示
你可以在片区信息中查看各个片区的具体结构
:::
路由器是什么?交换机和光猫又是什么?这个问题如果专业地展开来讲有点难懂,对于新手来说,你可以简单的理解为他们都是中转站,电线在这里经过出去的电线继续信息的传递,而不是直接一根线连到网络上去
无线路由器(或者有路由功能的光猫)还可以让用户通过无线方式接入线路,比如,如果你想坐高铁,从中山坐到广州南,然后再从广州南做到其他地方,但是没必要全程坐高铁,你可以打车,坐地铁到广州南,然后再坐高铁。这里一样的,不管有线还是无线的接入,在网关(我们对这些设备的统称)都是转换成有线再出去,
出去是去哪里呢?在宿舍的结构中,是去了机房(或者说,弱电井),宿舍去机房的线就叫做主线(只有通过网关中继的地方才会有主线的概念,直连机房的就直接是墙线)
线路到了机房,一般会接入一个叫做配线架的设备,这个也是一个中继器,方便我们维修(如果是线路坏了的话),配线架的端口总是成对的,有一个进口就会有出口,一般进口都是不用我们去管的,线路经过出口出来,连接到交换机上,我们网维的工作一般追踪到这里,再往后的问题就不是我们的职责了,
交换机有运营商的区别,用户需要接到他宽带开通的运营商对应的交换机上,通过一类叫做“拨号”的协议来进行认证,向运营商用自己的账号请求登录,请求运营商允许联网,这样也方便运营商计费(和学校监控!,交换机通常都是集成了光纤功能在这里将电路的信号调制成光的信号这也是一种传输0101010的方式然后接入运营商的网络访问全国和全球的互联网
## 维修
上面就是我们学校宿舍网络的结构了,网维的工作,本质就是维护这样的结构正常运行,在这些环节中,每一个都有可能出错,一般来说,我们最常见的有两种错误:硬件(物理层)错误(651)和软件错误(691).
### 651错误
硬件错误,通常在拨号时会给出`651`错误,本质上,这种错误就是物理连接出现了问题,要么是墙线老化接触不良了,要么是主线出现了问题,要么是交换机,配线架没有接好,要么是网线问题,对于这种问题,我们通常通过寻线对线器来解决,排查问题
排查问题一般都是调试可能出错的因素,例如,你用一根确定了的是好的网线直连端口对线没问题,但是用户的线连接端口就有问题,那么就是用户的线有问题
:::info 信息
关于更多651错误请查阅wiki相关页面也请查阅`技能`板块中`对线``寻线`的条目
:::
### 691错误
软件错误,通常会在拨号时给出`691`错误,本质上,这意味着物理连接是通的,但是运营商那边拒绝的用户的登录,有几种可能:
1. 交换机接错了,用户是某个运营商,你接到了其他的运营商的交换机,当然报错喽~
2. 短时间内过多的登录,被运营商拉黑了,需要稍等一会子
3. 宽带欠费,停机
4. 账号密码错误
5. 运营商会绑定MAC地址来限制多设备在更换电脑或者转接器等设备时会遇到这样的情况可以打电话给运营商要求所谓的“解绑刷新”也可以组长
:::info 信息
关于更多691错误请查阅wiki的相关页面和相应的文章
:::
## 总结
这里只是一篇简要的指南我们在这里介绍了网络的基本概念让你对你所要维修的系统有一个大概的了解你可以继续去看wiki中的相关条目来进一步扩充你的知识希望你在网维的时光过得愉快

View File

@@ -0,0 +1,27 @@
# 女生宿舍的网络结构解释
这里有几张女生宿舍网络结构的图解
<!--truncate-->
## 概述
请观察这张图片:
![朝晖](/img/wiki/女生宿舍的网络结构.webp)
这是朝晖的网络结构,我们以它举例来说:
首先需要知道,用户的电脑通过自己的网线接到端口上,才可以连上网络
端口的后面,是被我们称为“墙线”的网线通路,顾名思义,它们是嵌在墙里的(这样说不准确,但是你可以这么认为),我们没有办法对墙线做手脚,要是墙线坏了,就只能上报,墙线的另一端是楼层机房的配线架
配线架起到一个中继器的作用,配线架的背面有很多入口,正面有很多出口,配线架会把入口的信号原样输出给出口,入口连接的是墙线(也就是用户端口),出口连接的是交换机
端口不直接连接到交换机,而是首先经过配线架,有很多好处,这样如果配线架到交换机的那一段网线出现了问题,就不用换掉整个墙线,而是直接把出口的线直接换掉;这样也方便我们换线(比如用户用的是电信,毕业了之后新生办的是移动宽带);另外,配线架还有避免信号衰减的功能
端口首先连接到配线架,配线架再连接到楼层交换机;楼层交换机还会连接到楼栋交换机和核心交换机,不过就不是我们网维需要负责的了。
朝晖片区的配线架和交换机放在同一个机柜,但是香晖片区的就不是了,香晖片区的机房结构类似如下:
![香晖](/img/wiki/机柜.jpg)
:::tip 提示
本文持续更新中
:::

View File

@@ -0,0 +1,167 @@
# Web的历史1⃣-HTTP
<!-- truncate -->
*注这些文章本来是打算作为开发组后端培训文本的开篇而写的但是我发现文章的内容过于复杂且有点离题所以稍微修改了一下单独作为3篇独立的文章发布。*
*本文章的许多图片都直接来自 [MDN](https://developer.mozilla.org),在这里先感谢图片的创作者。*
## 网络的起源
人们最初发明网络的目的很简单在不同的电脑之间传输文件。那个时候没有U盘也没有蓝牙计算机领域的前辈们必须从头设计一个高效的传输文件的办法。
假如我们的电脑上有一个文件`example.docx`,放在我们电脑的文件夹`documents`里面,我们如何使用最原始的方法把它传递给另外一台电脑呢?
早期的程序员编写了一类叫做"HTTP服务器"的程序程序的功能是选择电脑上的一个文件夹将这个文件夹暴露在互联网上让所有人操作。这个文件夹叫做HTTP服务的“根目录”。
要使用这个程序我们还要先给电脑分配一个IP地址IP地址是一台电脑在互联网上的唯一标识假如我们电脑的的IP地址是`123.45.67.89`。我们在这台电脑上启动一个HTTP服务程序。在程序的设置里指定根目录是我们存放文件的文件夹`documents`
前面说过这个HTTP服务程序的作用是把你电脑上一个指定的文件夹(我们称为“根目录”)暴露在互联网上,所有人都可以下载这个文件夹下的文件。于是这个时候,我们打开随便另一台电脑(前提是有网),在浏览器地址栏中输入`http://123.45.67.89/example.docx`,这时候就会发生神奇的事情:浏览器会提示你下载`example.docx`,这样,文件就从一台电脑传输到了另一台电脑。
假如`documents`文件夹下面还有另外一个文件`hi.txt`,那么当你在浏览器地址栏中输入`http://123.45.67.89/hi.txt`时,你就会发现浏览器显示了`hi.txt`这份文件的内容,因为浏览器可以直接显示`txt`文件,而不能直接显示`docx`文件。
![IIS根目录](/img/blog/iis-changeroot-websoft9.png)
> *IIS是Windows官方的HTTP服务器有着图形化的配置界面其它大部分HTTP服务器都需要通过命令行和配置文件进行配置。*
## HTTP协议
等等,刚才所讲的操作为什么能发生呢?当我在浏览器中输入网址并按下回车键的时候,这一切的背后到底发生了什么?
我们之前提到了,要把电脑中的一个文件夹暴露在网络上供所有人访问,就需要启动一个"HTTP服务程序"这个HTTP是什么呢
HTTP协议`HyperText Transfer Protocol`的缩写,即"超文本传输协议"。是通过网络在电脑之间进行文件传输的默认协议。进行HTTP文件传输的双方一个称之为”客户端“(Client),一个称之为"服务端"(Server)。
我们刚才就是在我们的电脑上部署了HTTP服务端而浏览器就是我们通信中的客户端。浏览器首先对服务器发送信息(行话叫做"请求"),要求获取某个文件;然后服务器返回这个文件(行话叫做“响应”)。
一次完整的HTTP通信总是由客户端请求(Request)和服务端响应(Response)组成。在HTTP协议中总是由客户端先发起一次HTTP请求然后由服务端返回这次请求的响应这样才是一次完整的HTTP通信。
实际上HTTP协议中的“客户端”不仅仅是指浏览器但我们通常用的浏览器确实就是最常见的HTTP客户端。但其实像curl这样的命令行工具或者手机APP或者是浏览器里的JavaScript代码当它们向服务器请求数据时也可以被称作客户端。
![HTTP请求示意图](/img/blog/basic_static_app_server.png)
实际上HTTP协议不仅可以获取一个文件(就像我们所做的),也可以向服务端上传一个文件,或是修改某个文件的内容...
一次HTTP通信要进行什么操作(获取or上传等)由HTTP请求中的“方法”指定方法是"请求头"的一部分。
"请求头"是什么别着急下面我们介绍HTTP协议的具体内容
### 请求
前面说了HTTP通信总是以客户端发送请求开始服务端是没法主动给客户端发信息的。
一个HTTP请求包含请求头(HTTP Request Header)和请求体(Request Body),请求头主要包含了:
- 协议版本:告诉服务器这次交流要使用哪个版本的HTTP协议
- 目标:要访问哪个电脑,例如刚才的`123.45.67.89`
- URI:要操作哪个文件,例如`example.docx`,IP地址或者网址后面的内容就是URI了
- 方法:要对这个文件做什么,比如获取这个文件的内容,还是在服务器上创建这个文件
- 自定义参数:除了上面的信息,客户端还可以发送一些额外的内容给服务端,这些内容总是以`Key=Value`的形式存在。在正常的URI后有一个`?`,表示参数的开始,`&`表示不同参数之间的分隔。
例如:`http://123.45.67.89/example.docx?compressed=true&method=gzip`
这就是让服务器压缩发来的文件使用gzip压缩。
参数的内容不是HTTP标准也就是服务端如何理解参数完全靠程序员写的代码。如果程序员没有设置那么参数就毫无用处。
#### HTTP方法
HTTP方法定义了这个请求具体要对指定的文件做什么其中
- `GET`:获取指定文件的内容。
- `POST`:上传一个文件,内容放在请求体(下面会讲到)。
- `DELETE`:删除某个文件。
其实这里还有一些方法的,我们以后讲。
我们日常使用浏览器,比如在地址栏中输入`baidu.com`,其实就是在对这个地址做GET请求浏览器会把你的输入内容自动补全成 `GET http://www.baidu.com/` 这一HTTP请求
:::tip 提示
打开浏览器的F12开发者菜单选择"Network"可以看到你在访问这个网站时与服务器所进行的所有HTTP请求
:::
在浏览器地址栏里直接输入网址默认就是发送GET请求。你可能会好奇POST这些请求是怎么发出去的呢这通常是由网页中的JavaScript代码在背后发送的。我们在之后的内容会讲到这一点。
![请求头](/img/blog/http-request.svg)
#### 请求体
对于某些方法,需要在请求时向服务器夹带一些东西(比如POST需要你带上新文件的内容),请求体就是装载这些东西的.
像GET请求就没有请求体因为GET请求不需要夹带信息.
:::tip[提示]
正常地使用浏览器是没法做出GET外的请求的但是浏览器在控制台里可以自定义请求`Firefox`为例在F12的`Network`一栏中点`New Request`(有一个加号)就可以发送自定义请求。`curl`等HTTP命令行工具也可以发送请求.
:::
### 响应
回应也分为回应头和回应体,回应头主要包含:
- 状态码针对请求的回应有对应的状态比如如果GET请求没有问题成功返回的话就返回`200 OK`状态码,如果找不到请求里对应的文件就会返回`404 Not Found`
- 内容格式:向浏览器说明回应体(若有)是什么格式的,文本文件的编码设置等比如html文件图片docx文档有没有被压缩如果有压缩格式这决定了浏览器如何对待这些文件
- 内容的大小:返回所请求资源的大小(若有)
回应体就是包含了回应的主体内容了如果是GET请求的话那么就回应了所GET文件的内容如果是其他请求的话可能也会没有回应体具体看使用的方法
![回应体](/img/blog/http-response.svg)
### 例子
`GET`方法从服务器获得一个资源我们在浏览器的地址栏输入一个地址时就是在对这个URI做`GET`请求,前面的例子也是通过`GET`方法来进行的。
比如,发送`GET http://developer.zsxyww.com/test/test.txt`,那么就会把我们服务器根目录上`test`文件夹里面的`test.txt`这个文件发过来
`POST`方法向服务器上传一个资源,例如使用某个客户端发送`POST http://example.org/sheet.xlsx`在request body里面带上你的这个文件那么`example.org`网站的根目录下就会多出一个叫做`sheet.xlsx`的文件
除了上面介绍的这些方法,还有`DELETE`,`PATCH`等方法,分别对应了删除,修改一个资源,你可以在你的电脑上通过`curl`等程序,或者通过浏览器控制台来进行常规的`GET`之外的方法请求
:::tip[提示]
httpbin.org 这个网站可以让你试验HTTP协议的方法
:::
:::info[HTTPS]
HTTP在网络上是明文传输的也就是说客户端和服务器之间的每个网络节点每个人都可以看到。这显然不方便隐私所以人们发明了HTTPS也就是把HTTP的正文加密了HTTPS可以说是当今互联网的基石有了HTTPS我们才能放心地在网上输入密码用银行卡付款等。
:::
## 网页与HTML
随着网络的发展人们发现互联网的潜力远不止于传输文件。特别是浏览器的普及人们希望能直接在网页上展示丰富的信息而不只是把浏览器当作下载工具。前面我们说过了浏览器可以直接展示txt文件但是最大的问题是txt文件是没有样式的。
比如txt无法设置字体大小和颜色,无法加粗、倾斜文字,无法创建表格和列表,无法插入图片和链接。这些都是txt的局限。
为了解决这个问题人们发明了HTML(HyperText Markup Language),就是“超文本标记语言”HTML的核心思想是在普通文本中加入特殊的标记告诉浏览器如何显示内容。
比如`<i>你好~</i>`就是指示浏览器以斜体的方式显示`你好~`这段文字。你可以用系统自带的笔记本像打开txt文件一样打开HTML文件只不过浏览器默认是加载渲染之后的界面而不是原始的HTML。
除HTML之外人们还发明了CSS与HTML搭配使用CSS可以对样式做更复杂高级精细的控制这里就不细说了
回到我们的主题不管使用的是什么方法操作的是什么文件HTTP协议传输的对象都是一些固定静态的文件其内容在服务器上是固定不变的除非手动修改这样的网页称为静态网页。
静态网页中,所有用户看到的内容都相同,内容不会根据用户行为动态变化,服务器只负责传输文件,不进行复杂计算。
我们的wiki就是静态网页在服务端上都对应着HTML页面只不过加了非常多的样式显得很高级。
很多常见的网站如企业官网、技术文档、个人博客等都是静态网页虽然看起来很精美但本质上就是经过精心设计的HTML和CSS文件。
![网页的构成](/img/blog/fetching-a-page.svg)
:::info
这是三篇系列文章中的第**1**篇
点击以跳转:
**HTTP**(你在看的文章)
[动态网页](/blog/Web的历史2⃣-动态网页)
[Web应用](/blog/Web的历史3⃣-Web应用)
:::

View File

@@ -0,0 +1,286 @@
# Web的历史2⃣-动态网页
<!-- truncate -->
上篇文章我们已经了解了静态网页是如何工作的但是这样的网页是不能满足大家对互联网的需求的。举例子来说你访问b站首页`bilibili.com`,每次刷新,首页上显示给你的视频都不一样,不同的人访问这个首页,显示的也不一样,按理说大家都是访问一个网址,背后应该都是同一个文件,为什么每个人都不一样呢?这种功能是如何实现的?
淘宝上有数不清的商品在售卖如果淘宝为每一个商品都在服务器目录下面创建一个html文件好让大家通过访问`http://taobao.com/someproduct.html`来查看商品信息,那这个工作量就非常大了。而且,这样的网页,基本上没有交互的功能:我们希望用户可以点击按钮就能购买商品,商家在网页后台上操作就能上传商品。这种功能应该如何实现呢?
暂时先不考虑这些高级的问题,让我们先从最基础的讲起:
## 服务器端内嵌(SSI)
如果你想向网站中插入动态内容SSI是最简单最直接的办法比如我们的wiki有许多页面但是每个页面都有一些共同的元素页面头部的导航栏左侧的列表页脚等。如果为每个页面都复制一份相同的HTML的话那就太麻烦了有没有什么办法可以使HTML一次编写到处渲染呢
SSI(Server Side Includes)就是满足这种需求的一个HTML宏语言。它有点类似于C语言的`# include`宏:
假设这是我们首页的HTML:
```html
<h1>wiki</h1>
<!--#include file="navbar.html" -->
<div class="article"></div>
```
假如`navbar.html`的内容如下:
```html
<tr>
<td>教程</td>
<td>文档</td>
<td>高级</td>
<td><a href="github.com/zscnsd/website">Github</a></td>
</tr>
```
那么用户访问我们首页时就会看到:
```html
<h1>wiki</h1>
// highlight-start
<tr>
<td>教程</td>
<td>文档</td>
<td>高级</td>
<td><a href="github.com/zscnsd/website">Github</a></td>
</tr>
// highlight-end
<div class="article"></div>
```
如果导航栏的界面有变化,那么只需要修改`navbar.html`即可,不用修改网站中的每一个页面。
没错SSI的功能就是简单地把指定的内容插入进HTML里。这对一些重复的元素(例如每个网页的页头,页脚,侧边栏)还有一些需要更新的内容很实用。
当然SSI并没有解决动态网页的问题它只是把需要手动更新的地方单独拿了出来使维护静态网站更容易所以程序员们又发明了CGI技术。
## CGI
**CGI(Common Gateway Interface)** 是第一个真正实现动态网页的技术它允许Web服务器执行外部程序来生成网页内容。
CGI的工作原理是当用户访问特定URL时服务器不是返回静态文件而是执行一个程序并将程序的输出作为HTTP响应返回给用户。
(举个天气预报的例子)
Web服务器通常会把能执行的程序(除开静态文件)放在一个叫cgi-bin的特殊目录里。假设我们服务器的这个文件夹里有一个查询天气的Python程序`weather.py`,当用户访问`http://example.org/cgi-bin/weather.py?city=中山&date=2025-06-25`时,我们的HTTP服务程序会自动**执行**放在路径中`/cgi-bin/weather.py`的这个Python脚本并且将客户端的请求头和请求体传递给脚本
脚本解析请求头中`city=中山&date=2025-06-25`这个参数在数据库中查询这个日期的天气然后返回一个HTML给HTTP服务程序再把这个HTML返回给客户端。
如果没有设置CGI,那么服务程序只会返回给客户端`TodayWeather.py`这个脚本文件的代码本身。
其实CGI是一个接口格式它定义了我们编写程序与HTTP服务程序之间如何交互。通常HTTP服务程序给CGI程序的输入就是环境变量输出就是标准输出。
CGI的巧妙之处在于服务器不是用什么复杂的方式和脚本沟通而是把请求信息比如URL参数里的城市变成程序很轻松就能读到的环境变量。而程序也不需要复杂的操作进行IO它只需要把生成的HTML代码打印出来服务器就会自动收集这些打印的内容然后发回给用户的浏览器。
下面是一个例子:
```bash title="/var/www/cgi-bin/system-info.sh"
#!/bin/bash
# HTTP响应头
echo "Content-type: text/html"
echo ""
# HTML内容
echo '<html>'
echo '<head><title>系统信息</title></head>'
echo '<body>'
echo '<h1>服务器系统信息</h1>'
echo '<p>当前时间:'$(date)'</p>'
echo '<p>内存使用情况:</p>'
echo '<pre>'
free -h
echo '</pre>'
echo '</body>'
echo '</html>'
```
每次用户访问这个页面,都会看到实时的系统信息,真正实现了动态内容。
虽然CGI现在很少见了但它建立了一个重要概念将URL请求映射到程序函数而不是静态文件。这个思想成为了现代Web开发的基础。
## 嵌入式脚本
随着动态网页需求的增长纯CGI编程变得复杂。程序员们希望能够在HTML中直接编程动态代码这样既保持了HTML的可读性又能实现动态功能。
这个就是嵌入式脚本顾名思义就是把脚本和HTML混在一起在HTML中嵌入脚本
但是这种脚本和今天的前端JavaScript不同它是由后端解释执行的在返回HTML响应之前HTTP服务程序会检查这个HTML里面有没有可以执行的脚本内容有的话就执行这些脚本并且把脚本的输出嵌入到HTML里面。任何有效的HTML也是有效的这类脚本语言。
从CGI到嵌入式脚本的另外一个关键驱动力是性能。CGI每来一个请求服务器就得创建一个新进程去运行CGI程序完成后再销毁开销很大。而嵌入式脚本通常则是直接作为服务器的一部分运行效率远高于CGI。
### JSP
举个例子吧你可以轻松使用Java来创建动态网页只需要把Java代码嵌入到HTML里面使用`<% %>`包裹住代码:
```java
<html>
<body>
<p>当前时间:<%= new java.util.Date() %></p>
</body>
</html>
```
复杂一点的例子:
```java
<html>
<body>
<h1>欢迎访问我们的网站</h1>
<p>当前服务器时间:<%= new java.util.Date() %></p>
<p>您是第 <%= session.getAttribute("visitCount") %> 位访客</p>
<%-- 这是JSP注释不会出现在最终HTML中 --%>
<%
// 这里可以写复杂的Java逻辑
String userName = request.getParameter("user");
if (userName != null) {
out.println("<p>欢迎您," + userName + "</p>");
}
%>
</body>
</html>
```
:::info[session和cookie]
在这段JSP代码中有一个对象叫做`session`这是什么呢实际上因为HTTP是无状态的协议意味着两次请求之间是完全独立的一次请求不应该依赖另一次请求。这显得有点不灵活于是人们会在HTTP的请求体上夹带一些额外的参数用于表明用户的身份信息比如在用户登录网站之后服务器会给客户端一个密钥下一次客户端请求页面时带上这个密钥服务器就知道这是某个用户的请求。在这种模式下服务器需要为每个用户维护信息比如最简单地需要维护密钥是对应哪个用户的这些信息就叫做session。
:::
类似于这样的脚本叫做JSP(JavaServer Pages),它在后端返回时被转换成Java Servlet代码来执行本质上JSP是Java Servlet的一种语法糖。至于JSP和Java Servlet都是什么自行了解吧。
### PHP
比JSP更灵活的就是PHP,PHP就是一门纯正的脚本语言了它的用法与JSP类似,使用`<?php ?>包裹代码`
```php
<html>
<body>
<h1>欢迎来到我的网站</h1>
<?php
$time = date('Y-m-d H:i:s');
echo "<p>当前时间:$time</p>";
?>
</body>
</html>
```
也可以这样写这样就类似于CGI程序的写法了
```php
<?php
echo "<html><body>";
echo "<h1>欢迎来到我的网站</h1>";
$time = date('Y-m-d H:i:s');
echo "<p>当前时间:$time</p>";
echo "</body></html>";
?>
```
### LAMP
这种动态网页的编写方法流行了很多年,形成了一个叫做"LAMP"的套路Linux+Apache+MySQL+PHP;就是将电脑装上Linux系统运行Apache这个HTTP服务端使用PHP作为动态脚本语言,使用MySQL来存储和访问业务数据。
需要注意的是这四个都是开源免费的软件LAMP的兴起是开源软件运动的标志之一。开源软件使得部署网站的成本极大地降低推动了互联网的繁荣。如果你想建站那时候互联网上到处都是"LAMP一键安装脚本"之类的东西现在也能搜到不少。一个下午就能上线一个完备的网站。这些技术的出现使得开网站不再局限于大企业才能办得到的事情一时间互联网上到处都是个人或者小单位的网站甚至后来出现了诸如Wordpress之类的方案不会写代码也能开网站。繁荣的生态网页上丰富的动态内容形成了被我们称为“Web 2.0”的时代。
LAMP的一个典型反面是微软全家桶Windows Server+IIS+SQL Server+ASP这套技术方案需要给微软缴纳高额的授权费用在当时基本上只限于追求稳定和售后服务的企业使用。我们的文章也没有怎么介绍这些技术。不过IIS对于个人用自己的电脑建站还是非常方便的。(当然国内没有公网IP那是另一回事了╮( ̄▽ ̄)╭)
## MVC架构
随着网页的不断发展,出现了复杂的业务逻辑,并且页面也越来越复杂;这时候,把页面和程序逻辑混在一起的嵌入式脚本在庞大的复杂代码情况下变得难以维护。
而且它们都有一个特点依赖于具体的某个HTTP服务程序PHP依赖于Apache的`mod_php`或Nginx的FastCGI支持JSP依赖于Servlet容器例如Tomcat,这增加了开发与部署的耦合度更使得项目难以管理。嵌入式脚本难以复用已有的代码这些代码的测试也需要模拟HTTP环境难以测试。
此时兴起了一种新的Web后端编程思想它就是MVC(Model-View-Controller)
简单来说根据大量的开发经验累积人们发现一个动态网页的后端通常需要做到这3件事情
- Model:使用面向对象的方法为业务建模,把数据对应到编程语言中的对象,把对数据的操作对应到对象的方法。负责对业务数据进行实际的操作。
- View输入数据负责把数据变成用户可以直观看懂的HTML。
- Controller负责协调调用上面两个部分。
![MVC](/img/blog/model-view-controller-light-blue.png)
例如,当我们在报修系统中想要查询一个片区的全部报修时,首先我们访问`http://wwbx.zsxyww.com/QueryTickets.php?zone=朝晖&status=pending`
然后服务器根目录下的`QueryTickets.php`程序就会接受到我们的请求(在MVC时期的PHP程序已经不像嵌入式脚本那时混写HTML和PHP,整个文件就是以`<?php`开头的一整个脚本没有HTML)
`QueryTickets.php`脚本就是MVC中的Controller,脚本解析到我们想寻找朝晖片区所有待解决的报修,于是它调用一个函数`Ticket.Query()`但是Controller知道朝晖片区在数据库对应的编号是10,待解决状态的编号是0于是他把URI参数中的`朝晖`和`pending`改成`10`和`0`传递给函数;
这个函数会去数据库比如前面提到的MySQL里查询数据最终执行类似于`SELECT * FROM tickets WHERE zone=10 AND status=0;`这样的SQL语句然后把查询的每一行都对应一个Ticket对象返回一个Ticket的数组。这个函数以及Ticket类的定义就是Model负责的部分。
:::info
SQL(Structured Query Language)是进行数据库操作的标准途径你可以简单地把数据库理解成有更多功能和性能更高的Excel表格即使这个表格有上亿行数据库也能在不到几秒内精准执行复杂的数据读取或写入。
刚才的那个SQL语句就是让数据库找到所有在10号片区(朝晖)未解决的工单,给出这些工单的所有信息。是不是非常直观方便?
数据库往往是后端的核心。许多后端系统可以说就是SQL数据库的套壳它们的业务逻辑不会超过"CRUD"这也是为什么例如Supabase之类的产品能够如此的流行。
:::
Model是程序的核心。它不关心页面长什么样只负责处理和业务相关的数据。在我们报修系统的例子里它定义了一张报修单应该包含哪些信息如ID、地点、状态并提供了操作这些数据的方法如从数据库查询报修单、更新报修单状态等。这是网站业务逻辑的体现。
当Controller获得Model返回的数据时它就把这些数据移交View函数渲染调用View函数。View首先把Ticket对象里面的`10`和`0`改成`朝晖`和`待解决`然后检查客户端的UA,如果是电脑的话就在一行显示更多数据如果是手机的话就返回紧凑的界面。根据不同的访问设备预先在系统中存放了一些模板HTML文件view读取这些文件然后将数据放到里面返回给用户
这样用户访问`QueryTickets.php`时就会看到一个根据后台数据实时更新的一个页面。这就是一个简单的MVC架构页面的例子。
:::tip[提示]
哈哈这个例子其实是骗你的我们的报修系统既不是用的PHP,也不是用的MVC架构甚至路由都是虚拟的。这个例子只是让你比较好懂
:::
### 虚拟路由
实际上程序员们认为基于传统服务器文件的路由架构严重阻碍了后端系统的灵活设计。也就是说用户输入的URI,必须对应根目录里面一个实际存在的文件,比如上面的`QueryTickets.php`在后端就是一个实际存在的脚本。由HTTP程序负责调用这个脚本并且把脚本的输出发送过去。
MVC架构包括更新的设计都采用虚拟路由。也就是说URI不再匹配根目录里的一个文件什么URI匹配什么现在完全取决于程序员希望它匹配什么比如匹配程序里的某个函数不再一定是脚本语言可以编译语言例如C语言的函数把函数的输出传给用户。
通常的MVC设计下在MVC之前程序还有一个路由层客户端的HTTP请求首先到达这里经过这里解析后转交给不同的地方
举例来说明,当用户访问`http://wwbx.zsxyww.com/Tickets/朝晖/pending`的时候,程序员可以在路由层定义:所有以`/Tickets`开头的URI,全部转交`Query()`函数处理,`Query()`看到转交过来的请求头URI在`/Tickets`后面是`/朝晖/pending`就去数据库查询朝晖的待解决工单然后调用渲染函数返回HTML。在服务器根目录下面是没有`/Tickets/朝晖/pending`这个文件的。嗯...其实连根目录都不需要了,
发展到后来连HTTP服务器也没有了因为程序员们觉得每次都要配置一个独立的HTTP服务器比如Apache再来运行自己的程序有点麻烦。于是很多现代的Web框架干脆自己内置了一个迷你的HTTP服务器功能。启动程序时这个内置的服务器也一起启动了让开发和部署变得更简单。
当然这种模式下URI也可以传统地绑定到某个文件上。例如我们的官网`www.zsxyww.com`在接受到任何无效的URI时都会将请求路由到文件`404.html`上,表示没有找到你请求的东西,比如,`www.zsxyww.com/hahaha`,和`www.zsxyww.com/aaa/bbb`都没有在程序路由中规定一切超出规定的URI全部都路由到`404.html`文件上,返回一个静态的文件。
![现代Web后端](/img/blog/web_application_with_html_and_steps.png)
### MVC框架
MVC作为一种编程思想可以被程序员灵活地使用不过也有一些在编程语言基础上编写的MVC框架来约束程序员使用MVC的思想开发后端也简化了开发这种框架有很多而且不少编程语言都有我们介绍几个有代表性的
- Ruby on Rails 约定大于配置
- Django
- Spring Boot
:::info
这是三篇系列文章中的第**2**篇
点击以跳转:
[HTTP](/blog/Web的历史1⃣-HTTP)
**动态网页**(你在看的文章)
[Web应用](/blog/Web的历史3⃣-Web应用)
:::

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
# 给纯新手的网维快速入门指南-v2

2
blog/_archive_/README.md Normal file
View File

@@ -0,0 +1,2 @@
# index
This is post archive center,move legacy posts here~

View File

@@ -1,28 +1,14 @@
# 开发组首页 # ZSCNSD-DEV Documents
**欢迎来到中山学院网络维护科开发组!**\ 这里是ZSC网维开发组的文档中心。
**开发组是一个相对独立的小组,负责维护网维日常所用的系统,**\
**这里是开发组所维护系统的文档** ## 链接
## 项目清单
我们手头上的项目 - 我们的GitHub主页[Click Me](https://github.com/ZSCNetSupportDept)
### 网站 - 我们的自建Gitea服务[Click Me](https://gitea.zsxyww.com)
zsxyww.com,网维的官网
### 网维报修系统 - 开发组QQ:`995011093`
负责受理用户的故障保修,允许网维成员跟踪问题的解决情况,并管理工单\
目前所使用的是上一届开发组成员所开发的系统,目前我们不熟悉其架构和细节,计划开发新的报修系统 ## 关于
### 招新系统
招新的系统 如果对文档有任何问题请在GitHub页面提交Issue或者PR,或联系组长
### 基础设施
开发组所持有的基础设施,包括云服务器,域名等
## 你应该知道......
### 项目托管
我们的项目托管在github上私聊组长来获得进入organization的权限
### 文档编写
为了项目的持续维护对于我们的每一个项目都应该留有详尽的文档文档以markdown格式编写可以自动构建成静态网页详见**网站/如何修改开发组网站内容**
### 培训 资料
这里是一些资料,帮助你了解加入开发组工作的必要知识
- SSH教程https://wangdoc.com/ssh/basic
- git教程:
- WEB基础https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web
- linux命令
- markdown教程

View File

@@ -0,0 +1,7 @@
---
description: 项目的概述
---
# 概述
网维原来的老报修系统从13年开始开发16年完成的第二版一直用到了现在2025年确实有必要更新了

View File

@@ -0,0 +1,3 @@
{
"description": "..."
}

View File

@@ -0,0 +1,8 @@
# 网维报修系统
网维的新报修系统
import DocCardList from '@theme/DocCardList';
<DocCardList className="docs-card" />

View File

@@ -0,0 +1,24 @@
---
description: 项目的概述
---
# 概述
项目的概述
## 介绍
本站采用Docusaurus框架Docusaurus是一个静态网页生成器也就是说项目的构建目标是一堆静态网页文件拿去给HTTP服务器部署
要想为网站写内容只需要把写好的Markdown丢进项目特定的路径里Docusaurus生成器会自动把文件变成成品网站这样我们可以专注内容写作不用担心其它的
框架本身使用React本地构建时需要对应的前端工具链官方要求的运行时为`Node.js >= 18.0`,至于包管理器,就看个人喜好了,我们以`npm`举例;
## 结构
从项目根目录下开始看起:
- `docs`:存放wiki和开发组文档的内容
- `blog`:存放文章的内容
- `src`:存放其它不是Markdown,但是又属于网站内容的部分;例如独立页面(如首页)自定义CSS和React Component等
- `static`:存放静态文件,内容会被原样拷贝到构建目标的根目录下
- `docusaurus.config.js`:主配置文件
- `sidebars.js`:Sidebar(就是访问`docs`下文档时出现在左边的栏目)配置文件

View File

@@ -0,0 +1,3 @@
{
"description": "..."
}

View File

@@ -0,0 +1,24 @@
# 开发组网站
就是你所看到的网站;这个网站大概包含了三个部分:
1. 网维的新wiki
2. 开发组相关文档
3. 一个博客系统,可以用来放独立的文章
因为感觉没有必要搭建两个基础设施所以把wiki和开发组文档放在一起这样也比较方便运维
网站采用[Docusaurus](https://www.docusaurus.io)框架,详细文档移步官网查看
**项目地址**https://github.com/ZSCNetSupportDept/website
## 目录
import DocCardList from '@theme/DocCardList';
<DocCardList className="docs-card" />

View File

@@ -0,0 +1,2 @@
# 撰写内容
如何向wiki,开发组文档和文章板块添加内容

View File

@@ -0,0 +1,2 @@
# 项目构建与部署
如何构建与部署该项目

View File

@@ -0,0 +1,2 @@
# 项目配置
如何修改项目的配置(界面,行为等)

View File

@@ -1,17 +0,0 @@
# 报修服务器
## 概览
ip: **192.112.117.67**\
OS:**CentOS 7.6 64bit**\
配置:CPU - 1核 内存 - 2GB\
系统盘 - SSD云硬盘 40GB\
流量包 - 1000GB/月带宽5Mbps\
服务:报修系统
:::tip 提示
记得续费网站
:::

View File

@@ -1,35 +0,0 @@
# 网站服务器
## 概况
ip:**43.129.159.235**
OS:**Debian 10.2 64bit**
配置CPU - 1核 内存 - 1GB\
系统盘 - SSD云硬盘 25GB\
流量包 - 1024GB/月峰值带宽30Mbps
服务:官网(通过docker部署8090端口nginx反代)\
旧版wiki(docker3000端口,nginx反代)\
新网站(TODO:补充部署方式)
## 服务
### 官网
运行在docker下
### 旧版wiki
运行在docker下
### 开发组网站
由nginx直接代理
## Nginx
网站服务器的服务基本上都是走nginx的对于服务器nginx的配置需要注意一些事项
1. 当初安装nginx的时候用的是lnmp一键安装脚本这个脚本的配置和普通安装好像有点不一样nginx的主配置文件在`/usr/local/nginx/conf/nginx.conf`我修改了配置使其include了`/etc/nginx/sites-enabled`,如果要添加网站,请修改`sites-available`,并将需要启用的配置链接到`sites-enabled`下,不推荐使用脚本自带的`lnmp`脚本,
2. 关于网站的ssl证书要记得更新,配置文件中的证书和key的路径指向certbot默认存放的路径即可
:::tip 提示
记得续费网站
:::

View File

@@ -0,0 +1,28 @@
# 开发组首页
**欢迎来到中山学院网络维护科开发组!**\
**开发组是一个相对独立的小组,负责维护网维日常所用的系统,**\
**这里是开发组所维护系统的文档**
## 项目清单
我们手头上的项目
### 网站
zsxyww.com,网维的官网
### 网维报修系统
负责受理用户的故障保修,允许网维成员跟踪问题的解决情况,并管理工单\
目前所使用的是上一届开发组成员所开发的系统,目前我们不熟悉其架构和细节,计划开发新的报修系统
### 招新系统
招新的系统
### 基础设施
开发组所持有的基础设施,包括云服务器,域名等
## 你应该知道......
### 项目托管
我们的项目托管在github上私聊组长来获得进入organization的权限
### 文档编写
为了项目的持续维护对于我们的每一个项目都应该留有详尽的文档文档以markdown格式编写可以自动构建成静态网页详见**网站/如何修改开发组网站内容**
### 培训 资料
这里是一些资料,帮助你了解加入开发组工作的必要知识
- SSH教程https://wangdoc.com/ssh/basic
- git教程:
- WEB基础https://developer.mozilla.org/zh-CN/docs/Learn/Getting_started_with_the_web
- linux命令
- markdown教程

View File

@@ -1,7 +1,7 @@
# 开发组网站-部署 # 开发组网站-部署
本篇文章是开发组网站的部署流程备忘录 本篇文章是开发组网站的部署流程备忘录
## 流程 ## 开发部署流程
网站假设在我们的云服务器上服务器会自动从仓库的build分支拉取内容所以网站的部署流程是这样的 网站假设在我们的云服务器上服务器会自动从仓库的build分支拉取内容所以网站的开发部署流程是这样的:
1. 将website仓库clone到本地/pull拉取最新版本 1. 将website仓库clone到本地/pull拉取最新版本
2. 运行`npm start`在localhost:3000上运行网站的测试版本 2. 运行`npm start`在localhost:3000上运行网站的测试版本
3. 确认网站的最新版本没有问题后,运行`npm run docusaurus deploy`npm会自动构建网页文件推送到origin/build分支上(记得配置好你的ssh,联系组长来获取仓库的权限) 3. 确认网站的最新版本没有问题后,运行`npm run docusaurus deploy`npm会自动构建网页文件推送到origin/build分支上(记得配置好你的ssh,联系组长来获取仓库的权限)

View File

@@ -0,0 +1,9 @@
# 报修服务器
因信息安全,请移步我们的内部仓库访问相关信息
:::tip 提示
记得续费网站
:::

View File

@@ -0,0 +1,8 @@
# 网站服务器
因信息安全,请移步我们的内部仓库访问相关信息
:::tip 提示
记得续费网站
:::

View File

@@ -0,0 +1,44 @@
# 概览Git
这里是git的一个简短教程
## 目录
本教程的目录。。。
1. 介绍-做为版本控制系统的git
- 什么是版本控制系统(VCS)?
- git是如何进行版本控制的
2. git的基础概念
- 新建一个git仓库
- 跟踪文件,暂存文件
- 提交commit
- 分支(branch)介绍
- 合并-merge与rebase
- cherry-pick
- HEAD和相对引用
3. 远程仓库
- clone和origin
- 远程分支是什么
- fetch , pull & push !
4. 托管平台
- github
- gitlab
- gitea
5. 高级
- GUI
- git-gui
- vscode上的一些扩展
- lazygit
- 自建git服务
- gitea
- 参考
- pro git
- learngitbranching.js.org

View File

@@ -0,0 +1 @@
# 什么是版本控制系统(VCS)?

View File

@@ -0,0 +1 @@
# git是如何进行版本控制的

View File

@@ -0,0 +1 @@
# 新建一个git仓库

View File

@@ -0,0 +1 @@
# 跟踪文件,暂存文件

View File

@@ -0,0 +1 @@
# 提交commit

View File

@@ -0,0 +1 @@
# 分支(branch)介绍

View File

@@ -0,0 +1 @@
# HEAD和相对引用

View File

@@ -0,0 +1 @@
# 合并-merge与rebase

View File

@@ -0,0 +1 @@
# clone和origin

View File

@@ -0,0 +1 @@
# 远程分支是什么

View File

@@ -0,0 +1 @@
# fetch , pull & push !

View File

@@ -0,0 +1 @@
# github

View File

@@ -0,0 +1 @@
# gitlab

View File

@@ -0,0 +1 @@
# gitea

View File

@@ -0,0 +1 @@
# GUI

View File

@@ -0,0 +1 @@
# 自建Git服务

View File

@@ -0,0 +1 @@
# 参考

View File

@@ -0,0 +1,213 @@
# Web后端的简单介绍
这篇文章将带你学习构建一个Web后端的简单知识;作为一篇基础的教程,我们在教程里不会太多涉及诸如缓存,消息队列等高级内容,而是专注于基础的部分;我们也不会在一开始就涉及到具体的编程语言代码,而是将这篇文章作为一个理论性的介绍.你可能至少需要了解一些计算机的基础知识比如html等才可以了解文章中的一些概念.
## Web的历史
进行Web后端开发首先需要知道Web的一些概念实际上“后端”这个概念不是一开始就存在的随着人们对互联网需求的不断复杂化后端的概念才出现了我们首先来了解Web的发展历史
### 静态网页
互联网最开始只有静态网页所谓“静态”指的是网页中的内容是完全固定的在服务器端存储了内容固定的html,css或者是其他的什么文件用户访问网页就是通过互联网查看这些固定的文件。在这种情况下你访问一个网站从本质上更像是访问远端计算机上的某个文件夹
例如如果要建立一个网站那就在你的电脑上安装一个HTTP服务器比如apache,nginx在软件的设置里指定你电脑上的某个文件夹为网站的根文件夹然后去买一个域名网址的意思把域名的DNS绑定到你电脑的IP地址上那么其他人在浏览器上输入你的域名就可以访问根文件夹下面的内容了。比如在根文件夹下面放一个`index.html`,那访问域名时,浏览器就会默认显示这个文件的内容,可以在下面放一些图片,比如根文件夹下面有:
`/foo.jpg``/subfolder/bar.jpg`,那么别人在浏览器上面输入`http://yourdomain.com/foo.jpg``http://yourdomain.com/subfolder/bar.jpg`就可以访问到对应的文件。
这种方法很原始,但是如果需求不是很大的话,你也可以使用这种静态网页,你现在正在看的文章,其实就是一个静态的网页
这些访问都是通过HTTP协议来进行的在这里我们需要详细介绍HTTP协议以及HTTP协议的方法
#### HTTP协议
HTTPHyperText Transfer Protocol即超文本传输协议是一个网络客户端比如浏览器和服务端比如服务器当然普通的电脑也可以之间沟通的协议让浏览器可以对服务器上的某个文件进行操作最常见也是大家最熟悉的用途就是获取这个文件然后显示出来我们上面举的例子包括我们日常浏览网站的本质就是在获取服务器上面的内容(实际上HTTP协议可以做的不止这些下面会讲到)
一个完整的HTTP通信包含了请求和回应,请求有客户端发起,回应是服务端返回给客户端
##### HTTP的请求
严谨地说一个HTTP请求包含请求头(HTTP Request Header)和请求体(Request Body)一个HTTP的请求头主要包含了
- 目标网站:资源存在的网站,例如`example.org`
- URL,用于指定需要操作的是哪一个文件,例如`example.org/hahaha.txt`
- 方法用于指定操作即对URL指定的资源进行什么操作比如访问这个文件
- 自定义参数前面说的URL和方法都是通过键值对的形式存在于请求头上的作为请求头的参数键值对就是形如`a=b`的表达式你也可以自定义一些键值对在请求头里这表现为附加在URL之后的一系列键值对通过?开头,&分割,例如`example.org/hello.html?locale=zh-CN&custom=wuwuwu`,这就告诉服务器:两个参数:`locale=zh-CN,custom=wuwuwu`这些参数是可选的自定义的参数可以用于被后端解析现在不理解也没关系关于URL参数的话题我们在之后谈
- cookie:cookie是服务器放在浏览器里的一些临时缓存可以干一些事情当然需要有这个东西才会在请求头里带着我们也以后再谈
对于某些方法,需要在请求时向服务器夹带一些东西,请求体就是装载这些东西的
###### HTTP方法
HTTP方法定义了这个请求具体要对指定的文件做什么其中
- GET:获取指定的资源
- POST:上传指定的资源
- PUT:更新指定的资源,如果没有就创建一个
- PATCH:修改指定的资源
- DELETE:删除指指定的资源
- HEAD:和GET差不多但是只要求服务器返回回应头可以用在试探文件的大小上来判断文件的更新情况从而决定下一步操作
我们日常使用浏览器,比如在地址栏中输入`baidu.com`,其实就是在对这个地址做GET请求一般用户使用浏览器自己是不能做出除了GET之外的请求的但是其他请求在现代的网站中被经常使用这其实是前端脚本在工作以后会解释
如果使用某一些方法的话需要上传一些东西那么这些东西就需要放在请求体里面比如POST等
##### HTTP的响应
其实回应也分为回应头和回应体,回应头主要包含:
- 状态码针对请求的回应有对应的状态比如如果GET请求没有问题成功返回的话就返回200 OK状态码如果找不到请求里对应的文件就会返回`404 Not Found`
- 内容格式:向浏览器说明回应体(若有)是什么格式的,文本文件的编码设置等比如html文件图片这决定了浏览器如何对待这些文件
- 内容的大小:返回所请求资源的大小(若有)
回应体就是包含了回应的主体内容了如果是GET请求的话那么就回应了所GET文件的内容如果是其他请求的话可能也会没有回应体具体看使用的方法
##### 一个例子
`GET`方法从服务器获得一个资源我们在浏览器的地址栏输入一个地址时就是在对这个URI做`GET`请求,前面的例子也是通过`GET`方法来进行的。
比如,发送`GET developer.zsxyww.com/test/test.txt`,那么就会把我们服务器上的test.txt这个文件发过来
`POST`方法向服务器上传一个资源,例如使用某个客户端发送`POST http://example.org/someprogram.exe`在request body里面带上你的这个文件那么`example.org`网站的根目录下就会多出一个叫做`someprogram.exe`的文件
除了上面介绍的这些方法,还有`DELETE`,`PATCH`等方法,分别对应了删除,修改一个资源,你可以在你的电脑上通过`curl`等程序,或者通过浏览器控制台来进行常规的`GET`之外的方法请求
:::tip 提示
httpbin.org 这个网站可以让你试验HTTP协议的方法
:::
不管使用的是什么方法HTTP协议传输的对象都是一些固定静态的文件这些文件的内容是什么就是什么不会变化这样的网页就叫做静态网页。
### 动态网页
这样的网页是不能满足大家对互联网的需求的举例子来说淘宝上有数不清的商品在售卖如果淘宝为每一个商品都在服务器目录下面创建一个html文件好让大家通过访问`http://taobao.com/someproduct.html`来查看商品信息,那这个工作量就非常大了,还有一些更重要的问题:这样的网页,基本上没有交互的功能,我们希望用户可以点击按钮就能购买商品,商家填写表单就能上传商品
#### CGI
这些都是静态互联网无法解决的问题所以程序员们开发了一个叫CGI(Common Gateway Interface,通用网关接口)的技术这种技术在用户请求网站的内容时让一个脚本劫持用户的请求返回给用户一个脚本动态生成的html文件比如如果用户想知道报名数据库里面目前所有的报名人员发送`GET http://example.org/allVolunteer.html`CGI程序发现给本机请求`allVolunteer.html`这个文件,并且程序的代码里写了:如果接受到对`/allVolunteer.html`的请求那就去查找数据库里面的全部报名人员并将返回结果插入到一个模板html文件中。程序返回这个文件于是用户就受到了CGI程序动态产生的html.
虽然CGI现在很少见了但是将一个发送到服务器的地址请求劫持到脚本函数上是现代动态网站的常用思路。
#### JavaScript
除了服务器浏览器也在为适配动态网站而更新。在1995年网景公司的员工发明了一种编程语言叫做"JavaScript",这是对当时新兴的Java和Java Applet的回应这种语言最大的特点就是它被设计在浏览器中运行并且可以调用相关接口来操作页面htmlcss内容和进行HTTP请求他们让自己家的网景浏览器率先支持了这种编程语言(这个浏览器就是火狐浏览器的前身),这极大的提高了浏览器对于动态网页的支持。
#### AJAX(Asynchronous JavaScript and XML)
尽管是在浏览器里的语言但是作为一个完整编程语言的JavaScript还是非常强大的在有了操作DOM,发起HTTP请求的能力后JavaScript,搭配一些后端的程序可以做到CGI传统动态页面没有办法做到的功能动态更新用户html页面上的内容。传统的后端CGI,可以动态生成html,但是这个html生成之后到用户的手里还是不会变化的而JavaScript作为一个编程语言,通过运行在用户浏览器,可以操作html内容和发起HTTP请求便可以自己异步地对服务器发送一些请求依据这些内容便可以部分改变用户浏览器所显示的HTML,CSS只需要浏览器重新渲染一遍就行了这种技术就叫做AJAX,Asynchronous JavaScript and XML
AJAX与传统动态页面的不同点是在获取新数据时不是刷新全部的页面而是让JavaScript操作页面的部分内容。同时后端也不是返回html而是返回一些可以被JavaScript理解的序列化数据例如纯文本、XML,JSON等前端的脚本根据这些数据来操作用户的html
##### 例子
比如在浏览我们的wiki网站时虽然我们的wiki是静态网页你会发现页面的大部分元素都是重叠的比如页面最上面的导航栏sidebar,页脚等样式也是一样的在切换不同的页面时每次获取html都要重新获取这些重复的部分这样就造成了一些浪费如果使用AJAX技术那么只需要第一次打开网站的时候加载这些框架性的元素然后再加载一个JavaScript脚本点击sidebar的时候就将那个文章的内容本身拿过来然后替换掉原有的页面内容这样就更加节省这种部分更新页面内容而不重新加载整个页面的技术就叫做AJAX
再举一个例子,比如我们的报名系统有一个查询功能如果输入的用户在数据库存在的话返回这个用户的全部信息如果不存在那么要给用户显示一条错误信息这种信息如果要单独给用户发送一个新页面的话是很麻烦的用户端的体验也不好我们希望在按下查询按钮之后直接在原来的页面旁边显示服务器返回的结果如果没有AJAX技术那么我们只能把用户的当前页面重新发过去但是把查询结果也放里面因为传统没有JavaScript的网页没有办法对数据进行一些简单的操作只是被动的渲染html.css文件而AJAX技术就允许我们直接把返回的数据本身发送到客户端而且发送的数据也不止局限于HTML,CSS,而可以是一个XML,JSON,或是直接返回状态码,让客户端脚本负责解析这些数据,并将这些数据变成浏览器其他部分可以直接渲染的文件
当一个URL不是返回一个HTML数据而是返回一些不是给用户本人准备的数据时当这些路径不止于接受GET请求时这些路径就和我们传统静态网站的URL代表一个文件时所表现的路径有所不同了
这些后端路径不是给用户设计的通过浏览器直接访问这些地方大概会返回一些用户难以读懂的代码他们是给JavaScript,或者另一种程序设计的这种路径就叫做web API他们是两个程序通过HTTP交互的地方而不是人机交互的界面我们先举一个例子再解释这个问题
:::tip 提示
AJAX技术在今天已经非常常用了以至于很多人都意识不到他们在使用AJAX技术
:::
##### 一个AJAX报名系统的例子
下面举一个例子来详细说明AJAX的工作原理用户需要通过一个网页进行某项活动的报名填写个人信息然后点击网页上的提交按钮服务端会返回报名的结果成功还是失败与传统的方法不同服务器返回信息时不是重新返回一个HTML,而是让浏览器直接在原有的界面上(比如提交按钮的下面)显示报名的状态
用户通过浏览器输入地址,使用`GET`方法发起对`http://example.org/submit.html`的请求服务器获得请求后在root目录下面找到submit.html文件,浏览器得到文件后开始解析渲染这个文件发现这个html在头部又要求浏览器向服务器获取`submit.js`文件,于是浏览器不需要用户处理自己又发送了一条`GET`的HTTP Request,并且执行返回的脚本这个脚本的内容是监听html文件中提交按钮的“点击”事件当按钮被点击时执行某个函数。
返回的html文件包括了提示框要求用户输入姓名手机空闲时间等信息在这些输入栏的最下面有一个提交按钮当点击这个按钮时脚本就会被激活脚本执行的函数将读取用户从上面输入进来的内容做一些简单的认证比如说手机号的格式等然后将这些信息组织成一个XML文件当然,AJAX中的X就是XML咯现在其实也可以用其他的方法序列化比如JSON什么的向服务器发送一个`POST`请求,地址是`http://example.org/api/submit/submit.php`,在请求体中包含刚才的XML文件。
服务器在接收这个请求后,就会将,这个请求的上下文全部转交给`submit.php`这个脚本脚本再做一些工作录入数据库如果一切都成功了就向客户端发送回应成功反之则回应失败的消息回应的内容可以是一个纯文本或者直接是状态码比如就返回一个JSON:
```JSON
{
"status":"success",
"submit":{
"name":"小明",
"freeday":"2023-11-25",
"phone":10000000000
},
"createdAt":"2023-10-25_9:23:22"
}
```
在JavaScript脚本接收到回应后根据返回的内容操作html文件的内容在提交按钮的下面一行插入一个文本块
```HTML
<div id="json_responses">
<p id="json:status">提交成功!你提交了:</p>
<p id="json:submit.name">姓名:小明</p>
<p id="json:submit.freeday">空闲时间2023-11-25</p>
<p id="json:submit.phone">手机号10000000000</p>
<p id="json:createdAt">服务端提交创建时间2023-10-25 9:23:22</p>
</div>
```
或者其他的信息
#### URI在现代的意义
从刚才的这个例子中我们可以看到网站的URI,其实慢慢的不止可以指代一个文件了,他更多的是指代一个资源,或者一个业务,向`submit.php`提交一个`POST`请求,难道是在远端创建一个`submit.php`程序?其实在这里更多是指将客户端的数据上传到这个`/api/submit/submit.php`的业务窗口,我们的后端开发也是建立在这种对虚拟的路径的请求下的。例如我们设计一个报名系统我们可以设计一个API接口叫做`POST http://api.yourwebsite.io/newVolunteer`,接受浏览器js的报名信息提交在服务器根本就没有`/newVolunteer`这个文件,连文件夹都不一定会有,全靠路由在工作(见下篇文章)
### Web应用
#### WebSocket
HTTP的动态网站已经很好了但是协议本身有一个缺点:一个HTTP连接分为请求和响应只能由客户端发起请求服务端返回响应如果客户端没有先发一点什么给服务端的话服务端是没办法先给客户端发信息的这就给一些更加复杂的要求增添了障碍比如通过浏览器和别人聊天需要接受来自服务器发给你的其他人的聊天的信息或者是在浏览器上玩游戏需要和服务器交换数据。这可以通过轮询来解决但是这样还是不方便。
WebSocket是一个全新的协议支持客户端和服务器的全双工通信即客户端和服务器都可以主动地发消息而且可以同时进行而且是采用较小的数据帧格式降低了网络开销提高了数据传输速度。WebSocket在建立连接后保持长时间有效不需要为每次消息发送重新建立连接因此效率更高。
为了兼容HTTP协议WebSocket也是监听80和443端口(HTTPS),握手采用了HTTP协议通过升级协议来建立连接如果可以升级服务器会返回101状态码升级连接.
:::info 信息
对于WebSocket过于详细的介绍超出了本篇文章的内容可以自行了解
:::
##### Server-Sent Events(SSE)
WebSocket是一个全新的协议兼容性可能不是那么好如果要求比较低的话可以看一看Server-Sent Events,这个协议基于HTTP,允许服务器主动给客户端发送信息,当然也请自行了解。
#### 在Web上运行应用
传统观念里一个应用程序是在计算机上直接运行的但是在介绍了上面的技术之后我们可以想到在Web上也是可以运行应用程序的通过现代的高性能JavaScript运行时可以提供类似于原生的运行速度通过WebSocket,可以快速的更新内容现在的HTML和CSS也足够强大用户的机器性能也越来越强了而且开发Web应用可以直接使用成熟的Web技术栈在浏览器中运行也更安全以至于现在很多本地的应用也开始使用Web技术了(electron)。
例如我们所使用的腾讯文档支持多人协作编辑就使用了WebSocket技术来向你主动发送其他人对文档编辑的信息
#### 单页应用(SPA)
一个现代的网站或者说一个提供服务的Web应用流行单页应用架构顾名思义服务器只会在用户打开网页时加载一段html文件后面的全部内容都是通过js动态更新的js和服务器的后端接口交互主要是采用AJAX,对于某些复杂的需求可能会需要使用前面的技术WebSocket或者SSE
`React.js`就是贯彻单页应用思想最彻底的前端框架,单页应用的坏处就是打破了为静态网页文件设计的“收藏”功能和前进后退也不利于SEO和无障碍因为用户在网站上只打开一个网页网页的内容根据用户操作由浏览器脚本动态更新而生成的html也大多没有做语义化优化难以被理解和解析
SPA的例子就是邮箱应用比如Gmail,通过浏览器访问你的邮箱通过邮箱的主页面点某个邮件你并没有进入一个新的页面而是在原有的页面上内容变成了邮件查看的界面如果在主页面上点击发件的话同样也没有一个发件页面而是直接呈现发件的UI
有时候通过AJAX调用API的HTTP交互没办法满足一些需求比如说服务器主动推送信息或者流式传输比如直播平台游戏等这个时候就需要使用前面提到的技术前面的腾讯文档就是一个例子还有就是网络聊天室matrix之类需要向浏览器主动推送信息还有直播平台需要将源源不断的多媒体数据传递到用户那里还有网络游戏需要快速在浏览器和服务器之间交换游戏数据但是一般这些应用的基础框架都是建立在传统AJAX上的只是业务部分采用其他协议实现这些现代的应用慢慢地将计算量转移到了前端而后端只负责存储和提供查询数据甚至后端都不用负责产生html,只需要提供API,来为前端提供数据就行
##### WebAssembly
WebAssembly是最近新出现的技术他允许开发者将C/C++ , Rust等原本的一些编译型语言编译成浏览器可以执行的字节码使得在浏览器中也可以执行这些程序目前也有一些使用WebAssembly的应用可以去看看最大的好处就是不会JavaScript也能开发前端也可以复用以前的代码当然这个其实是前端的内容
## Web后端-是干什么的?
前面用非常长的一段文字来介绍Web的发展历史就是为了说明Web后端是干什么的或者说编写一个Web后端需要干什么
如果你想写一个静态网站那么简单的http服务器就可以满足你不需要你手动写什么代码如果你想写一个基于AJAX的服务比如我们网维现在的报修系统那么你需要设计好API,和前端沟通好序列化相关事项或者是返回JSON信息什么的让前端处理还是返回html让浏览器渲染;如果你想写一个WebSocket的Web应用那就要难一些了可能需要掌握一些并发编程的知识才可以写出一个可以使用的服务
我们接下来的教程将注重开发一个现代的AJAX后端服务同时辅助提供一些静态文件托管的功能。
### Web后端的组成
一个Web后端主要由以下部分组成
- 路由(router)
- 处理(handler)
- 数据库/ORM
- 鉴权
- 模板(如果需要)
详细的信息,请阅读下一篇文章:[Click Me](./基于HTTP的Web后端的组成)
:::tip 提示
读完这篇文章之后,你可以回顾文章里的内容,问一问自己:
- Web经历了哪些发展阶段
- 前后端之间是如何使用HTTP协议交互的
- AJAX技术是什么是如何支撑起现代的网页的(单页应用)
推荐在看下一篇文章之前看看下面的参考文章
:::
## 参考
在读完这篇文章后你可以去详细阅读这篇文档https://developer.mozilla.org/zh-CN/docs/Learn/Server-side/First_steps/Introduction (**强烈推荐!**)
这里是关于HTTP协议的详细介绍https://developer.mozilla.org/zh-CN/docs/Web/HTTP

View File

@@ -0,0 +1,156 @@
# 基于HTTP的Web后端的组成
一个基于HTTP的Web后端通常有以下部分组成:
##### 路由系统(router)
路由系统负责处理用户访问网页时的请求路径/方法,并转交给对应的处理者
##### 处理者(handler)
处理者负责处理用户的请求读取用户在URI中的参数和请求体中的内容如果有统称为上下文(Context),负责返回请求所对应的回应
有的系统还会继续细分,将业务层和接口层分开(这种情况下通常接口层是和路由功能合并的)
_最低要求是这个另外通常一个后端系统还需要连接一个数据库:_
##### 数据库
通常是兼容SQL协议的关系型数据库负责存储后端所需要用到和产生的信息
_其实很多后端系统无非就是对数据库的增删改查(所谓的CRUD),可以说这些系统就是数据库的一层方便wrapper_
##### 鉴权系统
通常,我们系统的内容不打算对互联网上的任何一个人开放,所以我们需要一些方法来验证访问者的身份
##### 模板系统optional
如果你打算通过后端渲染HTML返回到用户浏览器那你需要一套模板来方便地将动态内容插入到模板里面返回给用户如果是一个纯粹API的站点还是想直接把工作甩给前端你就可以不用配置模板
此外,还有一些外围的工作:
##### 反向代理
通常我们的Web后端服务不是直接暴露对外访问的而是经过一层代理的转发这样更加的安全配置也更加简单服务只需要监听本地端口
##### 配置系统
你的系统需要读取配置,比如监听端口,数据库连接,还有其他服务的密钥等
##### CI/CD
自动化配置构建,部署,测试等工作,让你专注代码工作,而不用把心思过多地放在部署构建这些工作上面
## 路由
假设你的一个报名服务架设在`service.io`上:
首先,用户访问这个网址时需要显示一段欢迎文字,然后将他们引导到报名的页面
那么,你应该在用户访问`/`时返回一个html文件里面含有导向`/volunteer.html`的超链接
`/volunteer.html`里面的前端代码需要以AJAX的形式与后端API交互比如
`service.io/api/register`接受POST请求前端上传报名人的信息后端录入数据库,并返回录入的信息全部以JSON序列化
`service.io/api/view`接受GET请求让这个报名人查看自己的报名信息返回JSON格式
`service.io/api/cancel`接受POST请求取消某个报名人的信息成功则返回相应状态码
`service.io/admin/viewAll`让管理员查看当前的所有报名接受GET请求
`service.io/admin/cancel`让管理员取消任意的报名,接受的POST
在现代网站设计中,我们不是在根目录下面创建对应的文件(实际上,连根目录都不需要了),我们使用一些叫做“路由器(router)”的模块,当用户通过一定的方法请求一定的路径时就把这些请求转交到相应的handler
### URI参数
参数在正常路径后面,以?开始,以&分割,以键值对的形式存在
例如:`service.io/api/register?name=小明&phone=10000000000&freeday=2024-9-25`
这样的参数可以被许多后端框架使用内置的解析器解析
### 参数化路径
这种路径通常是配合REST风格的接口来设计的比如
`service.io/api/users/小明`
类似于这样的路径,许多后端框架可以使用`service.io/api/users/:user`这样的形式来匹配在转交给的handler中可以读取`:user`参数,从而返回参数所指定的资源
### API设计
API的设计包括了路径的设计和接口格式的设计一般小项目可以相对地随便一点但是大项目还是需要认真一点的
#### 传统
我们刚才所举的例子就是一个传统的API设计一个路径就对应了一个业务点一般只会使用`GET``POST`来对应获取和上传,前后端的交互一般在文档里自行约定,或者采用内置的表单(如果数据比较简单的话)
#### REST
REST的意思是“表现层状态转换”英语Representational State Transfer缩写REST这种风格的要点是一个URI表示一个资源而不是一个业务同时充分地利用HTTP方法
例如,我们在前面定义了`Register`,`View``Cancel`三个API,如果是要上传什么就用`POST`,获取`GET`,一个路径表示的是一个业务而不是系统的某个资源下面来看看REST怎么写
`POST service.io/api/users/小明` 用户小明提交一个报名,具体的报名信息在请求体里,这将在数据库里面创建一个小明的报名记录
`GET service.io/api/users/小明` 用户小明查看自己的报名信息
`DELETE service.io/api/users/小明` 取消小明的报名
`PUT service.io/api/users/小明` 修改小明的报名信息,新信息放在请求体里面了
可以发现REST风格的API可以看作是对传统静态网页互联网的回归这种风格直观简洁兼容性更好更加利于缓存等
#### GraphQL
GraphQL是一种用于API交互的查询语言他意图解决接口格式定义和多次查询带来的复杂问题
首先后端需要支持GraphQL,然后前端需要在API请求中注明自己想后端用什么格式呈现什么想要的信息这样就不需要前端多次请求不同的业务了
这对大型系统或许比较友好,但是如果只是一些小项目的话,这可能有些复杂,具体可以自己去了解
## handler
handler可以说是一个后端系统的核心了因为他们是实际处理业务的地方
### 面向对象与模型
虽然可以使用其他的范式但是最推荐的是依据OOP的原则将需要处理的模型写成对象将一系列操作写成对象的方法
例如,报名系统本质上就是处理“报名人”这个对象的各种操作,我们可以定义:
```Go
type Volunteer struct{
config.DB
id int
Name string
Phone int
FreeDay time.Time
Note string
}
func (v *volunteer)Add()error{
if err:=db.addVolunteer(v.MainConnection) err!=nil{
return err
}
return nil
}
```
要设计一个登记报名的handler,就只需要将前端发过来的信息反序列化到Volunteer对象里然后调用Add方法即可这种思路就叫做面向对象
所设计的Volunteer和他的一系列方法就叫做“模型”
## 数据库
数据库为后端的业务数据提供了方便的存储和查询服务,这里指的是结构化数据,其他需求可以去看高级教程
### SQLite
这是个轻量级的数据库,一个数据库就是一个文件,通常用于业务量比较小的场景或者是本地开发的场景
### PostgreSQL
这个可以说是目前最厉害的开源数据库了,不仅提供了常规的结构化功能,而且对于一些简单的非结构化存储需求也可以胜任,但是本身的资源消耗是有点高的
### 选择数据库的各种考量
- 业务量如果业务量比较小的话就使用SQLite吧
- 兼容性:如果现有的环境和业务依赖于某个数据库,那么就继续用吧
### ORM
ORM是对数据库的一层抽象让你专注于业务逻辑的开发而不用担心具体的数据库问题如果对于性能或者其他的方面没有很大的需求的话建议在你的项目里使用ORM
## 鉴权
### Session
### JWT
### OAuth2.0
## 模板
### Jinja2

View File

@@ -0,0 +1,11 @@
# 高级教程
本篇是Web后端的进阶系列文章
## 缓存
### 为什么我们需要缓存?
对于某些需要高频读写的数据,放在数据库中的速度会比较慢,所以我们需要一个缓存俩提供快速访问,这些缓存通常放在内存中,提供最快的访问速度
### Redis 和 Memcached
## 消息队列
## 日志与监控
## NoSQL与非结构化数据

View File

@@ -0,0 +1,21 @@
# 后端API服务
## 介绍
该项目作为网维的统一后端API接口而设计连接网维的数据库并提供一系列接口给前端以支持网维日常的业务逻辑其他开发人员可以直接调用这些接口从而专注与前端以便于降低整个系统设计的复杂度
该项目采用Go语言编写Web框架采用echo,ORM框架为gorm,
## 项目地址
https://github.com/ZSCNetSupportDept/zscnetworksupport-api
## 构建
要想构建该项目,你需要安装`Go``make`,在一台linux机器上构建
输入`make install`即可安装本项目的依赖,而不构建
输入`make build`即可构建该项目,项目放在`make`文件夹下
## 部署
只需要把可执行文件放在生产环境下运行即可,本项目可能会提供一些静态文件访问,需要将`static`放在与可执行文件相同的目录下
## 配置
程序接受,且只接受一个参数,为配置文件的路径,关于配置文件的格式,请参照“配置”一章
## 运行
运行后程序会将日志和错误文件输出到stdout中你可以配置系统服务来使程序开机自启动将输出定向到日志或者stderr里
在运行程序之后你还要配置一些反向代理的软件来将流量导向程序所监听的端口你还要定期续期https证书以保证https访问

View File

@@ -0,0 +1,13 @@
# 配置
# 介绍
配置为一个`json`文件,其中,各个字段的定义如下:
`port`:一个数字,为程序所监听的端口
`database`:
- `Type`:一个字符串,指定了所使用的数据库的类型,需要在`MySQL` `PostgreSQL` `SQLite`中选择一个
- `Path`:对于SQLite填写数据库的位置对于其他的数据库填写URL
- `Port`:数据库所监听的端口SQLite可以不用填以下也是
- `User`:数据库用户名
- `name`:数据库名称,
- `Password`:数据库密码

View File

@@ -0,0 +1,22 @@
# 结构
仓库项目的结构如下:
`main.go`:项目程序的起点,从此处开始运行
`config`:存放了读取配置,提供配置变量相关的代码
`databases`:提供了连接数据库相关的代码,提供主数据库连接变量(Usingdb)
`handlers`:为handler的存放地点一类业务为一个对象handler作为其方法实现
`model`:业务所采用的模型,定义了一个业务对象的存储和相关方法
`use`:在这里注册所有需要提供的API和中间件,程序将使用这里的配置
`make`:存放了构建所产生的程序
`static`:存放了静态文件以进行路由
## 原理
当程序运行时:
main()将调用sysinit(),读取参数中的配置,将配置记录在全局变量`config.UseConfig`

View File

@@ -1,35 +1,26 @@
# 网络维护科wiki首页 import DocsCard from '@site/src/components/wiki_menu/index';
import DocsCardList from '@site/src/components/wiki_menu/index';
# 网络维护科wiki
你好欢迎访问中山学院网络维护科wiki这里力求记录网络维护工作的累积经验📝
wiki的内容都由历代网维的成员整理总结在GitHub上开源。欢迎你[贡献自己的内容!](https://github.com/ZSCNetSupportDept/website/tree/master/docs/wiki)
:::tip 提示 :::tip 提示
**至手机用户:点击页面左上角的三条杠打开导航栏,以浏览本站**\ 本站在电脑端下显示效果最好,推荐使用电脑端访问
**推荐使用电脑端访问**
::: :::
## 介绍
这里是中山学院网络维护科wiki,记录了网络维护工作的相关知识wiki的内容都是历代网维的成员整理总结的你也可以贡献自己的内容
:::warning 注意
本wiki还在大量开发中许多条目可能会不完善或者缺失仅供开发组组员和正式成员测试参考使用,如果你对wiki的编写和维护感兴趣可以访问我们的[github源代码仓库](https://github.com/ZSCNetSupportDept/website),具体的细节请联系开发组组长 ## 目录
☝🏻🤓*不知道从哪里看起?可以先看[快速入门指南](/blog/2024/09/27/给纯新手的网维快速入门指南)*
<cardContainer>
<DocsCard/>
</cardContainer>
## 关于
1. 本站是新版wiki在界面上对旧版wiki做了一次升级。但是在内容上新的wiki并不是完全基于旧版wiki而来所以有的内容只在旧版有这里没有。虽然开发组正在逐步迁移不过为了方便大家查看旧版wiki也将保持长期开放点击[这里](https://wiki.zsxyww.com) 来访问。
2. wiki的内容属于网维内部的秘密信息请不要随便外传谢谢
:::
## wiki的内容
**wiki基本由以下部分组成**
### 技能
进行网络维修需要掌握的技能
### 基础知识
有关校园网络以及相关概念的基础知识
### 片区介绍
记录了我们需要维护的片区的信息,以及在这些片区值班的注意事项
### 故障介绍
当网络发生故障时,客户端通常会返回一个错误码,来提示可能发生的错误,这里,按照运营商分类,介绍常见的故障错误码,**如果你遇到的故障在这里没有收录请转到旧版wiki**\
提示:对于电信客户端,可以用客户端自带的修复软件来修复
### [MacOS修理指南](./MacOS修理指南)
MacOS的修理事项
### [资源](/docs/wiki/资源)
我们在这个网站上存放了一些可能会有用的资源,以方便大家下载,如果你有资源想要上传的话,可以联系开发组
### [杂项](/docs/wiki/杂项)
这里是一些不便于归类的文章的收纳处,如果你的文章不太好归类,可以放在这里
## 旧wiki
这里是新版wiki,但是旧版wiki依然可用你可以通过[wiki.zsxyww.com](https://wiki.zsxyww.com) 来访问,上面还有没有迁移的许多旧文章,我们目前在逐步转移这些文章
## 贡献
如果你想为本wiki添砖加瓦可以在仓库里PR:[wiki的github仓库](https://github.com/ZSCNetSupportDept/website)

View File

@@ -1,20 +1,86 @@
---
description: 教你如何查看电脑的IP
---
# 查看ip # 查看ip
许多情况下检查故障的第一步就是查看用户在局域网中的ip,以进行进一步判断本文将教会你如何查看ip,以及不同的ip地址意味着什么\
我们的负责范围是以太网连接所以这里的ip更多的是指以太网ip,关于F-Young的路由器ip,同理 许多情况下检查网络故障的第一步就是查看用户在校园网中的ip,以进行进一步判断
所以你需要学会如何查看电脑所连接的网络的ip,了解不同ip地址的含义.
(网维的负责范围是以太网连接所以这里的ip是指以太网ip.)
## 操作 ## 操作
1. 打开cmd界面你可以按win+r弹出运行框输入cmd,然后回车 ### 方法一:命令行
2. 在cmd提示符后输入`ipconfig`命令,此时应该会输出结果 1.<kbd>win</kbd>+<kbd>r</kbd>弹出"运行"框,输入`cmd``powershell`,按下回车。
3. 根据结果进行下一步操作 > 或是在开始菜单中寻找对应的程序,打开终端。
2. 在终端下输入`ipconfig`命令;
3. 此时应该会输出结果通常由许多栏目组成我们只关心其中的“以太网”部分的IPv4地址。
### 方法二:控制面板选项
1. 打开“网络和拨号连接”控制面板:
> 你可以打开控制面板 → 网络和 Internet → 网络和共享中心 → 更改适配器设置(左侧菜单)。
> 或是按<kbd>win</kbd>+<kbd>r</kbd>,输入 ncpa.cpl然后按回车。
> 也可以在终端输入`control ncpa.cpl`来打开。
2. 打开 ncpa.cpl 后,会看到所有网络连接的列表(如`以太网``Wi-Fi``蓝牙网络连接`等),点击`以太网`查看其中的IPv4地址。
## 结果 ## 结果
### 无地址 ### 无地址的情况:
检查物理连接
### 172.xx.xx.xx地址 如果无法获取IPv4地址的话说明电脑到交换机之间的物理连接是不通的你需要逐步排查到底哪里出现了问题。
16是移动\
17是联通\ 常见的情况可能有:
18是电信\
如果出现问题检查ip的运营商和用户注册的运营商是不是相同的如果不同那可能是线路接错了 - 用户使用了网线转接器,转接器出现问题
### 169.254.xx.xx地址 - 用户网线问题
这个地址是ip分配失败时的保留地址如果DHCP服务运行失败电脑就会默认分配了这个地址好像这个现象一般不会影响正常网络连接如果没问题就不需要管\ - 墙线问题
有人反馈说usb2.0的转接口也会导致这个问题,我在[这里](/docs/wiki/杂项/关于169.254.x.x的ip问题汇总)开了一个专题页,你们可以把遇到的情况记录在这里 - 用户在交换机那头的线缆没有接好
### 192.168.xx.xx地址 - 交换机断电(有电就可以获取IP查不到IP说明交换机没有开启)
学校有线网的ip是172的如果出现了192.168地址检查用户有没有连接wifi,如果用户和机房之间还有路由器的话,检查路由器工作模式
列举的原因仅供参考,实际出现的情况可能千奇百怪,请[利用寻线器系统地排查故障](/docs/wiki/技能/网络相关/对线#系统地排查)。
### 172.xx.xx.xx地址的情况
这是正常情况下的地址,其中:
|IP地址的号段|对应的情况|
|- |- |
|172.20|已接入移动网络|
|172.19|已接入电信网络|
|172.18|已接入联通网络|
如果用户无法在网络中认证,请询问用户账号所属运营商,用户使用哪个运营商,就必须把线路接到对应的运营商设备中去。
:::tip 提示
如果移动用户获取到172.17.x.x的IP的话请上报组长通常是移动的交换机还没有完成OTA更新。
:::
### 169.254.xx.xx地址的情况
出现这个地址意味着运营商的DHCP服务器工作不正确。这通常不是用户设置的问题是运营商那边的交换机设置出现问题。
如果出现这个IP不能正常连接网络的话把用户的线路接到一个不同的交换机上再尝试连接。如果交换机那边没有多余的端口或是端口都无法正常连接的话拍下交换机标签和出现情况的片区楼层一起上报当日的值班组长。
移动出现这个问题的情况比较多,有时候这不会影响正常网络连接,如果没问题就不需要管。
*有人反馈说usb2.0的转接口也会导致这个问题,我在[这里](/docs/wiki/杂项/关于169.254.x.x的ip问题汇总)开了一个专题页,你们可以把遇到的情况记录在这里*
### 192.168.xx.xx地址的情况
首先,我们说的是**有线网**的地址喔!**不要**看用户所连接的**Wi-Fi的IP地址**在修网过程中通常应该首先断开用户的Wi-Fi连接以免干扰有线网环境。
如果你确定用户以太网IP是192.168.xx.xx,请检查宿舍路由器的工作模式。路由器需要设置到**有线AP模式**意思是路由器以一个交换机的模式工作将用户流量直接发往WAN
学校的路由器有不同的型号和牌子,它们的设置文档在[ZSC网维下载中心](https://gitea.zsxyww.com/i/Downloads/src/branch/master/%E8%B7%AF%E7%94%B1%E5%99%A8%E8%AE%BE%E7%BD%AE%E6%96%87%E6%A1%A3)
:::warning 注意
如果是光猫出现了这种情况,不要乱动,直接上报组长。
:::
如果用户到交换机没有路由器中继的话出现192.168.xx.xx地址也是直接上报组长。

View File

@@ -1,11 +1,85 @@
# 拨号 ---
本文章教你如何使用PPPoE 拨号上网\
注意如果用户运营商是电信请使用电信专用client拨号本教程只适用于联通和移动校园网宽带 description: 教你如何连接校园网
## 操作
---
# 连接校园网
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::
用户需要进行登录,向运营商证明自己的身份,才能连接到运营商提供的网络服务,这些方式被我们统一叫做“拨号”,只有拨号成功了才可以连接网络
自从2025年开学移动更改认证方式以来现在的各家上网拨号流程已经非常割裂所以我们重新写了这篇文章力求汇总目前已经掌握的知识
## 电信
电信使用专用的客户端进行上网认证,一般来说连接没有问题的话,试图访问网站就会跳转到下载的网址,然后下载app即可
如果没有跳转的话,记住网址是`zsteduapp.10000.gd.cn`进入后选择对应的OS下载安装
安装后输入账号密码连接(参见[这里](/docs/wiki/基础知识/学校内的运营商#账户和密码 )),即可上网了
如果出现错误可以使用自带的排障工具如果还是有问题参阅wiki里面的相关章节错误码
## 联通
联通使用系统自带PPPoE拨号上网的方式进行认证
1. 在“开始”菜单中点击“设置” 1. 在“开始”菜单中点击“设置”
2. 点击"网络和Internet",在左侧点击“拨号” 2. 点击"网络和Internet",在左侧点击“拨号”
3. 点击“设置新连接”,点击"宽带(PPPoE)" 3. 点击“设置新连接”,点击"宽带(PPPoE)"
4. 输入账号和密码
5. 测试连通性 4. 输入账号和密码(参见[这里](/docs/wiki/基础知识/学校内的运营商))
## 用户的账户格式和默认密码
取决于用户的运营商,具体信息看这里:[链接](/docs/wiki/基础知识/学校内的运营商) 5. 测试连通性错误请参见wiki里的“错误”章节
### 账号错误
有些用户的账号可能不是默认账号,见此:[Click Me](/docs/wiki/故障/联通特定/账号不正确)
## 移动
:::warning 注意
移动目前的上网方式涉及了两套账密,为了防止大家混淆了,首先在这里说明一下:
实际上,移动的这个上网界面是外包给锐捷做的,使用的是一个现成的校园网解决方案,叫做"ePortal";这个系统不只是我们学校在用,也不是只给移动用。所以为了方便一套代码到处卖出去,这个系统设计成"学校账号"和"运营商账号"绑定使用的方式。
"运营商账号"就是原来的那个,需要用户到营业厅办理,是手机号+密码组合这点和其它运营商是一样的。但是这个账号现在不通过操作系统的原生拨号来使用而是要向架设在学校内网的专门ePortal服务器结合"学校账号"来认证。
"学校账号"的目的只是证明你是我们学校的某个特定的学生。在第一次使用ePortal的时候需要注册,需要用户使用自己的学号来注册后续登录ePortal**也是使用这个账号登录**,在学校账号的设置界面,有一个"绑定"选项,在这里输入运营商那个账号,证明你,学校的学生,办理了运营商套餐。这样才能使用移动的校园网。
总结下:**使用校园网=证明你是学生的账号+证明你办理套餐的账号**,后者需要在前者的设置界面绑定。
:::
### 1.访问ePortal
ePortal的入口是`https://172.16.20.129:8080`,网址需要在校园内网环境才能访问(即连接了网线或者路由器)。我们强烈推荐在使用有线网访问时时关闭Wi-Fi即确保设备仅仅在连接学校内网否则有可能出现某些问题。
### 2.学校账号的注册
点击右上角的“自助服务”,或者直接在第一步访问相应的网址。输入学号和密码(初始密码是学号后六位),然后进入系统,为了安全考虑,需要强制修改密码。
修改密码的地方在首页菜单第一个,进去修改了就行。哦对,这个密码最好不要设置成常用密码,因为这个系统好像是明文存储密码的...
![password](/img/wiki/移动/640.png)
![password_](/img/wiki/移动/aaw.png)
### 3.绑定邮箱
我们非常,非常推荐用户绑定一个邮箱!因为如果学校账号的密码忘了,可以通过这个找回。而且这是唯一的方式。除非让管理层找运营商后台重置。
绑定邮箱的入口位于左上角`用户设置`->`安全中心`,在弹出界面绑定邮箱即可。
![email](/img/wiki/移动/axx.webp)
![_email_](/img/wiki/移动/ava.png)
### 4.运营商账号
点击主页设置最后一个"我的运营商",然后输入你的运营商账号,确认保存。
![account](/img/wiki/移动/qqa.webp)
![*account*](/img/wiki/移动/axi.png)
### 5.连接网络
这样子一般就可以连接到互联网了,在浏览器输入任意网址,会提示你登录,输入学校账号登录即可。另外可以开启无感验证功能,这样可以自动登录校园网。
![login](/img/wiki/移动/awq.webp)

View File

@@ -1,5 +1,5 @@
# 检查操作系统网络设备 # 检查操作系统网络设备
一台电脑可以有多个网络设备这些设备可以是具体的也可以是虚拟的例如一个以太网口可能对应一个网络设备一个Wi-Fi连接也是一个网络设备一个VPN隧道也是一个网络设备这片文章教你如何查看Windows操作系统中的网络接口设备 一台电脑可以有多个网络接口这些设备可以是具体的也可以是虚拟的例如一个以太网口可能对应一个网络设备一个Wi-Fi连接也是一个网络设备一个VPN隧道也是一个网络设备这片文章教你如何查看Windows操作系统中的网络接口设备
## 操作 ## 操作
1. 打开“控制面板” 1. 打开“控制面板”
2. 选择“网络和Internet” 2. 选择“网络和Internet”

View File

@@ -0,0 +1,3 @@
{
"description": "在维修过程中需要掌握的电脑操作~"
}

View File

@@ -0,0 +1,11 @@
# 电脑技能
维修的时候要使用电脑,这里介绍电脑的基本操作
*请选择一个板块查看:*
import DocCardList from '@theme/DocCardList';
<DocCardList className="docs-card" />

View File

@@ -1 +1,16 @@
---
description: 教你如何设置路由器(不涉及光猫维修)
---
# 设置路由器 # 设置路由器
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::
暂时还没写,设置文档请访问下载中心查看。

View File

@@ -0,0 +1,39 @@
# 寻线器-介绍
介绍寻线器的原理和用处,它是你成为网络工程师的基础
## 介绍
任何网络连接的最底层基础都是物理设备,如果网线,配线架或交换机这些物理设备本身出现了问题,我们网维也是要负责维修的。
在[`基础知识`](/docs/wiki/基础知识/学校的网络结构)板块中,我们已经详细介绍了学校网络的物理层架构。网维主要负责宿舍端口到楼层交换机这一段线路。也就是说,我们主要关注宿舍内的端口,床线和路由器;还有楼层机房中汇聚的这层楼所有宿舍端口的链路。
想象一下,在楼层机房密密麻麻的机柜和桥架中,面对着上百根外观一模一样的网线,如果没有标签指示端口对应的床位的话,我们该如何快速找到一根网线的两端?或者,当怀疑网络连接不稳定是网线本身的问题时,我们又该如何快速判断线缆内部的通断情况?
这时,一个功能强大但操作简单的工具——寻线仪,就成了我们解决问题的关键。我们会帮助大家快速了解寻线仪的工作原理,并熟练掌握其在网络维修中的核心用法。
## 认识寻线器
### 原理
一套标准的寻线仪通常包含两个核心部件:
- **发射器** (Emitter/Transmitter): 它产生一个特定频率的信号,并将其发射到目标线缆中。
- **接收器** (Receiver/Probe): 它探测这个信号,帮助我们在线缆堆里定位目标。
寻线仪的原理基于电磁感应。
当我们将发射器连接到一根网线的一端并启动后,发射器会沿着这条网线的铜质线芯发送一个带有特定频率的模拟或数字信号。这种信号的本质是导线内变化的电流,根据电磁感应定律,变化的电流会在导线周围产生一个变化的电磁场。
这个电磁场虽然微弱,但足以被灵敏的接收器捕捉到。当我们手持接收器的探头,靠近那一大捆线缆时,只有包含了我们发射信号的那根目标线缆,其周围的电磁场才能被接收器感知到。接收器在接收到信号后,会通过发出“嘀嘀嘀”的蜂鸣声或点亮指示灯来给我们提示。声音越响亮、越清晰,就代表探头离目标线缆越近。通过这种方式,我们就能从众多线缆中精准地把它识别出来。
### 作用
在网络维修的物理层故障排查中,寻线仪是不可或缺的工具,主要解决两大难题:
- **从海量线缆中精准寻线** 这是最核心的用途。通过**寻线**功能,可以在楼层交换机海量的线缆中,快速、准确地找到某个宿舍端口线缆的另一端,进行飞线或故障排查。
- **快速诊断线缆状态** 通过**对线**功能可以快速判断一根网线的内部8芯线对的物理连接状态例如是否存在断路、短路、错线、串扰等问题这对于制作新网线或排查物理连接故障至关重要。
## 注意
1. 每一对寻线器的发射端和接收端都是一一对应的,不同的寻线器对之间不能混用。如果在签到和签退时,检查寻线器的工作情况时,发现寻线器可以亮,但是没法工作,可以先看看是不是昨天值班的人把不同套的寻线器装混了。
2. 用完寻线器记得一定要把电源关掉之前有很多次有的成员忘记关掉寻线器导致电池耗光需要重新补充电池的情况。这样不仅会损害机器也要麻烦API们到处跑来补充物资下班用完寻线器一定要记得检查电源是不是关闭的
3. 目前网维的寻线器型号大部分是精明鼠268型但是有的片区也装备了不同的型号有的可能不是太好用。遇到的话记得上报组长。
*另附: [精明鼠NF-268使用说明书](/downloads/documents/多用途线缆寻线器NF-268说明书-1.pdf),使用前请看一遍说明书!*

View File

@@ -0,0 +1,3 @@
{
"description": "网络工程师基础"
}

View File

@@ -0,0 +1,7 @@
# 网络相关
*请选择一个板块查看:*
import DocCardList from '@theme/DocCardList';
<DocCardList className="docs-card" />

View File

@@ -1,14 +1,114 @@
# 对线 ---
宿舍以太网的连接由网线负责传输,如果网线,或者配线架,交换机这些物理设备本身的端口出现了问题,那么网络就当然无法连接,对线的过程便是测试物理连接是否能工作的流程
## 操作流程
### 准备
打开寻线器,将寻线器的模式调到“对线”档位,将网线的一端插入到接口内,将另一端插入到要测试的端口
### 检查
如果寻线器上的1-8灯全部亮的话那么说明物理层连接没有问题如果有哪个灯不亮那么说明对应的电线不通一般只要1,2,3,6灯亮起那么网络才能保证最基本工作但是网速会比较慢
## 排查
对线只能指示寻线器到信号发射设备(楼层交换机,宿舍路由器等)的整体线路是否完好,如果这中间有问题,他是无法测出是哪一个部分的问题的,这个时候,就需要我们进行测试排查
### 流程
假如我们有如下的连接:\
**电脑-转接口-用户网线-用户端口-宿舍线路-路由器-楼层线路-配线架-交换机**\
对线结果显示有问题的话,我们可以更换已知的正常设备来排查错误的地方,例如,如果使用用户的转接口,用户的网线对线失败的话,那么就先更换成一个正常的转接口,如果还是失败,那么就把网线换成好的网线,如果这个时候对线成功了,那么我们就可以判断是用户网线的问题,就可以让用户更换网线了,如果还是失败的话,那么试一试将电脑直连路由器,如果成功了,那么就可以排查出,是宿舍墙线或者端口的问题,重做端口后用端口连接路由器,如果失败的话就可以发现是线路的故障,这个时候就可以尝试飞线或直接上报组长,如果直连主线没问题而经过路由器有问题的话,那么就是路由器的问题,如果直连交换机端口没问题,而在宿舍里有问题的话,那么就是楼层线路的问题,如果直连交换机有问题的话,那么就是交换机端口的问题,可以给用户换一个没问题的端口
description: 如何通过对线来测试网线工作情况,与如何利用对线的信息排查网络连接
---
# 寻线器-对线
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::
寻线器的“对线”功能也叫线序测试Wiremap用于检查网络链路内部8芯线对的连接情况和品质。
如果我们要使用对线功能,一般是如下情况:
1. **检查一段网络线路物理层是否正常(比如用户端口到交换机)**
2. **检查某根网线是不是工作正常**
我们先来讲对线网线的操作:
## 网线的对线
1. **连接线缆两端** 将待测试网线的一端连接到发射器的RJ45端口另一端连接到接收器的RJ45端口。
2. **开启对线模式** 将发射器的功能选择开关拨到“对线”档位。
3. **观察并解读指示灯** 此时发射器和接收器上的8个线序指示灯分别对应1-8号线芯会开始闪烁。你需要对比两端的亮灯情况来判断线路状态。
### 闪烁情况
网络链路可能会有如下情况:
- **正常**:如果是标准的直通线T568B或T568A发射器和接收器上的1到8号指示灯会一一对应、同步、依次快速闪烁。这是最理想的状态。
- **断路/开路** (Open): 线缆的线芯断开,体现为某一根或几根线芯的指示灯在**两端都不亮**,这些线芯存在断路,信号无法通过。
- **短路**:线芯之间互相接触了,体现为发射端正常,但是**接收端**的几根线芯不亮,说明内部存在短路,通常是水晶头没做好,需要重做水晶头。
- **乱序/错线**(Miswire):线序接乱了表现为发射端和接收端指示灯的闪烁顺序不一致例如发射器上是1-2-3-4...而接收器上是1-3-2-4...),需要重做水晶头。
- **交叉** (Crossover): 如果是交叉线指示灯会按照交叉的配对规则亮起如1对32对6等
## 物理线路的排查
对于物理线路的排查,其实和测试网线差不多。最重要的是,需要知道某些网络设备(如路由器,交换机等)可以视为寻线器的接收端。如果网线一端连接发射端,另一端连接路由器或交换机。那么在正常工作的情况下,发射端就会像网线那样正常亮起。在这里不需要使用寻线器的接收端。
### 系统地排查
这种方法只能说明寻线器到信号发射设备(楼层交换机,宿舍路由器等)的整体线路有没有问题,如果有问题,对线操作本身无法测出是哪一个部分有问题,这个时候,就需要我们进行系统的方法测试排查:
下面是理想情况下校园网的结构,在实际工作中,每个片区我们只需要接触到其中的一部分:
```mermaid
graph LR
subgraph 用户设备
电脑-->转接器-->网线;
end
subgraph 宿舍线路
网线--**面板**--->端口--**床线**--->宿舍路由器;
end
subgraph 机房线路
宿舍路由器--**墙线**--->配线架-->交换机;
end
交换机-->yys[(互联网)]
```
对线结果显示有问题的话,我们可以更换已知的正常设备来排查错误的地方
假如你遇到了这样的情况用户ip查不到怀疑是物理连接错误于是你将用户的网线从ta的电脑上拔下来插在对线器上
```mermaid
graph LR
title[<u>这时候还是对线失败!</u>]
title-->电脑
style title fill:#FFF,stroke:#FFF
linkStyle 0 stroke:#FFF,stroke-width:0;
subgraph 用户设备
电脑-->转接器-.❌..->网线;
end
网线--**面板**--->端口--**墙线**--->配线架
subgraph 机房线路
配线架-->交换机;
end
**对线器**==>网线
```
这个时候,对线还是失败的,于是你将用户的网线从端口上拔下来,拿出一根已知是工作正常的网线,插在对线器和端口上:
``` mermaid
graph LR
title[<u>这样对线成功了!</u>]
title-->电脑
style title fill:#FFF,stroke:#FFF
linkStyle 0 stroke:#FFF,stroke-width:0;
subgraph 用户设备
电脑-->转接器-->用户的网线;
end
用户的网线-.**❌**..->端口--**墙线**--->配线架
subgraph 机房线路
配线架-->交换机;
end
**对线器**==>**你的网线**-->端口
```
这下成功对线了,由此我们可以得出**是用户的网线有问题**
对于其它错误也是同样的道理,不断排除工作正常的环节,就可以确定工作不正常的环节,找到出现错误的地方之后,就可以按照情况进行修理了

View File

@@ -1,8 +1,43 @@
# 寻线 ---
寻线就是寻找网线的两端,一个楼层的所有用户的网线,都要连接在交换机上,才能进一步连接到运营商网络,在弱电井里汇聚了一个楼层几百根线,如果有线路表的话还好,没有线路表的话,就需要通过寻线的方法,确定用户的端口,对应着交换机处的哪一根线
## 操作流程
打开寻线器,将寻线器的发射端接到需要寻线的一端,调到寻线挡,将接收端带去弱电井,如果接收端靠近对应的线的话,就会发出响声,将灵敏度调到最高,确定大致范围,再逐渐调低,同时缩小范围,最后找到对应的线\
接收端也有一个端口,如果你觉得可能是哪一个线,就把那个线拔下来插到端口里面,来确定你的猜想是否正确
## 工作原理
发射端向网线发射特殊的电磁信号,接收端可以通过电磁感应探测到这个信号并且发出声音
description: 如何寻线,即已知网线的一端,找到网线的另一端
---
# 寻线器-寻线
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::
所谓寻线,就是已知网线的一端,找到网线的另一端。
用户的端口走墙线到宿舍路由器(或者香晖朝晖的楼层弱电井),我们是看不见藏在墙后面的网线的走向的,观察机房(或者路由器)那里,只能看到茫茫多的网线端口插到交换机上,根本分不清交换机上的哪个线对应哪个宿舍的哪个床位
香晖的机房有一个床位表,记录了机房的哪个端口对应了哪个宿舍的床位,但是其它地方是没有这个表的,那该怎么确定一个宿舍床位端口对应的是机房的哪个配线架端口呢?
寻线器可以帮助我们确定这件事,这篇文章将为你介绍寻线器是如何使用的。
## 操作步骤
1. 连接发射器: 将你需要寻找的网线一端(比如用户的网线)从设备上拔下然后插入到寻线仪发射器的RJ45端口中。
2. 开启寻线模式: 将发射器的功能选择开关拨到“寻线”档位。此时,状态指示灯会闪烁,表示信号已经开始发送。
3. 手持接收器开始寻找: 前往线缆的另一端,手持接收器,将接收器的探头逐一扫过每一根可能的线缆。
4. 根据声音定位目标: 当接收器的探头接触到带有信号的目标网线时,你会听到清晰且连续的“嘀嘀嘀”声。你可以通过接收器上的音量调节旋钮来控制音量大小。声音最响亮、最稳定的那一根,就是你要找的目标网线。
5. 最终确认: 为了100%确认可以将疑似目标线缆从线束中稍微拉出一点单独用接收器再测一次如果声音依然强烈就把这根线缆拔下来插到接收器的端口里如果这个时候接收器8灯同时亮起且很大声地响起那就找到了。
寻线时通常采用先粗略,后精确的策略:先把寻线器灵敏度调到最高,这样就算离目标很远也会响,这样我们可以确定目标所在的大致的范围。然后逐步调小灵敏度,缩小搜索圈,直到确定那根线缆是你的目标~
## 技巧
- 接收器拥有极为先进的3.5mm耳机孔:zany:,如果机房噪音比较大或者有人投诉声音打扰了他们的话可以找个耳机插上去寻线。
- 接收器还有手电筒,可以帮助你照亮交换机端口。在朝晖那里很有用,但是亮度可能不如手机的好。

View File

@@ -1,3 +1,9 @@
---
description: 制作网线水晶头
---
# 做网线 # 做网线
当网线损坏时,我们需要重新制作网线,通常是更换网线的水晶头,本篇文章就是教你如何打水晶头的 当网线损坏时,我们需要重新制作网线,通常是更换网线的水晶头,本篇文章就是教你如何打水晶头的
## 工具 ## 工具

View File

@@ -1,2 +1,4 @@
# 重做端口 # 重做端口
如何重新制作宿舍端口面板
端口的制作和网线的制作差不多,在整理线序是就不需要按照顺序排列了,端口上有对应的颜色,把网线按进去就行。 端口的制作和网线的制作差不多,在整理线序是就不需要按照顺序排列了,端口上有对应的颜色,把网线按进去就行。

View File

@@ -1 +1,9 @@
# 飞线 # 飞线
飞线~
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::

View File

@@ -0,0 +1,3 @@
{
"description": "其它需要掌握的技能"
}

View File

@@ -0,0 +1,8 @@
# 杂项
*请选择一个板块查看:*
import DocCardList from '@theme/DocCardList';
<DocCardList className="docs-card" />

View File

@@ -1,8 +1,16 @@
---
description: 遇到运营商端口绑定时需要进行的操作(691错误)
---
# 解绑MAC地址 # 解绑MAC地址
学校的网络会绑定设备的MAC地址来限制上网的设备如果我们更换了转接头或者电脑设备的MAC地址就会变化运营商就会返回691错误就需要我们解除对MAC地址的绑定 为了限制上网的设备过多即多人共用账号的情况运营商会在一个设备第一次登录网络时绑定设备的MAC地址。之后就只能使用该设备登录网络。
如果我们更换了转接头或者电脑设备的MAC地址就会变化运营商就会拒绝新设备的登录返回691错误。这时就需要我们解除对MAC地址的绑定。
## 操作 ## 操作
- 用开通宽带的手机号码拨打运营商电话,转人工; - 用开通宽带的手机号码(即宽带账户)拨打运营商电话,转人工;
- 告诉客服,说:清除本机号码绑定的宽带的端口数据; - 告诉客服,说:清除本机号码绑定的宽带的端口数据;
- 等待客服回复“已清除”; - 等待客服回复“已清除”;
- 告诉客服,说:解绑; - 告诉客服,说:解绑;

View File

@@ -1 +1,15 @@
---
description: 床位
---
# 辨别床位 # 辨别床位
当初在安装香晖宽带的时候运营商给宿舍床位的编号和床上写的并不一样。一般宿舍通常进门左手边第一个是1号床然后逆时针分别是2,3,4号床。
不过香晖的床位是下面这样的:
![床位示意图](/img/wiki/1.bmp)
了解一下,可以帮你节省寻线的时间。

View File

@@ -1 +0,0 @@
# 技能

View File

@@ -0,0 +1,7 @@
# 技能
*请选择一个板块查看:*
import DocCardList from '@theme/DocCardList';
<DocCardList className="docs-card" />

View File

@@ -1,2 +0,0 @@
# 片区介绍
这里是学校宿舍网络的几个片区的有关信息

View File

@@ -0,0 +1,13 @@
# 片区介绍
这里是学校宿舍网络的几个片区的有关信息
*请选择一个板块查看:*
import DocCardList from '@theme/DocCardList';
<DocCardList className="docs-card" />
![图片](/img/wiki/网络结构/电科大.PNG)
*注意:这张图以及里面的片区网络图只是电信的拓扑架构*

View File

@@ -1,12 +1,49 @@
---
description: ...
---
# 东门片区信息 # 东门片区信息
集合点12栋楼下
范围12-15 20-22栋 范围12-15 20-22栋
## 集合点
**12栋楼下** 工具包位置12栋入口右手边桌子
## 网络结构 ## 网络结构
### 线路 ### 宿舍内部
用户端口连接到宿舍的路由器,路由器主线连接到楼层机房(机房好像进不去) 用户端口连接到宿舍的路由器,路由器主线连接到楼层机房(机房好像进不去)
对于24新生的宿舍已采用了FTTR架构(10栋) 对于24新生的宿舍已采用了FTTR架构(10栋)
```mermaid 宿舍网络结构
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**-->端口--**床线**--->宿舍路由器
end
subgraph 机房线路
宿舍路由器--**主线**--->配线架-->交换机
end
交换机-->yys[(校园网)]
用户电脑--Wi-Fi--->宿舍路由器
```
### 片区架构
12-15栋的有线网走的是9栋交换机而AP直连学校核心交换机
需要特别的注意
![图片](/img/wiki/网络结构/电科大12-15栋.PNG)
![图片](/img/wiki/网络结构/香山公寓.PNG)
![图片](/img/wiki/网络结构/香山综合楼20、21栋.PNG)
### 运营商 ### 运营商
电信 电信
### 其它 ### 其它

View File

@@ -1,12 +1,48 @@
---
description: ...
---
# 凤翔片区信息 # 凤翔片区信息
集合点: 值班室门口(超市和食堂旁边,在图书馆附近)
范围1-6栋 范围1-6栋
## 集合点
**值班室门口** 工具包位置2栋楼梯间的桌子下(梯子在楼梯间的隔间内)
## 网络结构 ## 网络结构
凤翔的网络设备比较古老 ### 宿舍内部
### 线路
用户的端口连接到楼层的交换机,位于天花板上,要爬梯子 \ 用户的端口连接到楼层的交换机,位于天花板上,要爬梯子 \
电信在这中间还会有一个小交换机 电信在这中间还会有一个小交换机
```mermaid
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**-->端口--**床线**--->宿舍交换机
end
subgraph 机房线路
宿舍交换机--**主线**--->交换机
end
交换机-->yys[(校园网)]
```
### 片区线路
楼层的交换机设置在每栋的5楼和二楼每栋的交换机之间级联备用。
核心交换机位于图书馆,所有交换机接入图书馆再接入学校核心交换机
![凤翔网络](/img/wiki/网络结构/电科大1-6栋.PNG)
### 运营商 ### 运营商
电信,移动 电信,移动
### 其它 ### 其它

View File

@@ -1,11 +1,66 @@
---
description: ...
---
# 北门片区信息 # 北门片区信息
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::
集合点9栋楼下(从北门进学校一直走爬上楼梯)值班室旁边
范围7-11栋 范围7-11栋
## 集合点
**10栋门口** 工具包位置7栋的桌子里
## 网络结构 ## 网络结构
### 线路 ### 宿舍内部
```mermaid 宿舍网络结构
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**-->端口--**床线**--->宿舍路由器
end
subgraph 机房线路
宿舍路由器--**主线**--->配线架-->交换机
end
交换机-->yys[(校园网)]
用户电脑--Wi-Fi--->宿舍路由器
```
### 片区架构
除了10栋A.B两栋之外其余的楼栋接入位于9栋的核心交换机北门核心交换机接入学校核心交换机
(实际上12-15栋部分网络也走这个核心交换机)
![图片](/img/wiki/网络结构/电科大7栋.PNG)
![图片](/img/wiki/网络结构/电科大8栋.PNG)
![图片](/img/wiki/网络结构/电科大9栋.PNG)
![图片](/img/wiki/网络结构/电科大10A栋.PNG)
![图片](/img/wiki/网络结构/电科大10B栋.PNG)
![图片](/img/wiki/网络结构/电科大11栋.PNG)
### 运营商 ### 运营商
**电信**
### 其它 ### 其它
## 注意事项 ## 注意事项
(我还没怎么去过北门,这篇你们来补充) 机房没办法进去,运营商只有电信,光纤入户

View File

@@ -1,12 +1,46 @@
---
description: ...
---
# 朝晖片区信息 # 朝晖片区信息
集合点:朝晖楼门口
范围:朝晖苑 范围:朝晖苑
## 集合点
**朝晖楼门口** 工具包位置:门口右手边,值班室对面的房间的桌子里面,和售货机和打印机在同一个房间
## 网络结构 ## 网络结构
### 线路 ### 宿舍内部
用户端口直连配线架,配线架连接到交换机,没有床位表格,需要手动寻线 用户端口直连配线架,配线架连接到交换机,没有床位表格,需要手动寻线
对于24新生的宿舍已采用了FTTR架构 对于24新生的宿舍已采用了FTTR架构
```mermaid 宿舍网络结构
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**-->端口
end
subgraph 机房线路
端口--**墙线**--->配线架-->交换机
end
交换机-->yys[(校园网)]
```
### 片区架构
![图片](/img/wiki/网络结构/朝晖苑1.PNG)
![图片](/img/wiki/网络结构/朝晖苑2.PNG)
### 运营商 ### 运营商
电信,移动 电信,移动
### 其它 ### 其它

View File

@@ -1,14 +1,65 @@
---
description: ...
---
# 歧头片区信息 # 歧头片区信息
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::
集合点: 19栋门口
范围17-19栋 范围17-19栋
## 集合点
**19栋门口** 工具包位置17栋入口处右手边桌子
## 网络结构 ## 网络结构
### 线路 ### 宿舍内部
用户端口连接到宿舍的路由器,路由器主线连接到楼层机房(机房好像进不去) 用户端口连接到宿舍的路由器,路由器主线连接到楼层机房
18-19栋好像也是和凤翔那样的楼层机箱没有机房
电信对于24新生的宿舍已采用了FTTR架构 电信对于24新生的宿舍已采用了FTTR架构
```mermaid 宿舍网络结构
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**-->端口--**床线**--->宿舍路由器
end
subgraph 机房线路
宿舍路由器--**主线**--->配线架-->交换机
end
交换机-->yys[(校园网)]
用户电脑--Wi-Fi--->宿舍路由器
```
移动:我暂时不清楚歧头移动的结构,等我调查之后再补充🤓
### 片区架构
> 16栋2楼 5楼有机房\
> 17栋2楼 5楼有机房\
> 18栋2楼 6楼有机房\
> 19栋只有1楼有机房\
> 一般来说16-19栋第二个机房负责当层楼以及上方楼层
![图片](/img/wiki/网络结构/电科大16-17栋.PNG)
![图片](/img/wiki/网络结构/电科大18-19栋.PNG)
### 运营商 ### 运营商
电信 电信,移动
### 其它 ### 其它
暂无 暂无
## 注意事项 ## 注意事项

View File

@@ -1,15 +1,56 @@
---
description: ...
---
# 香晖片区信息 # 香晖片区信息
:::tip 提示
由于香晖片区的范围比较大所以分为AB和CD两个小组值班
:::
集合点均在厚德楼A栋广场东侧的大树下
范围:香晖苑 范围:香晖苑
## 集合点
**香晖片区范围比较大分为两个小组值班AB组在AB栋闸机处集合,CD栋同理。** 工具包位置AB在售货机旁边的桌子下;CD在正对大门的桌子下
## 网络结构 ## 网络结构
### 线路 ### 宿舍内部
电信用户连接宿舍路由器如果路由器LAN口不够会连接旁路交换机路由器WAN连接机房交换机\ 电信用户连接宿舍路由器如果路由器LAN口不够会连接旁路交换机路由器WAN连接机房交换机\
对于24新生的宿舍已采用了FTTR架构 对于24新生的宿舍已采用了FTTR架构
用户的端口直接连接到弱电室的配线架,再经配线架连接到交换机,交换机处有床位对应表格, 用户的端口直接连接到弱电室的配线架,再经配线架连接到交换机,交换机处有床位对应表格,
```mermaid 宿舍网络结构
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**-->端口
end
subgraph 机房线路
端口--**墙线**--->配线架-->交换机
end
交换机-->yys[(校园网)]
```
### 片区架构
![图片](/img/wiki/网络结构/香晖苑AB栋.PNG)
![图片](/img/wiki/网络结构/香晖苑CD栋.PNG)
### 运营商 ### 运营商
三大运营商都有服务,在维修时注意交换机不要接错 三大运营商都有服务,在维修时注意交换机不要接错
### 其它 ### 其它
暂无 暂无
## 注意事项 ## 注意事项

View File

@@ -1,32 +1,174 @@
# 学校的网络结构 # 学校的网络结构
学校网络结构的整体介绍
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::
## 概况 ## 概况
电子科技大学中山学院校园网络分为教学网络和学生宿舍网络,教学网络主要用于学校各教学楼、实验楼、图书馆等供老师、教职工和学生上课上机使用,是属于教育科研网络。学生宿舍网络主要由中国电信、中国联通、中国移动直接提供服务,是属于运营商提供服务的网络。 电子科技大学中山学院校园网络分为教学网络和学生宿舍网络,教学网络主要用于学校各教学楼、实验楼、图书馆等供老师、教职工和学生上课上机使用,是属于教育科研网络。学生宿舍网络主要由中国电信、中国联通、中国移动直接提供服务,是属于运营商提供服务的网络。
无论是教学网络还是学生宿舍网络都属于校园网可访问学校图书馆、知网资源。但是学生宿舍网络无法访问教学网络的部分资源如实验楼FTP服务器、经管学院的实践教学中心模拟系统等如有需要可到图书馆访问。 无论是教学网络还是学生宿舍网络都属于校园网可访问学校图书馆、知网资源。但是学生宿舍网络无法访问教学网络的部分资源如实验楼FTP服务器、经管学院的实践教学中心模拟系统等如有需要可到图书馆访问。
**本维修手册,主要针对的是学生宿舍网络。** **本wiki,主要针对的是学生宿舍网络。**
目前2017年12我校全部的学生宿舍包括朝晖苑、香晖苑ABCD栋、凤翔宿舍区1-6栋、北门宿舍区7-11栋、东门宿舍区12-15、20-22栋、歧头山宿舍区16-19栋都可接入中国电信的上网服务。 目前2025年5我校全部的学生宿舍包括朝晖苑、香晖苑ABCD栋、凤翔宿舍区1-6栋、北门宿舍区7-11栋、东门宿舍区12-15、20-22栋、歧头山宿舍区16-19栋都可接入中国电信的上网服务。
其中朝晖苑、香晖苑ABCD栋和凤翔宿舍区1-6栋还可选择中国移动网络。 其中,歧头山宿舍区,朝晖苑、香晖苑ABCD栋和凤翔宿舍区1-6栋还可选择中国移动网络。
只有香晖苑ABCD栋可选择中国联通的网络。 只有香晖苑ABCD栋可选择中国联通的网络。
校园网络核心交换机位于实验楼,校园网的两个部分(办公网和学生网)在这里分别接入电信局的认证服务器,连接中山市的国际互联网出口。
## 连接方式 ## 连接方式
**对于学生宿舍网络:**\ **对于学生宿舍网络:**\
电信需要使用专门的客户端来连接,而联通和移动是直接进行拨号连接\ 三大运营商都有有线连接方式电信和移动的部分宿舍有Wi-Fi连接方式\
**对于教学区公共Wi-Fi:**\ **对于教学区公共Wi-Fi:**\
使用“掌上连峰”APP连接 使用“掌上连峰”APP连接
## 拓扑 ## 宿舍内部架构
<!-- 总的来说学生宿舍网络为星型拓扑运营商的光纤接入各个宿舍楼在各个楼层的ONU处转换成电信号接入交换机再分散到各个宿舍的各个床位中间可能还有配线架宿舍路由器等设备\ --> 我们首先介绍一个宿舍中的结构:
<!-- 另外电信还在部分片区提供了F-Young无线网络服务 -->
### 电信 目前学生宿舍有线网有FTTB(光纤到每层楼)和FTTR(光纤入宿舍)两种方式网维目前主要维护FTTB模式的有线网。
电信是学校的主要运营商在各个宿舍片区都有提供服务目前电信主要是光纤接入楼层然后通过ONU和交换机变成电信号转到各个宿舍的路由器启用了Wi-Fi功能然后再接入床位的端口有的路由器可能路由器LAN不够还会再接一个交换机
在FTTB模式下每个用户的端口通过**网线**连接到设置在每个楼层的交换机每个楼层的交换机作为ONU使用**光纤或网线**接入学校更大的网络
各大运营商都有自己的楼层交换机和宿舍路由器(如果有),但是从用户到交换机的墙线是共享的,用户使用哪个运营商的服务,就由网维负责将用户的端口接入哪个运营商的设备。
```mermaid 用户
graph LR
subgraph 不变的地方
用户的电脑--网线-->端口
end
subgraph 运营商设备
电信
移动
联通
end
端口-...->电信
端口==>联通
端口-...->移动
```
*用户用什么运营商,网维就负责把端口接到哪里去~比如用户接的是联通,那么线路就是电脑-->端口-->联通的交换机*
(另外每个有线网用户的端口都会被分配一个内网IP地址172开头号段由因所接的运营商而异。详见下一篇文章)
### 宿舍路由器
**在男生片区和部分女生片区,会有宿舍路由器/宿舍交换机中继**
宿舍路由器通常还提供Wi-Fi服务路由器有的是占用宿舍1号床的端口连接到交换机这种情况下1号床的同学就需要把自己的网线插到路由器上而不是插到已经占用的端口上
![路由器](/img/wiki/宿舍交换机的两种情况.png)
*一共有两种情况,也就是路由器是不是占用某个同学的端口连接到楼层交换机的*
总结一下:
```mermaid 宿舍网络结构
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**-->端口--**床线**--->宿舍路由器
end
subgraph 机房线路
宿舍路由器--**主线**--->配线架-->交换机
end
交换机-->yys[(校园网)]
用户电脑--Wi-Fi--->宿舍路由器
```
或是没有路由器的情况:
```mermaid 宿舍网络结构
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**-->端口
end
subgraph 机房线路
端口--**墙线**--->配线架-->交换机
end
交换机-->yys[(校园网)]
```
### FTTR架构
在FTTR下把路由器换成光猫光猫暂时不归网维管所以结构是这样的
```mermaid
graph LR
subgraph 用户设备
用户电脑
end
subgraph 宿舍线路
用户电脑--**用户的网线**--->端口
end
subgraph 这里不归我们管
端口--**床线**--->gm(光猫)
gm-->hlw[(互联网)]
end
用户电脑--Wi-Fi-->gm
```
## 校园网架构
:::tip 提示
下面所说均为电信网络架构,内容比较老且可能不符合实际情况,仅供参考。
:::
如图所示,学校的核心交换机(华为S9306)设置在实验楼(具体地点未知),连接如下汇聚交换机:
|名称|型号|位置|下联|备注|
|-|-|-|-|-|
|**图书馆主交换机**|华为S9303|图书馆内|凤翔所有楼层交换机|凤翔除5栋在3楼、5楼外其余楼栋电信交换机设置在2楼、5楼交换机之间有级联|
|**新区主机房核心交换机**|华为S9303|9栋|7,8,9,1112-15栋的有线网络|12-15栋AP独立连接至学校核心交换机不走这个|
|**21栋4层S3352-1**|华为S3352|21栋4层机房第一个|20,21栋22栋A座1楼|暂无|
|**香晖核心交换机**|华为S9306|未知|香晖ABCD栋|有可能位于AB栋的某一处|
|**朝晖主交换机**|华为S5320|朝晖2楼第一个 |朝晖苑|网络结构可能是其余楼层汇聚至2层的交换机2层交换机连接至学校核心交换机|
|**16-17栋核心交换机**|华为S8505|未知|16-17栋|楼层交换机位于2楼和5楼|
|**18-19栋核心交换机**|华为S8505|未知|18-19栋|18栋交换机在2楼、6楼19栋只有1楼有机房|
<!--
- 图书馆交换机S9303:汇聚凤翔所有楼层交换机,位于图书馆内
- 北门主交换机S9303:汇聚7,8,9,1112-15栋的有线网络(12-15栋AP独立连接至核心交换机)位于9栋
- 21栋S3352,汇聚20,21栋位于21栋4层编号S3352-1
- 香晖主交换机S9306:汇聚香晖ABCD栋地点未知
- 朝晖交换机S5320汇聚朝晖苑位于朝晖2楼编号S5320-1
- 16-17栋交换机S8505,汇聚16-17栋地点未知
- 18-19栋交换机S8505,汇聚18-19栋地点未知-->
![网络结构](/img/wiki/网络结构/电科大.PNG)
*学校的总体网络结构,图片有点老,有的地方可能不准确*
对于每个片区的详细结构线路,请自行查看每个片区的信息。
## 参考
[1]https://baike.baidu.com/item/%E7%94%B5%E5%AD%90%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%A6%E4%B8%AD%E5%B1%B1%E5%AD%A6%E9%99%A2%E4%BF%A1%E6%81%AF%E4%B8%AD%E5%BF%83/1180595
[2]https://baike.baidu.com/item/%E7%94%B5%E5%AD%90%E7%A7%91%E6%8A%80%E5%A4%A7%E5%AD%A6%E4%B8%AD%E5%B1%B1%E5%AD%A6%E9%99%A2%E7%BD%91%E7%BB%9C%E7%BB%B4%E6%8A%A4%E7%A7%91
电信有计划逐步升级到光纤入宿舍(FTTR)的模式在这种模式下将光路接到宿舍接入一个集成有Wi-Fi路由功能的光猫将双绞线接入各个端口请在片区信息里查看电信架构的升级情况
电信的路由器带有Wi-Fi功能提供无线接入的途径产品名称叫做"F-Young",SSID以`FY`开头,一般是`FY-楼栋-宿舍号`
### 联通
联通目前只在香晖有提供服务,架构是"宿舍-楼层配线架-交换机-ONU"
### 移动
移动的结构和联通差不多,也是宿舍直连交换机的结构

View File

@@ -1,31 +1,70 @@
# 学校内的运营商 # 学校内的运营商
学校内运营商提供网络服务的情况
:::warning 注意
🚧施工中🚧
这篇文章还没有写完呢!😛
:::
## 概览 ## 概览
对于学生宿舍网络,三大运营商在学校内都有服务,但是不同的宿舍片区,可以选择的运营商会有限制: 三大运营商在学校内都有服务,但是不同的宿舍片区,可以选择的运营商会有限制:
- 电信:所有宿舍片区 - 电信:所有宿舍片区
- 联通:香晖 - 联通:香晖
- 移动:朝晖,香晖,凤翔\ - 移动:朝晖,香晖,凤翔。和男生片区的部分宿舍
用户想要使用这些运营商的宽带网络服务,就需要办理宽带业务.\
通常,运营商会给客户一张电话卡,这张电话卡的电话号组成了用户用来认证的账号的一部分.\ ||北门|东门|歧头|香晖|朝晖|凤翔|
根据套餐的不同,用户需要向里面充值话费作为宽带费用.\ |-|-|-|-|-|-|-|
|电信|✅|✅|✅|✅|✅|✅|
|联通|❌|❌|❌|✅|❌|❌|
|移动|🤔[^1]|🤔[^2]|🤔[^3]|✅|✅|✅|
[^1]:仅部分宿舍仅FTTR
[^2]:仅部分宿舍仅FTTR
[^3]:仅部分宿舍仅FTTR
*(另外学校教学区的Wi-Fi只有电信用户可以使用)*
用户想要使用哪个运营商的宽带网络服务,就需要在对应的运营商处办理宽带业务:
|运营商|业务办理地点|备注|
|- |- |-|
|电信|北门出去,右手边的营业厅|...|
|联通|...|...|
|移动|...|...|
通常,运营商会给客户一张电话卡,这张电话卡就代表用户的宽带账户,用户需要保证电话卡不欠费,才能使用宽带.
## IP
学校的DHCP服务器为每个楼层交换机的端口分配静态内网地址,CIDR/12
如上一篇文章所说每个运营商的设备都是独立的它们为用户分配的内网IP号段不相同
|运营商|号段|备注|
|-|-|-|
|电信|172.19|无|
|联通|172.18|无|
|移动|172.20|部分会有172.17|
(截至目前移动的DHCP服务器可能有点问题在某些交换机的IP分配可能会出现IP为169.254的情况,详见相关文章)
## 认证 ## 认证
除了电信的宽带和F-Young需要使用专用的客户端进行拨号外联通和电信只需要使用系统自带的PPPoE拨号认证即可,若认证失败则会出现691错误 各大运营商连接上网的方式并不相同,详见[这里](/docs/wiki/技能/电脑技能/拨号)
|运营商|认证|备注|
|-|-|-|
|电信|使用专用的“天翼校园”客户端进行认证|无|
|联通|使用OS自带的PPPoE拨号认证|无|
|移动|使用锐捷"ePortal"网页认证|涉及两套账密1. 用户在ePortal系统注册的账号学号作为账号没有初始密码2. 用户的运营商账号,即为原来的账号,初始密码和账号格式在下面|
### 账户和密码 ### 账户和密码
这里是三家运营商的账户格式和初始密码 这里是三家运营商的账户格式和初始密码
| |**账号格式** |**初始密码** | | |**账号格式** |**初始密码** |**备注** |
|- |- |- | |- |- |- |- |
|**电信**|`${用户手机号}` |`A1234567` | |**电信**|`${用户手机号}` |`A1234567` |在电信client中使用这个账号和密码另外有的情况下还要在后面加上一个`@zsdzkd`的后缀(比如在线自助改密码的情况) |
|**联通**|`ZSLAN${用户手机号}@16900.gd`|`900.gd` | |**联通**|`ZSLAN${用户手机号}@16900.gd`|`900.gd` |在系统的拨号菜单里使用这个账号和密码注意账号可能不准确以用户“中国联通”APP上显示的账号格式为准[Click Me](/docs/wiki/故障/联通特定/账号不正确) |
|**移动**|`${用户手机号}@139.gd` |`手机号后六位` | |**移动**|`${用户手机号}@139.gd` |`手机号后六位` |在移动网页认证里面的绑定界面使用这个账号和密码来绑定|
### 认证方式
电信需要下载专用客户端下载地址为:`zsteduapp.10000.gd.cn`,联通和移动使用系统自带拨号渠道即可,可以去看`技能/电脑技能/拨号`
## IP
宿舍的有线网会为每一个用户分配端口绑定的ip,其中:
- 电信为172.19.x.x号段
- 联通为172.18.x.x号段
- 移动为172.17.x.x号段\
注意这里的IP是交换机端口的IP,用户的电脑显示的是网线另一端对应的的端口IP。\
如果显示IP对应的运营商和用户实际的运营商不符合那么有可能是交换机接错了。\
联通和移动在机房里都有自己的交换机和ONU,只有将用户的端口插到对应的运营商的交换机端口处,拨号才能成功。\
电信是在宿舍处的路由器处接入网线或光缆,如果用户是电信需要把端口的另一端插到路由器上

View File

@@ -1,3 +1,9 @@
---
description: ...
---
# DNS # DNS
## 背景知识 ## 背景知识

View File

@@ -0,0 +1,3 @@
{
"description": "一些科普知识,可以加深对网络维修工作的理解"
}

Some files were not shown because too many files have changed in this diff Show More