HTTP

HTTP状态码

  • 1**:请求收到,继续处理
  • 2**:操作成功收到,分析、接受
  • 3**:完成此请求必须进一步处理
  • 4**:请求包含一个错误语法或不能完成
  • 5**:服务器执行一个完全有效请求失败

100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本

200——交易成功
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求

300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除

400——错误请求,如语法错误
401——请求授权失败
402——保留有效ChargeTo头响应
403——请求不允许
404——没有发现文件、查询或URl
405——用户在Request-Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content-Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求
也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下
一级服务器不能满足请求

500——服务器产生内部错误
501——服务器不支持请求的函数
502——服务器暂时不可用,有时是为了防止发生系统过载
503——服务器过载或暂停维修
504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505——服务器不支持或拒绝支请求头中指定的HTTP版本

HTTP和HTTPS的区别

参考链接

HTTP称为超文本传输协议,是互联网上应用最为广泛的一种网络协议, HTTPS (全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是 HTTP 的安全版。

1、HTTP 的 URL 以 HTTP:// 开头,而 HTTPS 的 URL 以 HTTPs:// 开头;

2、HTTP 是不安全的,而 HTTPS 是安全的,比如一些银行、政府、平台网站会使用 HTTPS,就拿小编现在所在的SUBMAIL赛邮云通信来说, 我们的官网就采取了 HTTPS 协议,提高其安全性。

3、传输效率上 HTTP 要高于 HTTPS ,因为 HTTPS 需要经过加密过程,过程相比于 HTTP 要繁琐一点,效率上低一些也很正常;

4、HTTP 无需证书,而 HTTPS 必需要认证证书;

5、从 SEO 方面来参考,发现百度和谷歌是不同的。谷歌在 HTTPS 站点的收录问题上与对 HTTP 站点态度并无什么不同之处,甚至把“是否使用安全加密”(HTTPS)作为搜索排名算法中的一个参考因素,采用 HTTPS 加密技术的网站能得到更多的展示机会。百度曾表示不主动抓取 HTTPS 网页,所以目前采取 HTTPS 的网站是很难被百度收录的,不过有消息称百度接下来可能会向谷歌靠拢,对于 HTTPS 页面同样主动抓取。

6、还有一点也不能忽视,使用 HTTPS 需要证书,申请证书是要费用的,相比于 HTTP 不需要证书来说,HTTPS 这笔费用是无法避免的。

TCP和UDP的区别

1、TCP面向连接(如打电话要先拨号建立连接);
UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;
UDP尽最大努力交付,即不保 证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;
UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;
UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;
UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,
UDP则是不可靠信道

  • 使用TCP和UDP的情况

DNS 的UDP报文上限大小是512 字节, 所以当某个response大小超过512 (返回信息太多),DNS服务就会使用TCP协议来传输。后来DNS 协议扩展了自己的UDP协议,DNS client 发出查询请求时,可以指定自己能接收超过512字节的UDP包, 这种情况下,DNS 还是会使用UDP协议

cookie与webstorage的区别

参看链接

参考链接

webstorage
webStorage是html5中用于本地化存储的一种方式,而在之前呢我们是用cookie的存储方式处理;

区别

  • cookie需要向服务端发送一个请求,服务端返回一个cookieId,存储用浏览器缓存里,需消耗一定的带宽。[cookie会随着每次HTTP请求头信息一起发送,无形中增加了网络流量];
  • cookie存储的数据容量有限,根据浏览器类型不同而不同,IE6大约只能存储2K;
  • webstorage只需把数据存储于本地;

存储数据的方式

  • sessionStorege:
    用这种方式存储的数据仅窗口级别有效,同一个窗口(或者Tab)页面刷新或者跳转,都能获取到本地存储的数据,当新开窗口或者页面时,原来的数据就失效了[仅限当前页面]
    缺点:IE不支持,不能实现数据的持久保存。

  • localStorage
    存于本地C盘,浏览器关闭打开之后还有;
    缺点:低版本浏览器不支持。

跨域读取cookie,localstorage,如何跨域

参考链接

跨域

指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

(同源是指”协议+域名+端口”三者相同,即便两个不同的域名指向同一个Ip地址,也非同源。)

同源策略限制以下几种行为:

1.) Cookie、LocalStorage 和 IndexDB 无法读取
2.) DOM 和 Js对象无法获得
3.) AJAX 请求不能发送

跨域解决方案:

1、 通过jsonp跨域

  • jQuery ajax:
    2、 document.domain + iframe跨域
    3、 location.hash + iframe
    4、 window.name + iframe跨域
    5、 postMessage跨域
    6、 跨域资源共享(CORS)
    7、 nginx代理跨域
    8、 nodejs中间件代理跨域
    9、 WebSocket协议跨域

TCP的三握四挥

第一次握手:客户端将标志位SYN置为1,发送给服务器,进入SYN-SENT状态,等待服务器确认

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查ACK是否为1,如果正确则将标志位ACK置为1,将该数据包发送给Server,Server检查ack是否为K 1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态

第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号 1,Server进入CLOSE_WAIT状态。

第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。

第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号 1,Server进入CLOSED状态,完成四次挥手。

  • 为什么挥手要四次

因为当Server端接收到Client端的请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。在关闭连接时,当Server端收到FIN报文时,很可能并不能立即关闭SOCKET,所以只是先回复一个ACK报文,告诉Client端,你发的报文收到了。当Server端所有的报文都发送完了,我才能发送FIN报文,所以需要四次。

DNS原理

掘金
参考原理

原理:DNS是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。

DNS的特点:

  • 分布式
  • 协议支持TCP和UDP,常用端口是53
  • 每一级域名的长度限制是63
  • 域名总长度限制是253

DNS的分层数据库结构

类似于一棵树:

这里写图片描述

最上面的是根域名.,下来是顶级域名com,接下来是网站的域名chinaz,以此类推,在使用时由下而上。这样是为了防止名称冲突,并且现实中的DNS是分布式存储

根域名服务器只管理顶级服务器,同时把每个顶级域的管理委派给各个顶级域,所以当你要申请com下的二级域名时,找com域名注册中心就行。当你管理一个域名的子域名时,可以搭建自己的nameserver,在注册中心把这个域名的管理权委派给自己搭建的nameserver。自建nameserver和不自建的结构如图:

这里写图片描述

一般、能不自建就不自建,维护高可用的DNS并不容易

需要搭建自己的nameserver的情况:

1.搭建对内的DNS。公司内部机器众多,通过ip相互访问太过凌乱,这时可以搭建对内的nameserver,允许内部服务器通过域名互通
2.公司对域名厂商提供的nameserver性能不满意。虽然顶级域名注册商都有自己的nameserver, 但注册商提供的nameserver 并不专业,在性能和稳定性上无法满足企业需求,这时就需要企业搭建自己的高性能nameserver,比如增加智能解析功能,让不同地域的用户访问最近的IP,以此来提高服务质量

DNS的分布式管理, 当把一个域委派给一个nameserver后,这个域下的管理权都交由此nameserver处理。 这种设计一方面解决了存储压力,另一方面提高了域名管理的灵活性。

当用户访问我们网站一个网页时,他需要经过以下步骤:

  1)找到这个网页的存放服务器;

  2)服务器将用户的请求信息接入;

  3)服务器通过文件路径(URL)查找用户请求网页;

  4)用户将该网页内容下载到自己电脑上。

DNS解析主要是让用户通过url找到文件存放的服务器,即用于第一个步骤,

域名的解析

DNS解析主要有递归查询,就是在某个DNS服务器缓存中查找不到相应的域名与IP地址对应关系时,自动跳转到到下一步骤通过下一个DNS服务器进行查找。

DNS解析的过程
1).客户端向本地DNS服务器(递归解析服务器) 发出解析tool.chinaz.com域名的请求
2).本地dns服务器查看缓存,是否有缓存过tool.chinaz.com域名,如果有直接返回给客户端;如果没有执行下一步
3).本地dns服务器向根域名服务器发送请求,查询com顶级域的nameserver 地址
4).拿到com域名的IP后,再向com nameserver发送请求,获取chinaz域名的nameserver地址
5).继续请求chinaz的nameserver, 获取tool域名的地址,最终得到了tool.chinaz.com的IP,本地dns服务器把这个结果缓存起来,以供下次查询快速返回
6).本地dns服务器把把结果返回给客户端

DNS解析过程的问题

  • DNS 污染(DNS cache pollution)
    DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组(LocalDNS),把域名指往不正确的IP地址。

    • LocalDNS缓存时间不可控
      PublishDns 中的变更未能及时同步到LocalDNS,其间的同步时间不可控.
      例如变更域名的映射IP,同步到LocalDNS还需一定的时间方可生效(主干DNS默认为24h内生效),但二级或自建DNS可动态设置)

    • DNS 解析失败
      设备使用网络环境中默认的DNS解析失败,或当前DNS出现宕机.

    • DNS 查询时间过长
      如DNS Cache、Hosts、ISP DNS 都无法提供IP映射,则DNS继续递归进行向上查询,导致查询时间过长。

    DNS的递归查询和迭代查询

    • 递归查询:

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

  • 迭代查询:

当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。

CDN的原理

参考链接

CDN内容分发网络,尽量避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,让内容传输的更快。

通过网络放置节点服务器所构成的现有的互联网基础上的一层智能虚拟网络,CDN可以实时的根据网络流量和各节点的连接、负载状况以及用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点,目的是使用户可以就近取得所需的内容,解决网络拥挤状况,体感用户的访问网站速度

  • CDN的优缺点

优点:

服务器分发的文件更少.从而节约带宽.
响应更快

缺点:

缓存更新不及时针对缓存更新不及时的情况,可以通过用户操作较低的时段进行发布并向CDN推送同步Action,避免中高峰时段进行同步更新时数据不同步的情况.

回源时间过长同上,进行强制同步操作.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值