# 前言

从这篇开始我们就开始正式学习如何搭建一个属于自己的网站了

# 基本结构

网站根据网页的类型一般分为动态网页和静态网页

前者的文件多半由 php,aspx 等网页文件组成,后者多为 html 网页文件组成

但是一个基本的网站结构是不会改变的,html,css,js,pic

html 是网页的源代码,浏览器根据从服务器请求来的 html 源代码在客户端构建网页

css 则是负责网页内各个元素的样式设计,一个好看的网页离不开好的 css

js 则使网页能有一定的交互能力,使网页能够一定程度上 “动态化”

pic 就不用多说了,照片,视频等各种媒体资源,使得网页更加丰富多彩

# 运行流程

了解一些基本的流程对之后维护网站有着很大的帮助,对原理和流程的理解也可以很好的帮助大家后期举一反三

可以让你在网站出问题的时候能够精确的找到问题所在,至少不是像无头苍蝇一样不知所措

因为本系列教程为小白向,所以我也不会教大家太多实用知识,更多的是讲解基础的东西,所以这就需要大家善用搜索引擎,自己学习更多知识

后面部分新的名词我可能也不会解释,希望大家如果感兴趣的话自行去搜索引擎搜索

搜索引擎是大家学习的好工具,善用搜索引擎可以很好解决一些学习中遇到的问题

这里我推荐平常使用微软的 bing,不仅收录了很多的中文网页,也收录了很多英文网站。很多时候有些疑难杂症可能在中文互联网内找不到解决方法,但在全球范围内,说不定就找到的很好的解决方法

当然因为某些原因如果 bing 都搜索不到,那就可以上 Google 了,至于怎么上,不要问我,不在本教程的讨论范围内

言归正传,其实网站这种一般是被动式请求。

也就是客户端向网站服务器请求,然后服务器应答客户端,向客户端传递网站页面。

当然现在也有通过 websocket 进行双向通信的,也有通过 service worker 进行浏览器通知的

但是我们正常搭建博客是用不到这么复杂的,当然后期自己学会很多知识后也可以尝试一下上面的各种玩法

# 域名和 IP

# 域名

相信域名大家应该不陌生,例如 <bing.com > 就是一个 com 后缀的顶级域名

这里的顶级不是说它很高级,很牛 b,而是指域名的根域名,也就是赤裸裸的 <bing.com>

而平常什么 <www.bing.com>、<cn.bing.com> 之类的,就是二级域名,同理,xxx.xxx.bing.com 它就是三级域名

不过大家一般都不会用到三级域名,一般二级就够用了

# IP

ip 就像门牌号一样,或者说是在网络中的地址一样,而域名和 ip 的关系其实就是类似于给人取了一个好听的名字一样

访问域名的实质其实就是访问 ip

而这里 ip 也分为公网 ip 和内网 ip,公网 ip 顾名思义就是在公共网络上的 ip,在没有外界因素的情况下,全球都可以直接访问

内网 ip 顾名思义也就是内部网络的 ip,有时候也称私网 ip,这个 ip 必须是在同一个网络里的人才能访问,在内网以外的人是无法通过 ip 正常访问到服务器的

而至于计算机是如何通过域名得到域名绑定的 ip,这就涉及到 dns 的知识,这个我们在域名那一篇再讲

# 协议

网站请求一般采用 http 协议,就像 http://www.bing.com/ 前面的 “http://” 就是协议头,所以同理,不同的服务也会有不同的协议和标识

像 ftp 就是 “ftp://”

但是纯 http 是明文传输,所以不安全,容易遭受中间人攻击。我们一般会利用 SSL/TLS 来加密传输数据来保证安全

而使用了 SSL/TLS 加密的网站前面的协议头就会由原来的 http 变为 https

说底层一点,这两个协议头走的端口也是不一样的

# 端口

这篇文章写得很好,介绍了什么是端口

深入理解什么是端口 (port)

我这里就浅浅讲一下,http 一般走的是 80 端口,而 https 一般走的是 443 端口

不是说就非这两个端口不可,可以是非默认端口,但是在访问的时候就必须加上修改后的端口,浏览器才知道该向哪个端口请求

例如 https://www.bing.com/ ,它所使用的端口就是 443,默认的 https 端口

如果你把端口改成 666,那么之后地址就会变成这样 https://www.bing.com:666/

tips: 家用宽带即使有公网 ip 也会封掉 80 和 443 端口,所以不能用默认端口来建站

有点不美观,而且还会影响网站的收录,所以一般不建议使用非默认端口

注:端口前的冒号请使用英文冒号!!!!!!

当然自己搭建的其他服务爱用哪个端口都可以

tips: 自己的服务一般不要用 10000 一下的端口,10000 一下的端口很多都是被系统服务所使用,会造成端口的抢占问题,使系统服务或者自己的服务无法正常使用。当然如果你确定某个 10000 一下的端口不会被使用那使用也是没啥问题的

# 请求

请求一般分为 Get 和 Post 两种

这篇文章讲得很好可以看看 浅析 HTTP 中请求 GET/POST

我下面只是讲得通俗一点,大家可以看完上方的链接再看我下面的讲解

# Get

啥是 get?

get 请求其实很直观的

你输入一串网址访问其实就是 get 行为的请求

例如访问 bing 来搜索 “啥是 get 请求” https://cn.bing.com/search?q = 啥是 get 请求

这个就是一个典型的带参数的请求,“?” 后面的 “q” 就是传入的参数

所以 get 请求的参数内容一般在请求地址中就可以看到

但是相信大家肯定也发现了一个问题,那就是采用 get 请求的话那参数内容岂不是会直接暴露?

所以有时候我们就会采用 POST 请求

# Post

post 请求和 get 不同,post 请求的参数在请求体中而不是在链接地址中

所以内容会受到 SSL/TLS 加密,确保请求内容不会被泄露

就像经典的请求 Minecraft 的 AccessToken,就是将 Minecraft 账号密码通过 Post 请求至 mojang 服务器,来获得 AccessToken

而这个 AccessToken 就是你的账户凭证,类似于 cookie,用来在进入开启正版验证的服务器时的账号验证

# 后记

很久没写这类教程了,自己玩网站也玩了很多年了,部分内容可能会有遗漏

如果大家遇到我没提出来但是又不懂的地方可以提出来,我也会补充在教程之中的

这篇文章基础理论逻辑知识比较多,但如果真正掌握,融会贯通了这些知识,可以说对大家以后玩各种服务(不限于网站)会有很大的帮助

很多东西你知道原理之后举一反三其实就很容易了的

后面就要开始真正将如何开始自己的网站了

我之后也会尽可能的给大家找图,纯文字有时候理解起来可能还是比较难懂

为毛我的眼里常含泪水,因为我老是中枪。———— 出自 不管外表怎样强悍我都是受