Web基础
域名的概念
IP地址长且不易记忆
域名(英语:DomainName),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。常见的域名有com、top、cn等等。
域名一般用来建网站、邮箱、网络营销、程序测试等等用途,域名的品牌作用不能忽视,域名是数字时代重要的网络入口,它不仅是互联网产业的基础性资源,还是一个企业品牌文化、商业价值及战略意义的重要体现。一个成功品牌的价值是巨额的,而一个好的域名,就能够为企业创造无穷的品牌价值,对企业整体的未来战略制定有着指引的作用。简单的几个字字母和数字组合在一起,传递出的可以是影响整个行业的力量。
阿里云域名怎么申请
客户提出申请,服务器查询重名,如果没有就可以申请了,普通域名价格在20-60之间,然后拍照备案,大概10-20天后就可以解析使用了,如果使用种出现问题,会有被封的风险
域名注册
域名注册是Internet中用于解决地址对应问题的一种方法遵循先申请先注册原则
域名注册步骤:
①准备申请资料
②寻找域名注册网站
③查询域名
④正式申请
⑤申请成功
地址分配
网络上交互是基于TCP/IP协议的,每个主机在逻辑上有一个唯一位置标识(IP地址),物理地址为MAC地址
为了保证地址唯一性,用户协议向特地给机构申请注册,分配IP地址网络中的地址有两套方案:
1):IP地址系统
2):域名地址系统
而由于IP是由32位二进制数字标识,不方便记忆,所以 IP地址为基础发展出了符号化地址来代替解决方案,也就是域名
DNS解析
早期使用hosts解析域名,hosts文件里存放缓存服务器所记录的域名信息
DNS解析方式
分布式:将总文件分部成多个模块,处理文件时分开操作,处理完后将结果汇总
层次式:依次处理,从根开始,顶级域,二级域,二级域得出结果,反馈给缓存服务器再反馈给用户
如果没有DNS服务,通信是不受影响的,只是不能访问网页
DNS解析的三种用法
1./etc/hosts
Linux系统中负责快速解析的文件,包含了ip与主机名的映射关系,在没有DNS服务器的情况下,使用本地/etc/hosts完成解析/映射,实现快速访问
主要用于主机之间(IP和主机名)的映射/解析关系
2./etc/resolv.conf
DNS客户端配置文件,主要用于设置DNS服务器的P和域名,还包含了主机域名的搜索顺序等等,这个文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。
主要用与匹配DNS服务器
3.在网卡配置文件中定义
/etc/ sysconfig/ network-scripts/ifcfg-ens33
DNS1=114.114.114.114
DNS2=8.8.8.8
★生效顺序:1 hosts文件 2网卡配置文件3 /etc/resolv.conf
DNS的功能
正反向解析,解析方式(递归或迭代)
网页的基本概念
网页
纯文本格式:编写语言为HTML,在用户的浏览器中被“翻译”成网页形式显示出来
网站
由一个一个页面构成的,是多个网页的结合体
主页
打开网站后出现的第一个网页被成为主页
域名
浏览网页时输入的网址
HTTP/HTTPS
用来传输网页的通信协议(是否加密),是一种通讯/交互的标准/规范
URL
是一种万维网寻址系统
HTML
用来编写网页的超文本标记语言
HTML文档的结构
1.html网页
2.头部部分
3.标题
4.主体
5.内容
HTML超文本标记语言
Hyper Text markup Language
网页的“源码”
浏览器:解析和执行HTML源码的工具
超链接
超链接是将网站中不同网页链接起来的功能
发布
将制作好的网页上传到服务器供用户访问的过程
标签
头部标签中常用标签
标签:
< title > 定义了文档的标题
< base > 定义了页面链接标签的默认链接地址
< link > 定义了文档和外部资源之间的关系
< meta > 定义了HTML文档中的元数据
< script > 定义了客户端的脚本文件
< style > 定义了HTML文档的样式文件
内容标签中常用标签
标签:
< table > 定义一个表格
< tr > 定义了表格中的一行
< td > 定义了表格中的某一行某一列
< img > 定义了一个图像
< a > 定义了一个超链接
< p > 定义了一行
< br > 定义了换行
< font > 定义了字体
Web
Web概述
web(World Wide Web)即全球广域网,也称为万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
Web版本
Web1.0
以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容,这个过程是网站到用户的单向行为
Web2.0
更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者,加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与
版本区别
1):Web 1.0 被称为“只读 Web”。Web 2.0 被认为是“参与式社交 Web”
2):Web 1.0 由静态网页组成,Web 2.0 出现了 Web 应用程序
3):内容由 Web 1.0 中的服务器文件系统提供。Web 2.0 内容灵活且可响应人工输入
静态网页与动态网页
静态网页
静态网页是标准的HTML文件扩展名是.htm .html,例如文本、图像、声音、Flash动画、客户端脚本和Activex控件及Java小程序等,是网站建设的基础,早期网站一般都由静态网页制作,没有后台数据库、不含程序和不可交互的网页,相对更新起来比较麻烦,适用于一般更新较少的展示型网站。
静态网页特点
(1)静态网页每个网页都有一个固定的URL,且网页URL以.htm、.html、.shtml等常见形式为后缀,而不含有“?”;
(2)网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页的内容都是保存在网站服务器上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件;
(3)静态网页的内容相对稳定,因此容易被搜索引擎检索;
(4)静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难;
(5)静态网页的交互性较差,在功能方面有较大的限制
动态网页
动态网页的URL不固定,能通过后台与用户交互,在动态网页网址中有一个标志性的符号——“?”
常用的语言有PHP、JSP、Python、Ruby等
动态网页特点
1、采用动态网页技术的网站可以实现更多的交互功能,比如:用户注册、登录、在线调查等,只要有编程基础,那想要什么功能,动态网站都能实现,这也是静态网站所无法做到的。
2、动态网页以数据技术为基础,用户访问网站时,只需要调用数据库,那用户想要的内容便会出现在网页上,这样将大大降低网站维护人员的工作量,而且不用生成一个真实存在的网页,即可降低对网站服务器空间的占用。
3、动态网页中的“?”即网址后面所跟的参数,对搜索引擎检索存在一定的问题,在搜索引擎发展之初是不能识别“?”后面的动态参数,但随着技术的进步,搜索引擎已经能识别大多数动态参数,只要动态参数不太长,那抓取、收录和排名就都不是问题。但要注意的是,如果动态参数过多,那搜索引擎蜘蛛就会调入无限循环黑洞的陷阱,所以建议大家动态参数要尽可能的少,或者是生成静态、伪静态处理。
4、带动态参数的网址不利于记忆和传播,同时对信任度也有一定的负面影响,建议做一些技术处理。
HTTP协议
HTTP协议简介
http是HyperText Transfer Protocol(超文本传输协议)的缩写,它的发展是由万维网协会(Word Wide Web Consortium)和Internet工作小组IETF(Intent Engineering Task Force)合作的结果,是目前互联网上应用最广的一种网络协议。所有的www文件都必须遵循一个标准,是以ASCII码传输,建立在TCP/IP协议之上的应用层规范。 它可以使浏览器更加高效,使网络传输减少;不仅保证计算机正确快速的传输超文本文档,还确定文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP版本
HTTP /0.9(1991年)
a,只有一个命令GET
b,没有HEADER等描述数据的信息,服务器只能返回HTML格式的字符串数据;
c,服务器发送完毕便立即关闭TCP连接
HTTP /1.0(1996年)
a,新增了POST命令和HEAD命令。
b,新增了Status Code和HTTP Header。
c,多字符集的支持、多部分发送、权限和缓存等。
d,缺点是每个TCP连接还是和之前一样,每次只能发送一个请求。数据发送完毕,连接就关闭,如果还要请求其他资源,就必须新建一个连接。
e,增加了content-type ,传输数据不再局限于文本 但是http/1.0 并不是一个标准,只是记录已有实践和模式的一份参考文档,不具有实际的约束力,相当于一个备忘录。
HTTP /1.1(1999年)
1.1版本新增了24个错误状态响应码,可以支持访问页面的长链接
409:请求的资源与资源当前状态发生冲突
410:服务器上的某个资源永久性删除
发布了RFC文档,编号为2616,而从这个版本起,这就是一份正式的标准,而不是一份参考文档;而且这个版本极大的优化了网络链接,奠定了之后的Web1.0,Web2.0时代。
a,支持持久连接(keepalive),持久连接即为TCP连接在服务器发送完数据默认不关闭,可以被多个请求复用
b,引入管道机制(Pipelining)。即在同一个TCP连接里面,客户端可以同时发送多个请求。上述两个特性便解决了上面一个版本我们提到的缺点。
c,增加了Host和其他一些命令。Host用来指定服务器域名。有了Host我们便可以在同一物理服务器上运行多个web服务。
d,增加了PUT/DELETE/OPITIONS 等新方法 e,增加了缓存控制和管理 (Cache control)
HTTP /2(2015年)
标准委员会不打算发布子版本了,所以不叫2.0,下一个版本就是http/3。这个版本解决了1.1存在的2个问题:
1.连接慢,因为引入管到机制,但是请求都是串行的;
2.性能差,1.1是纯文本方式,借助cpu的zip压缩方式减少了网络带宽,但是耗费了前端后端的cpu.
a,http/2中使用二进制传输,不再是纯文本,头信息和数据体都是二进制,并且统称为”帧"(frame):头信息帧和数据帧。
b,正是由于二进制传输,同一个连接里面发送多个请求时,服务器端不再需要按照顺序来返回处理后的数据了,可以在TCP中进行并行的请求,彻底解决了1.1中连接慢的问题。
c,头信息压缩以及推送等提高效率的功能:有效的减少带宽使用。
d,允许服务器主动向客户端推送数据。
e,增强了安全性,基于 TLS 协议。 http/2 的主要问题有队头阻塞问题,也就是说,若干个 HTTP 请求在复用一个 TCP 的连接,那么一旦发生丢包,造成的问题就是所有的请求都必须等待这个丢了的包重传回来,哪怕这个包不是我这个 HTTP 请求的。这个问题相信在未来的http/3会得到有效的解决
HTTP请求方式
Http1.0定义了三种请求方法:GET, POST 和 HEAD方法
Http1.1新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法
GET和POST的区别
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。
GET和POST还有一个重大区别
简单的说: GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说: 对于GET方式的请求,浏览器会把HTTP HEADER和DATA一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送HEADER,服务器响应100 CONTINUE,浏览器再发送DATA,服务器响应200 OK(返回数据)。
也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。 因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此YAHOO团队有推荐用GET替换POST来优化网站性能。
1.GET与POST都有自己的语义,不能随便混用。
2.据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
3.并不是所有浏览器都会在POST中发送两次包,FIREFOX就只发送一次。
HTTP状态码-Status Code
当访问一个网页时,浏览者的浏览器会向网页发出请求,当浏览器接受并显示网页之前,服务器会发送一个包涵HTTP状态码的信息头,用来响应这个请求。 Http状态码由三个十进制数字组成,第一个十进制定义了状态码的类型,后两个数字没有分类作用。从第一个十进制数字,
大体上把状态码分为五类
1**:范围:100-101 分类:信息提示
2**:范围:200-206 分类:成功
3**:范围:300-305 分类:重定向
4**:范围:400-415 分类:客户端错误
5**:范围:500-505 分类:服务器错误
生产环境常用的HTTP状态码
200 : OK :请求成功
301 : moved permanently : 请求永久页面跳转
403 : Forbidden : 禁止访问该页面
404 : Not Found : 服务器无法找到被请求的页面
500 : Internal server Error :内部服务器错误
502 : Bad Gateway : 无效网关
503 : Service Vnarailable :当前服务不可用
504 : Gateway Timeout : 网关请求超时
HTTP的请求流程
一次完整的请求过程
1、DNS域名解析
解析地址顺序:
(1)浏览器自身的DNS缓存(缓存时间比较短,大概只有一分钟,且只能容纳1000条缓存);
(2)如果浏览器自身缓存里找不到,那么浏览器会搜索系统自身的DNS缓存;
(3)尝试从hosts文件里面找;
(4)上面三个过程都没有获取到的话,就去域名服务器查找
2、三次握手建立tcp连接
在http工作开始之前,客户端首先要通过网络与服务器建立连接,http连接是通过tcp来完成的。http是比tcp更高层次的应用层协议,根据规则,只有低层协议建立之后,才能进行高层协议的连接,因此,首先要建立tcp连接,一般tcp连接的端口号是80。
3、客户端发起http请求
4、服务端响应http请求
5、客户端解析html代码,并请求html代码中的资源
浏览器拿到html文件后,就开始解析其中的html代码,遇到js/css/image等静态资源时,就向服务器端去请求下载。
6、客户端渲染展示内容
7、关闭tcp连接
流程图
小结
完整过程:
1:用户输入URL(地址链接:www.baidu.com)
2:客户端获取到端口及主机名后,利用DNS解析域名,客户端会先去自身的浏览器中查看缓存,如果有之间反馈,如果没有,客户端便会去找host文件,host文件里没有的话,客户端便会去找本地的DNS缓存服务器,缓存服务器中没有,便会去找根,根只知道自己下级域,便让其去找一级域,一级域没有,会反馈其让其去找二级域,二级域如果有,解析完后会将结果反馈给客户端
3:客户端解析到IP地址后,会通过TCP三次握手与服务器建立链接,结束后,会经过四次挥手断开链接
三次挥手
客户A:发送SYN请求报文 (SYN=1 seq=x)
服务器B:收到请求链接,同意请求,发送ACK/SYN报文(ACK=1 SYN=1 seq=y ack=x+1)
客户A:收到服务器同意报文,确认链接,发送ACK报文(ACK=1 seq=x+1 ack=y+1)
四次挥手
客户A发送请求断开链接请求,发送FIN报文(FIN=1 seq=u)
服务器B收到断开请求发送ACK报文(ACK=1 seq=v ack=u+1)
服务器B发送同意断开FIN/ACK报文(FIN=1 ACK=1 seq=w ack=u+1)
客户A确认断开链接发送ACK报文(ACK=1 seq=u+1 ack=w+1)