web服务之HTTP协议

一.DNS与域名

1.1DNS简介

域名管理系统DNS(Domain Name System)是域名解析服务器的意思,应用层协议,是互联网的一项服务。它在互联网的作用是:把域名转换成网络可以识别的ip地址,在通过IP地址访问主机。 种由文字组成的名称,显而易见要更容易记忆。 全世界只有13台根域名服务器,一个主根服务器在美国,12个辅根服务器,其中9个在美国,欧洲两个,位于英国和瑞典,亚洲一个位于日本

1.2DNS协议及作用

DNS的默认端口为53,DNS端口分为TCP和UDP。 TCP是用来做区域传送,多用于主从同步在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。 UDP是用来做DNS解析的域名:通常由一个完全合格域名(FQDN)标识。FQDN全称 Fully Qualified Domain Name,它能准确表示出其相对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用".“分隔,对于DNS域google来说,其完全正式域名(FQDN)为google.com.
FQDN命名有严格的限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z和减号(-)。点号(.)只允许在域名标志之间(例如"google.com”)或者FQDN的结尾使用。
域名不区分大小,由最顶层到下层,可以分成:根域、顶级域、二级域、子域即全域名:同时带有主机名和域名的名称
FQDN = Hostname + DomainName 如:www .baidu.com.
DNS作用:
正向解析:根据域名查找对应的IP地址
反向解析:根据IP地址查找对应的域名

1.3域名体系结构

域名结构为分布式数据结构
1、根域:位于树状结构最顶层,用"."表示
2、顶级域:一般代表一种类型的组织机构或国家地区; 如.net(网络供应商,.cn(中国国家域名)
3、二级域:用来标明顶级域内的一个特定的组织,国家顶级域下面的二级域名由国家部门统一管理
4、子域:二级域下所创建的各级域统称为子域,各个组织或用户可以自由申请注册自己的域名
5、主机:主机位于域名空间最下层,就是一台具体的计算机 域名与IP地址之间是多对一的关系,一个IP地址不一定只对应一个域名,且一个域名只可以对应一个IP地址
常用DNS域名地址: 114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用。
8.8.8.8是GOoGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用 223.5.5.5和223.6.6.6:阿里云DNS

1.4DNS查询方式

1.4.1递归查询

主机向本地域名服务器的查询一般都是采用递归查询。 所谓递归查询就是:如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份, 向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。 因此,递归查询返回的查询结果要么是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

1.4.2迭代查询

本地域名服务器向根域名服务器的查询的方式叫迭代查询 迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。 然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。 顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。 最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机

1.5DNS解析方式

(1)/etc/ hosts
Linux系统中负责快速解析的文件,包含了ip与主机名的映射关系,在没有DNS服务器的情况下,使用本地/etc/hosts完成解析/映射,实现快速访问。PS:主要用于主机之间(IP和主机名)的映射/解析关系。
(2)在网卡配置文件中定义
/etc/ sysconfig/ network-scripts/ifcfg-ens33
域名服务器:保持和维护域名空间的程序;相应解析器的请求。
解析端(客户端)向DNS服务器发出请求的设备。
(3)etc/resolv.conf
DNS客户端配置文件,主要用于设置DNS服务器的P和域名,还包含了主机域名的搜索顺序等等,这个文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。PS:主要用与匹配DNS服务器。
生效顺序:1、hosts文件→2、网卡配置文件→3、/etc/resolv.conf

1.6域名注册

域名注册是Internet中用于解决地址对应问题的一种方法
遵循先申请先注册原则
域名注册步骤:
准备申请资料一>寻找域名注册网站一>查询域名一>正式申请一>申请成功

二.HTML网页结构

2.1网页组成结构

一个网页基本由网页、网站、域名、HTTP/HTTPS、URL、HTML组成
①网页
纯文本格式文件
编写语言为HTML
在用户的浏览器中被“翻译”成网页形式显示出来
②网站
由一个一个页面构成的,是多个网页的结合体
主页:打开网站后出现的第一个网页称为网站主页(或首页)
③域名
浏览网页时输入的网址
④HTTP/HTTPS
用来传输网页的通信协议(是否加密),是一种通讯/交互的标准/规范
⑤URL
是一种万维网寻址系统
⑥HTML
用来编写网页的超文本标记语言

2.2HTML

①HTML(Hyper Text Markup Language)超文本标记语言,是网页的源码
浏览器:解释和执行HTML源码的工具
②HTML文档结构:
HTML网页
头部部分
标题部分
主体部分
网页内容,包括文本、图像等
③网页基本标签
头标签中常用标签:

扫描二维码关注公众号,回复: 14236866 查看本文章
标签 描述
< title > 定义了文档的标题
< base > 定义了页面链接标签的默认链接地址
< link > 定义了一个文档和外部资源之间的关系
< meta > 定义了 HTML 文档中的元数据
< script > 定义了客户端的脚本文件
< style > 定义了 HTML 文档的样式文件

内容标签中常用标签

标签 描述
< table > 定义一个表格
< tr > 定义了表格中的一行
< td > 定义了表格中某一行的一列
< img > 定义了一个图像
< a > 定义了一个超链接
< p > 定义了一行
< br > 定义了换行
< font > 定义了字体

三.web简介

web服务也称为万维网,一种分布式图形信息系统,建立在Internet上的一种网络服务。

3.1web版本

3.1.1web1.0

以编辑为特征,网站提供给用户的内容是编辑处理后的,然后用户阅读网站提供的内容这个过程是网站到用户的单向行为(静态页面的概念)。

3.1.2web2.0

更注重用户的交互作用,用户既是网站内容的消费者(浏览者),也是网站内容的制造者加强了网站与用户之间的互动,网站内容基于用户提供,网站的诸多功能也由用户参与建设,实现了网站与用户双向的交流与参与(动态页面)。

3.2静态网页与动态网页

3.2.1静态网页

静态网页是标准的HTML文件扩展名是.htm .html(例如文本、图像、声音、Flash动画、客户端脚本和Activex控件及Java小程序等),是网站建设的基础,早期网站一般都由静态网页制作,没有后台数据库、不含程序和不可交互的网页,相对更新起来比较麻烦,适用于一般更新较少的展示型网站。
特点
每个静态网页都有一个固定的URL,且URL以.htm、.html、.shtml等常见形式为后缀,而不含有"?"。
网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的。
静态网页的内容相对稳定,容易被搜索引擎检索。
静态网页没有数据库的支持,在网站制作和维护方面工作量较大,因此当网站信息量很大时完全依靠静态网页制作方式比较困难。
静态网页的交互性较差,在功能方面有较大的限制页面浏览速度迅速,过程无需连接数据库,开启页面速度快于动态页面。

3.2.2动态网页

网页URL不固定,能通过后台与用户交互
在动态网页网址中有一个标志性的符号——“?”
常用的语言有PHP、JSP、Python、Ruby等
特点
①交互性
网页会根据用户的要求和选择而动态改变和响应,将浏览器作为客户端界面,这将是今后wBB发展的大势所趋
②自动更新
无须手动地更新HTML文档,便会自动生成新的页面,可以大大节省工作量
③因时因人而变
当不同的时间,不同的人访问同一网址时会产生不同的页面

四.HTTP协议

4.1HTTP协议简介

(1)HTTP(超文本传输协议HyperText Transfer Protocol)协议是互联网上应用最为广泛的一种网络协议,它是基于TCP/IP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。
(2)HTTP/HTTPs是应用层上的协议,建立在传输层TCP之上,客户端通过与服务端进行TCP连接(三次手握),之后发送HTTP请求与接收HTTPI响应都是通过访问Socket接口来调用TCP协议实现。
(3)HTTP 是一种无状态(stateless)协议。HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理。这样做的目的是为了保持。HTTP协议的简单性,从而能够快速处理大量的事务,提高效率。然而,在许多应用场景中,我们需要保持用户登录的状态或记录用户购物车中的商品。由于HTTP是无状态协议,所以必须引入一些技术来记录管理状态,例如ICookie。
(4)cookie和session 都为了实现的是http的短期的持久化(内存/缓存方式,查询快、效率比较高)
cookie:是缓存在用户端(client)浏览器中的(默认缓存一天),当下次客户端通过同一个浏览器访问客户端的时候,会优先读取cookie中的缓存信息,向服务端进行请求,同时服务端收到客户端请求的时候,读取到cookie文件,知道客户端之前找的是服务器A处理的任务,省资源,直接将请求直接再交给服务器A处理。
两者对比:
cookie省服务器性能、session更安全
为后面服务、集群、功能优化做铺垫。
具体解释了怎么解决HTTP无状态协议的持久化/存储。
(5)HTTP协议的版本
HTTP 0.9,版本过于老旧,目前基本无人使用
HTTP 1.0
HTTP 1.1
HTTP 2.0

4.2HTTP1.0与2.0区别

(1)缓存处理
在HTT1.0中主要使用header里的If-Modified-8ince ,Expires来做为缓存判断的标准,HTP1.1则引入了更多的缓存控制策略例如Entitytag,If-Unmodified-since,If-Match,If-None-Match等更多可供选择的缓存头来控制缓存策略。
(2)带宽优化及网络连接的使用
HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206 (Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
(3)错误通知的管理
在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突; 410(Gone)表示服务器上的某个资源被永久性的册除。
(4)Host头处理
在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
(5)长连接
HTTP1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TcP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

4.3HTTP请求格式

4.3.1Get方式

①请求行
请求的方式
请求的资源路径请求的版本协议号
②请求头(描述信息/标准化信息)
Accept:客户端可以接受的数据类型
Accept-Language:客户端可以接受的语言类型User-Agent:浏览器的信息
Accpect-Encoding:客户端可以接受的编码格式Host:表示请求的ip和端口号
Connection:告诉服务器请求连接如何处理
Keep-Alive:通知服务器回传数据不要马上关闭,保持一小段的连接
Closed:马上关闭
小结:
从指定的服务器上获得数据GET请求能被缓存
GET请求会保存在浏览器的浏览纪录里( cookit)GET请求有长度的限制
主要用于获取数据
查询的字符串会显示在URL中,不安全

4.3.2Post方式

①请求行
请求的方式
请求的资源路径
请求的协议的版本号
③请求头
Accept:客户端可以接受的数据类型
小结:
提交数据给指定服务器处理POST请求不能被缓存
POST请求不会保存在浏览器的浏览纪录里POST请求没有长度限制
查询的字符串不会显示在URL中,比较安全

4.3.3Get与Post区别

①区别一:语义上的区别
Get向服务器请求数据,依照HTTP协议,get是用来请求数据。
Post向服务器发数据,依照HTTP协议,Post的语义是向服务器添加数据,也就是说按照post的语义,该操作是会修改服务器上的数据。
②区别二:服务器请求的区别
Get请求是可以被缓存,示例:访问百度,访问的方式就是GET,此时访问后的内容会缓被存在浏览器中,短时间再次访问,其实是拿到的浏览器中的缓存内容另外Get请求只能接收ASCII码的回复。
Post请求是不可以被缓存的。对于Post方式提交表单,刷新页面浏览器会弹出提示框"是否重新提交表单",Post可以接收二进制等各种数据形式,所以如果要上传文件一般用Post请求。
③区别三:参数放请求头和请求体的差别
Get请求通常没有请求体(当然这也是可以由程序猿心情改变的),在rcP传输中只需传输一次(而不是一个包),所以Get请求效率相对高。
Post请求将数据放在请求体中,而实际传输中,会先传输完请求头,再传输请求体,是分为两次传输的(而不是两个包)。
Post请求头会比cet更小(一般不带参数),请求头更容易在一个ncP包中完成传输,更何况请求头中有Content-Length的标识,可以更好地保证Http包的完整性。

4.4HTTP状态码

当使用浏览器访问某一个URL,会根据处理情况返回相应的处理状态

状态码首位 已定义范围 分类
1xx 100-101 信息提示
2xx 200-206 成功
3xx 300-305 重定向
4xx 400-415 客户端错误
5xx 500-505 服务器错误

常见的HTTP状态码

消息 描述 含义
200 OK 请求成功(其后是对GET和POST请求的应答文档)
301 Moved Permanently 请求的永久贞面跳转
403 Forbidden 禁止访问该页面
404 Not Found 服务器无法找到被请求的页面
500 Internal Server Error 内部服务器错误
502 Bad Gateway 无效网关
503 Service Unavailable 当前服务不可用
504 Gateway Timeout 网关请求超时

4.5HTTP请求流程

HTTP请求的基本流程
HTTP协议(HyperText Transfer Protocol,超文本传输协议):是一种发布和接收 HTML页面的方法。
HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。
SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。
HTTP的端口号为80
HTTPS的端口号为443
浏览器的主要功能是向服务器发出请求,在浏览器窗口中展示您选择的网络资源,HTTP是一套计算机通过网络进行通信的规则。
HTTP请求是指 : 客户端通过发送 HTTP 请求向服务器请求对资源的访问。 它向服务器传递了一个数据块,也就是请求信息,HTTP 请求由三部分组成:请求行、请求头和请求正文。
HTTP请求详细过程:
用户输入URL(地址链接)(http://www.baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先找自身的缓存,如果有解析结束,如果没有客户端会去找host文件,如果host文件没有的话,客户端会去找本地的DNS缓存服务器,本地的DNS缓存服务器没有的话,缓存服务器会去找根域,根域没有,会返回一个.com.然后本地缓存服务器会去找顶级域,顶级域没有的话会返回baidu.com.,然后本地缓存服务器会去找二级域,二级域解析完后会返回客户端。

客户端解析到IP地址后会通过TCP的三次握手与服务器建立连接,首先客户端向服务器发送请求连接报文,SYN=1初始序号seq为x,这时客户端进入SYN-SENT状态,服务器确认请求报文ACK=1,SYN=1,确认序号ACK=X+1,服务器产生的初始序号seq=y,回复客户端确认连接,此时服务器进入SYN-RCVD状态,客户端接受后确认报文ACK=1,ACK=y+1,客户端又重组序号为x+1。TCP连接已经建立,客户端进入ESTABLISHED 状态,当服务器收到客户端的确认后,也会进入 ESTABLISHED 状态。客户端连接到IP地址,发送httpGET的请求,从服务器读取http响应。

断开连接时,需要通过TCP的四次挥手完成,服务端向客户端发送断开连接请求报文,FIN=1,ACK=1,序号为u,客户端处于FIN—WAIT-1(终止等待1)状态,服务器确认报文ACK=1,确认序号为ACK=u+1,服务器的序号为v,回复客户端,服务器服务端处于CLOSE—WAIT(关闭等待)状态,客户端接受确认报文ACK=1,确认序号ACK=v+1,客户端重组序号为seq=u+1,客户端处于FIN—WAIT-2(终止等待2)状态,然后服务器也想让客户端断开连接,就发送了断开连接请求,FIN=1,ACK=1,服务器重组序号为w,服务器服务端处于LAST—ACK(最后确认)状态,客户端接受后确认报文ACK=1.确认序号为ACK=w+1,客户端序号为u+1,客户端进入CLOSED(时间等待)状态,等待最长报文段寿命2*MSL,服务器确认后,立即进入关闭状态。然后进行关闭连接。

总结:url输入地址–>通过DNS解析,将域名解析为IP–>通过TCP/IP协议进行三次握手建立连接
断开连接:服务器先提出断开连接请求,进行四次挥手断开连接。

五.总结

DNS生效文件顺序:1、hosts文件→2、网卡配置文件→3、/etc/resolv.conf

猜你喜欢

转载自blog.csdn.net/weixin_44175418/article/details/124819945
今日推荐