【计算机网络】 --- 知识点总结

访问刷新分析

标签进入、输入url回车进入

1、由于该例没有设置 no-cache 和 no-store,所以默认先走强缓存路线。根据 cache-control (expires 优先级低)判断缓存是否过期,若没有过期则此时返回 200(from cache)
2、若本地缓存已经过期再走协商缓存路线,根据之前的 last-modified 值去与服务器比对,若这个时间之后没有改过则去读取本地缓存,返回 304(not modified)。
3、否则返回新的资源,状态码 200(ok),并更新返回响应的 last-modified 值。

按刷新按钮、F5 刷新、网页右键“重新加载”

这种情况下,实际是浏览器将 cache-control 的 max-age 直接设置成了 0,让缓存立即过期,直接走协商缓存路线。

ctrl + F5 强制刷新

强制刷新的情况下,浏览器会强行设置 no-cache,强制获取最新的资源,就连 if-modified-since 等其他缓存协议字段都会被吃掉。

OSI七层模型

OSI将计算机网络体系结构划分为七层,每一层实现各自的功能和协议,并完成与相邻层的接口通信。即每一层扮演固定的角色,互不打扰。
应用层应用层位于 OSI 参考模型的第七层,其作用是通过应用程序间的交互来完成特定的网络应用,该层协议定义了应用进程之间的交互规则,通过不同的应用层协议为不同的网络应用提供服务。
在应用层交互的数据单元我们称之为报文。

表示层

表示层的作用是使通信的应用程序能够解释交换数据的含义,第六层。
该层提供的服务主要包括数据压缩,数据加密以及数据描述,使应用程序不必担心在各台计算机中表示和存储的内部格式差异。

会话层

会话层就是负责建立、管理和终止表示层实体之间的通信会话。

传输层

传输层的主要任务是为两台主机进程之间的通信提供服务,处理数据包错误、数据包次序,以及其他一些关键传输问题。

网络层

网络层的主要任务就是选择合适的网间路由和交换节点,确保数据按时成功传送。
在发送数据时,网络层把传输层产生的报文或用户数据报封装成分组和包,向下传输到数据链路层。

数据链路层

在两个相邻节点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧,在两个相邻节点间的链路上传送帧。
通过控制信息我们可以知道一个帧的起止比特位置,此外,也能使接收端检测出所收到的帧有无差错,如果发现差错,数据链路层能够简单的丢弃掉这个帧,以避免继续占用网络资源

物理层

作为OSI 参考模型中最低的一层,物理层的作用是实现计算机节点之间比特流的透明传送。

计算机网络中常见的各层协议(周知端口号0-1023)

应用层:(典型设备:应用程序,如FTP,SMTP,HTTP)

DHCP:动态主机分配协议,使用UDP协议工作。<端口号67>
FTP:文件传输协议。<端口号21\20>
HTTP:超文本传输协议。<端口号80>
SMTP:简单邮件传输协议。<端口号25>
RPC:远程过程调用协议。
DNS:域名服务器协议。<端口号53>
POP3:它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。<端口号110>
功能:负责实现一切与应用程序相关的功能。

传输层:(典型设备:进程和端口) 数据单元:报文段(Segment)

TCP:传输控制协议提供可靠的面向连接的服务,传输数据前须先建立连接,结束后释放。可靠的全双工信道。可靠、有序、无丢失、不重复。
UDP:用户数据报协议发送数据前无需建立连接,不使用拥塞控制,不保证可靠交付,最大努力交付。
功能:负责提供可靠的传输服务。

网络层:(典型设备:路由器,防火墙,多层交换机) 数据单元:数据包(Packet)

IP:网络之间互连的协议 。
ARP:即地址解析协议,实现通过IP 地址得知其物理地址。
RARP:反向地址转换协议允许局域 网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP地址。
ICMP:Internet 控制报文协议。它是TCP/IP 协议族的一个子协议,用于在IP 主机、路由器之间传递控制消息。
IGMP:Internet 组管理协议,是因特 网协议家族中的一个组播协议,用于 IP:主机向任一个直接相邻的路由器报 告他们的组成员情况。
功能:负责网络间的寻址数据传输。

  • 在数据报操作方式中,每个数据报自身携带有足够的信息,它的传送是被单独处理的。
  • 整个数据报传送过程中,不需要建立虚电路,因为是无连接网络服务,所以不需要建立虚电路。
  • 各数据报不能保证按顺序到达目的节点,有些还可能会丢失。
  • 网络节点为每个数据报作路由选择。

数据链路层:(典型设备:网卡、网桥、交换机) 数据单元:帧(Frame)

PPP:点对点协议面向字节,由三部分组成:一个将IP 数据报封装到串行链路的方法;一个用于建立、配置和测试数据链路连接的链路控制协议。
CSMA/CD:载波监听多点接入/碰撞检测协议。
ARQ:自动重传请求协议。
功能:负责实际数据的传输。

物理层(典型设备:中继器,集线器,网线,HUB) 数据单元:比特(Bit)

解决跨域

CORS

服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。如果浏览器检测到相应的设置,就可以允许Ajax进行跨域的访问。

JSONP

原理: 利用script不受同源策略的限制进行跨域,但也因此只能使用get方式,易受到XSS攻击。JSONP是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback(或者一开始就定义一个回调方法)参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。

Nginx

比如说现在客户端的域名为client.com服务器的域名为server.com,客户端向服务器发送 Ajax 请求,当然会跨域了,那这个时候让 Nginx 登场了,通过下面这个配置:

server {
  listen  80;
  server_name  client.com;
  location /api {
    proxy_pass server.com;
  }
}

Nginx 相当于起了一个跳板机,这个跳板机的域名也是client.com,让客户端首先访问 client.com/api,这当然没有跨域,然后 Nginx 服务器作为反向代理,将请求转发给server.com,当响应返回时又将响应给到客户端,这就完成整个跨域请求的过程。

HTTPS是如何确保安全的。

HTTP存在的问题

  • 通信使用明文(不加密),内容可能被窃听。
  • 不验证通信方的身份,可能遭遇伪装。

HTTPS = HTTP + TLS/SSL,SSL的加密主要依靠四种手段

  • 对称加密:采用协商的密钥对数据加密。
  • 非对称密钥:实现身份认证和密钥协商。
  • 摘要算法:验证信息的完整性。
  • 数字签名:身份认证。

HTTP1.0、HTTP1.1、HTTP2.0的区别,看Web前端面试链接。

UDP和TCP的区别

UDP

UDP(User Datagram Protocol),用户数据包协议,是一个简单的面向数据报的通信协议,即对应用层交下来的报文,不合并,不拆分,只是在其上面加上首部后就交给了下面的网络层也就是说无论应用层交给UDP多长的报文,它统统发送,一次发送一个报文,而对接收方,接到后直接去除首部,交给上面的应用层就完成任务。

UDP特点:

  • UDP 不提供复杂的控制机制,利用 IP 提供面向无连接的通信服务。
  • 传输途中出现丢包,UDP 也不负责重发。
  • 当包的到达顺序出现乱序时,UDP没有纠正的功能。
  • 并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。即使是出现网络拥堵的情况,UDP也无法进行流量控制等避免网络拥塞行为。

TCP

TCP(Transmission Control Protocol),传输控制协议,是一种可靠、面向字节流的通信协议,把上面应用层交下来的数据看成无结构的字节流来发送.

TCP特点:

  • TCP充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。
  • 此外,TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
  • 根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信。

区别

  • TCP 是面向连接的协议,建立连接3次握手、断开连接四次挥手,UDP是面向无连接,数据传输前后不需要连接,发送端只负责将数据发送到网络,接收端从消息队列中读取。
  • TCP 提供可靠的服务,传输过程采用流量控制、编号与确认、计时器等手段确保数据无差错,不丢失。UDP 则尽可能传递数据,但不保证传递交付给对方。
  • TCP 面向字节流,将应用层报文看成一串无结构的字节流,分解为多个TCP报文段传输后,在目的站重新装配。UDP协议面向报文,不拆分应用层报文,只保留报文边界,一次发送一个报文,接收方去除报文首部后,原封不动将报文交给上层应用
  • TCP 只能点对点全双工通信。UDP 支持一对一、一对多、多对一和多对多的交互通信。

TCP三次握手

作用:为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠传送做准备。

过程:

  • 第一次握手:客户端给服务端发一个SYN报文,并指明客户端的初始序列号ISN(c),此时客户端处于SYN_SENT状态。
  • 第二次握手:服务器收到客户端的SYN报文之后,会以自己的SYN报文作为应答,为了确认客户端的SYN,将客户端的ISN+1作为ACK的值,此时服务器处于SYN_RCVD的状态。
  • 第三次握手:客户端收到SYN报文之后,会发送一个ACK报文,值为服务器的ISN+1.此时客户端处于ESTABLISHED状态。服务器收到ACK报文之后,也处于ESTABLISHED状态,此时,双方建立起了连接。

TCP四次挥手

过程:

  • 第一次挥手:客户端发送一个FIN报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态,停止发送数据,等待服务的确认。
  • 第二次挥手:服务端收到FIN之后,会发送ACK报文,切把客户端的序列号值+1作为ACK报文的序列号值,表明已经收到客户端的报文了,此时服务端处于COLSE_WAIT状态。
  • 第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发送FIN报文,且指定一个序列号。此时服务器处于LAST_ASK的状态。
  • 第四次挥手:客户端收到FIN之后,一样发送一个ACK报文作为应答,且把服务器的序列号值+1作为自己ACK报文的序列号值,此时客户端处于TIME_WAIT状态。需要过一阵子以确保服务端收到自己的ACK报文之后才会进入CLOSED状态,服务端收到ACK报文之后,就处于关闭连接了,处于CLOSED状态。

四次挥手的原因

服务端在收到客户端断开连接Fin报文后,并不会立即关闭连接,而是先发送一个ACK包先告诉客户端收到并关闭连接的请求,只有当服务器的所有报文发送完毕之后,才发送FIN报文断开连接,因此需要四次挥手。

常用的信道复用技术

FDM频分复用。
TDM时分复用。
CDM码分复用。
WDM波分复用。

私有IP地址范围:

A: 10.0.0.0~10.255.255.255 即10.0.0.0/8
B:172.16.0.0~172.31.255.255即172.16.0.0/12
C:192.168.0.0~192.168.255.255 即192.168.0.0/16

FDDI是局域网技术,环形拓扑;ATM是广域网;DQDB是城域网;Ethernet:总线结构的局域网技术。

网络操作系统的基本任务:

  • 屏蔽 本地资源与网络资源之间的差异
  • 为用户提供基本的网络服务功能
  • 管理网络系统的共享资源
  • 提供网络系统的安全服务

网站攻击方式

ARP欺骗攻击: 分为对路由器ARP表的欺骗和对内网PC的网关欺骗。 第一种ARP欺骗的原理是——截获网关数据。 第二种ARP欺骗的原理是— —伪造网关。
重放攻击:重放攻击(Replay Attacks)又称重播攻击、回放攻击或新鲜性攻击(FreshnessAttacks)是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。
暴力攻击:暴力破解攻击是指攻击者通过系统地组合所有可能性(例如登录时用到的账户名、密码),尝试所有的可能性破解用户的账户名、密码等敏感信息。攻击者会经常使用自动化脚本组合出正确的用户名和密码。
DNS欺骗攻击:DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。 如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址。

GET请求和POST请求的区别

  • 在浏览器进行回退操作时,get请求是无害的,而post请求则会重新请求一次。
  • get请求参数是连接在url后面的,而post请求参数是存放在requestbody内的。
  • get请求因为浏览器对url长度有限制(不同浏览器长度限制不一样)对传参数量有限制,而post请求因为参数存放在requestbody内所以参数数量没有限制(事实上get请求也能在requestbody内携带参数,只不过不符合规定,有的浏览器能够获取到数据,而有的不能)。
  • 因为get请求参数暴露在url上,所以安全方面post比get更加安全。
  • get请求参数会保存在浏览器历史记录内,post请求并不会。
  • get请求只能进行url编码,而post请求可以支持多种编码方式。
  • get请求产生1个tcp数据包,post请求产生2个tcp数据包(火狐浏览器只发生一个)
  • 浏览器在发送get请求时会将header和data一起发送给服务器,服务器返回200状态码,而在发送post请求时,会先将header发送给服务器,服务器返回100,之后再将data发送给服务器,服务器返回200 OK。

请求get的param和post的data这两个的区别

Get的请求参数都是放在param里面的,在浏览器的url中是能够看见的;Post的请求参数可以放在body的data里面,也能放在param里面,放在body的data的请求参数是不可见的,放在param里是可见的。

JavaScript本地存储的方式有哪些?区别及应用场景?

存储方式

cookie
sessionStorage
localStorage
indexedDB

cookie

  • Cookie(小型数据,只有4K左右),为了辨明用户身份而存储在用户本地终端上的数据。是为了解决HTTP无状态导致的问题。
  • cookie在每次请求中都会被发送,如果不使用HTTPS并对其加密,其保存的信息很容易被盗取,导致安全风险。
  • Expires,Nax-Age,Domain(主机名),Path(URL路径),标记为Secure的cookie只应通过被HTTPS协议加密过的请求发送个服务端。

localStorage

特点

  • 生命周期:持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。
  • 存储的信息在同一域中是共享的。
  • 当本页操作(新增、修改、删除)了localStorage的时候,本页面不会触发storage事件,但是别的页面会触发storage事件。
  • 大小:5M(跟浏览器的厂商有关系)。
  • localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
  • 受同源策略的限制。
    缺点
  • 无法像Cookie一样设置过期时间。
  • 只能存入字符串,无法直接存对象。

sessionStorage

sessionStorage和 localStorage使用方法基本一致,唯一不同的是生命周期,一旦页面(会话)关闭,sessionStorage 将会删除数据。

indexDBS是一种低级API,用于客户端存储大量结构化数据,高性能,支持储存JS的对象,是个正经的数据库。但是操作非常繁琐。

三者的区别

  • 存储大小:cookie数据大小不能超过4K,sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。
  • 有效时间:localStorage存储持久数据,浏览器关闭后数据不丢失除非主动删除数据; sessionStorage数据在当前浏览器窗口关闭后自动删除;cookie设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
  • 数据与服务器之间的交互方式,cookie的数据会自动的传递到服务器,服务器端也可以写cookie到客户端; sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

Token(令牌)

Acess Token

  • 访问资源接口(API)时所需要的资源凭证。
  • 简单token的组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token 的前几位以哈希算法压缩成的一定长度的十六进制字符串)
  • 特点:服务端无状态变化、可扩展性好;支持移动端设备;支持跨程序调用。
  • token的身份验证流程:


    1、客户端使用用户名跟密码请求登录。
    2、服务端收到请求,去验证用户名与密码。
    3、验证成功后,服务端会签发一个 token 并把这个 token 发送给客户端。
    4、客户端收到 token以后,会把它存储起来,比如放在 cookie 里或者 localStorage 里。
    5、客户端每次向服务端请求资源的时候需要带着服务端签发的 token。(需要把token放到HTTP的Header里)
    6、服务端收到请求,然后去验证客户端请求里面带着的 token ,如果验证成功,就向客户端返回请求的数据。
  • 基于 token的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用解析 token 的计算时间换取 session的存储空间,从而减轻服务器的压力,减少频繁的查询数据库。

Refresh Token

  • refresh token 是专用于刷新 access token 的 token。
  • Access Token 的有效期比较短,当 Acesss Token 由于过期而失效时,使用 Refresh Token 就可以获取到新的 Token,如果 Refresh Token 也失效了,用户就只能重新登录了。
  • Refresh Token 及过期时间是存储在服务器的数据库中,只有在申请新的 Acesss Token 时才会验证,不会对业务接口响应时间造成影响,也不需要向 Session 一样一直保持在内存中以应对大量的请求。

JWT鉴权机制

JWT认证流程

  • 用户输入用户名/密码登录,服务端认证成功后,会返回给客户端一个 JWT。
  • 客户端将 token 保存到本地(通常使用 localstorage,也可以使用 cookie)
  • 当用户希望访问一个受保护的路由或者资源的时候,需要请求头的 Authorization 字段中使用Bearer 模式添加 JWT,其内容看起来是下面这样
Authorization: Bearer <token>(注意中间有个空格)
  • 服务端的保护路由将会检查请求头 Authorization 中的 JWT 信息,如果合法,则允许用户的行为
  • 因为 JWT 是自包含的(内部包含了一些会话信息),因此减少了需要查询数据库的需要。
  • 因为用户的状态不再存储在服务端的内存中,所以这是一种无状态的认证机制。

Token和JWT的区别

相同

  • 都可以记录用户的信息
  • 都是使服务端无状态化
  • 都是只有验证成功后,客户端才能访问服务端上受保护的资源

区别

  • Token:服务端验证客户端发送过来的 Token 时,还需要查询数据库获取用户信息,然后验证 Token 是否有效。
  • JWT: 将 Token 和 Payload 加密后存储于客户端,服务端只需要使用密钥解密进行校验(校验也是 JWT 自己实现的)即可,不需要查询或者减少查询数据库,因为 JWT 自包含了用户信息和加密的数据。
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值