Web和http协议概述

web简单了解和http协议概述

一、DNS和域名

1、网络是基于TCP/IP协议进行通信二行连接的,每一台主机都有一个唯一的标识(固定的IP地址),用以区别在网络上成千上万个用户和计算机。网络在区分所有与之相连的网络和主机时,均采用一种唯一、通用的地址格式。即每一个与网络相连接的计算机和服务器都被指派一个独一无二的地址。

2、为了保证网络上每台计算机的IP地址的唯一性,用户必须向特定机构申请注册,分配IP地址网络中的地址方案分为两套:IP地址系统和域名地址系统。这两套地址系统其实是一一对应的关系。

3、网络上交互是基于TCP/IP协议的,每个主机在网络上有唯一的标识IP地址,但是其为32位标识,不方便记忆,所以,以IP地址位基础发展出了符号化地址来代替解决方案,也就是域名系统。

注:虚拟网络技术:bond技术
    Bond技术即bonding,它是Linux Kernel的一个模块,能将多块物理网卡绑定到一块虚拟网卡上,并通过修改网口驱动让多块网卡看起来是一个单独的以太网接口设备(对外只有一个IP),一般用于解决网卡的单点故障或网卡负载较高的场景。
	Bond技术需要物理网卡开启混杂模式才能正常工作。在混杂模式下,网卡不只接收目的MAC地址为自身的以太网帧,而是接收网络上所有的数据帧。为了实现多块网卡的协同工作,Bond将自己的MAC地址复制到各个物理网卡上,让所有的网卡共享同一个MAC地址。这个方式就要求所有的网卡都要支持BIOS,这样才能够让操作系统将MAC地址写到网卡上。
	网卡Bond模式:总共有7种(模式0~7),最常用的是负载模式(模式0)和主备模式(模式1),在网络流量较大的场景下推荐使用负载模式,如果网卡接的是同一个交换机,则交换机需要配置链路聚合,而在可靠性要求较高的场景下则推荐使用主备模式。
    //引用于:https://www.cnblogs.com/Dev0ps/p/7782957.html

二、DNS解析的三种方式

1、/etc/hosts

linux系统种负载快速解析的文件,包含了IP与主机名的映射关系,在没有DNS服务器的情况下,使用本地/etc/hosts完成解析映射,实现快速访问。

主机名查询静态表,是ip地址与域名快速解析的文件。ip地址与主机名之间的映射,包括主机的别名。通常将常用的域名和ip地址映射加入到hosts文件中,实现快速方便的访问。如果没有域名解析(DNS),操作系统需要查询该文件来解析对应主机名的ip地址;如果有域名解析(DNS),也可以设置该文件,优先级为: DNS缓存 > /etc/hosts > DNS服务  
[root@setting-style ~]# vim /etc/hosts  
    
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
    
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6  
    以上两个都是环回地址,分别是IPv4和IPv6的,后面对应的是其映射的主机名和各种别名。
2、/etc/resolv.conf

​ DNS客户端配置文件,主要用于设置DNS服务器的IP和域名,还包含主机域名的搜索顺序等等,这个文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。

[root@setting-style ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
3、/etc/sysconfig/network-scripts/ifcfg-ens33

也可以在网卡配置文件种添加DNS域名服务器地址。

[root@setting-style ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
......
DNS1=114.114.114.114

4、linux域名解析顺序

在linux中,往往解析一个域名时,先会找/etc/hosts文件,如果/etc/hosts文件没有对应,会去看网卡是否配置DNS域名解析服务器的地址,如果网卡也没有配置那么,就会去找DNS配置文件/resovl.conf。

所以大体顺序为:/etc/hosts->网卡配置(/etc/sysconfig/network-scripts/ifcfg-ens33)->/etc/resolv.conf

三、网页概述

1、基本概念

网页:

  • 纯文本格式文件
  • 编写语言为HTML
  • 在用户的浏览器中被“翻译”成网页形式显示出来

网站:

  • 由一个一个页码构成的,是多个网页的结合体

主页:

  • 打开网站后出现的第一个网页称为网站主页

HTTP/HTTPS:

用于传输王爷的通信协议,是一个通讯/交互的标准/规范。根据传输中是否加密分为无加密HTTP和由加密HTTPS。

URL:

统一资源定位器,是一种万维网中的寻找系统。

HTML:

超文本标记语言,用来编写网页。

超链接(hyperlink):

超链接,本质上属于网页上的一部分,它可以将不同网页或站点连接起来。

2、HTML

简介:

HTML叫做超文本标记语言,是一种规范,也是一种标准,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容。HTML文件可以使用任何能够生成txt文件的文本编辑器来编辑,生成超文本标记语言文件,只用修改文件名后缀为”.html”或“.htm”即可。

2.1 、HTML文档的结构

HTML网页

  1. 头部部分
  2. 标题部分
  3. 主题部分
  4. 网页内容、包括文本、图片等。
2.2、网页基本标签

每个网页都是由摘要信息,摘要信息的主要作用是,便于浏览器解析和搜索引擎搜索。

摘要标签有两种:<title>、<meta>

其他基本标签有:

  • 标题标签
  • 行控制相关标签
  • 范围标签
  • 图像标签
  • 找链接标签
  • 特殊符号
3、Web概述

​ Web(World Wide Web)即全球广域网,也成为万维网,是一种分布式图形信息系统,建立在internet上的一种网络服务。

3.1 Web1.0和Web2.0区别

Web1.0

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

Web2.0:

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

Web2.0的特点:用户分享、以兴趣为聚合点的社群、开发的平台,活跃的用户。

3.2、静态页面和动态页面

静态页面:

1)静态页面定义

  • 静态网页是标准的HTML文件。
  • 拓展名是.htm、.html。
  • 是网站建设的基础,早期网站一般都是由静态网页制作。
  • 没有后台数据库、不含程序和不可交互的网页。
  • 相对更新起来比较麻烦,适用于一般更新较少的展示型网站。

2)静态网页特点:

  • 每个今天网页都有一个固定的URL,且URL以,.htm、.html、.shtml等常见新式为后缀,而不含后“?”

  • 网页内容一经发布到网站服务器上,无论是否有用户访问,每个静态网页都是保存在网站服务器上的

  • 静态网页的内容相对稳定,容易被搜索引擎检索

  • 静态网页没有数据库的支持,在网站制作和维护方面

动态页面:

1)动态页面定义:

  • 网页URL不固定,能通过后台与用户交互
  • 在动态页面网址中有一个标志性符号“?”
  • 常用的语言有PHP、JSP、Python、Ruby等

2)动态页面特定:

  • 交互性

​ 网页会根据用户的需求和选择二动态改变和响应,讲浏览器作为客户端界面

  • 自动更新

​ 无需受哦那个的更新HTML文档,便会自动生成新的页面,可以大大节省工作量

  • 因时因人而变

​ 当不同时间,不同的人访问同一网址时会产生不同的页面\

四、HTTP协议

4.1 HTTP概述

HTTP(超文本传输协议HyperText TransferProtocol)协议是互联网上应用最为广泛的一种网络协议,它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。

HTTP/HTTPS是应用层上的协议,建立在传输层TCP之上,客户端通过与服务端进行TCP连接(三次握手),之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。

HTTP 是一种无状态 (stateless) 协议,HTTP协议本身不会对发送过的请求和相应的通信状态进行持久化处理(存储,保存)。这样做的目的是为了保持HTTP协议的简单性,从而能够快速处理大量的事务,提高效率。

然而,在许多应用场景中,我们需要保持用户登录的状态或记录用户购物车中的商品。由于HTTP是无状态协议,所以必须引入一些技术来记录管理状态,例如Cookie。

**cookie和session都为了实现的是http的短期的持久化(内存/缓存方式,查询快、效率比较高),**cookie是缓存在用户端(client)浏览器中的(默认缓存一天),当下次客户端通过同一个浏览器访问客户端的时候,会优先读取cookie中的缓存信息,向服务端进行请求,同时服务端收到客户端请求的时候,读取到cookie文件,知道客户端之前找的是服务器A处理的任务,为了省事儿,省资源,干脆直接讲请求直接再交给服务器A处理。

cookie和session区别:

4.2 HTTP版本
HTTP 0.9已过时
HTTP 1.0(完善的请求、响应模型  并且协议补充(完整) get  post head方法)
HTTP 1.1(新增五种请求方式:OPTIONS  PUT  DELETE  TRACE  CONNECT)
HTTP 2.0
    目前常用的是1.0及以后版本。
4.2.1 HTTP1.0和HTTP1.1区别

缓存处理

​ 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。

带宽优化及网络连接的使用:

​ HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。

错误通知的管理:

​ 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

Host头处理:

​ 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名(hostname)。但随着虚拟主机技术的发展,在一台物理服务器上可以存在多个虚拟主机(Multi-homed Web Servers),并且它们共享一个IP地址。HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

长连接:

​ HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启Connection: keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

4.3 HTTP请求格式

​ HTTP 支持多种的请求命令,每条 HTTP 请求报文都包含一个请求命令,告诉服务器要执行什么动作,包括获取一个页面、允许一个网关程序、删除一个文件等。

方法作用
GET用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。
POST用于将数据发送到服务器以创建或更新资源,它要求服务器确认请求中包含的内容作为由URI区分的Web资源的另一个下属。
HEADHEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分。
PUT用于将数据发送到服务器以创建或更新资源,它可以用上传的内容替换目标资源中的所有当前内容。
DELETE用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容。
CONNECT用来建立到给定URI标识的服务器的隧道;它通过简单的TCP / IP隧道更改请求连接,通常实使用解码的HTTP代理来进行SSL编码的通信(HTTPS)。
OPTIONS用来描述了目标资源的通信选项,会返回服务器支持预定义URL的HTTP策略。
TRACE用于沿着目标资源的路径执行消息环回测试;它回应收到的请求,以便客户可以看到中间服务器进行了哪些(假设任何)进度或增量。

常用方法主要是GET和POST。

4.3.1 GET方法

GET请求行:

  • 请求的方式
  • 请求的资源路径
  • 请求的版本协议号

请求报头(描述信息/标准化信息):

  • Accept:客户端可以接受的数据类型

  • Accept-Language:客户端可以接受的语言类型

  • User-Agent:浏览器的信息

  • Accpect-Encoding:客户端可以接受的编码格式

  • Host:表示请求的ip和端口号

  • Connection:告诉服务器请求连接如何处理

  • Keep-Alive:通知服务器回传数据不要马上关闭,保持一小段的连接

  • Closed:马上关闭

4.3.2 POST方法

POST请求行:

  • 请求的方式
  • 请求的资源路径
  • 请求的版本协议号

请求报头(描述信息/标准化信息):

  • Accept:客户端可以接受的数据类型

  • Accept-Language:客户端可以接受的语言类型

  • Referer:表示请求发起时,浏览器地址栏中的地址

  • User-Agent:浏览器的信息

  • Content-Type:发送的数据类型

  • Content-Length:发送的数据长度

请求体:

  • 就是发送给服务器的数据
4.3.3 POST和GET区别

语义上的区别:

  • Get向服务器请求数据,依照HTTP协议,get 是用来请求数据。

  • Post向服务器发数据,依照HTTP协议,Post的语义是向服务器添加数据,也就是说按照Post的语义,该操作是会修改服务器上的数据

服务器请求的区别:

  • Get请求是可以被缓存,示例:访问百度,访问的方式就是GET,此时访问后的内容会缓被存在浏览器中,短时间再次访问,其实是拿到的浏览器中的缓存内容

  • 另外Get请求只能接收ASCII码的回复

  • Post请求是不可以被缓存的。对于Post方式提交表单,刷新页面浏览器会弹出提示框“是否重新提交表单”,Post可以接收二进制等各种数据形式,所以如果要上传文件一般用Post请求

参数放请求头和请求体的差别:

  • Get请求通常没有请求体(当然这也是可以由程序猿心情改变的),在TCP传输中只需传输一次(而不是一个包),所以Get请求效率相对高。

  • Post请求将数据放在请求体中,而实际传输中,会先传输完请求头,再传输请求体,是分为两次传输的(而不是两个包)。

  • Post请求头会比Get更小(一般不带参数),请求头更容易在一个TCP包中完成传输,更何况请求头中有Content-Length的标识,可以更好地保证Http包的完整性。

总结:

GET方法:

  • 从指定的服务器上获得数据GET请求能被缓存
  • GET请求会保存在浏览器的浏览纪录里( cookit )
  • GET请求有长度的限制
  • 主要用于获取数据
  • 查询的字符串会显示在URL中,不安全

POST方法:

  • 提交数据给指定服务器处理POST请求不能被缓存
  • POST请求不会保存在浏览器的浏览纪录里
  • POST请求没有长度限制
  • 查询的字符串不会显示在URL中,比较安全
4.4 状态码

状态码分类:

状态码首位范围类型说明
1XX100-101信息提示
2XX200-206成功
3XX300-305重定向
4XX400-415客户端错误
5XX500-505服务器错误

常见状态码:

状态码作用描述
200(ok)请求成功(其后是对请求的应答文档)
301(Moved Permanently)请求的永久页面跳转
403(Forbidden)禁止访问该页面
404(Not Found)服务器无法找到被请求的页面
500(Internal Server Error)内部服务器错误
502(Bad Gateway)无效网关
503(service Unavailable)当前服务不可用
504(Gateway Timeout)网关请求超时
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值