IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 前端面试:网络基础一揽子问题 -> 正文阅读

[网络协议]前端面试:网络基础一揽子问题

OSI七层模型和TCP/IP五层模型

OSI七层模型

在这里插入图片描述

TCP/IP协议体系结构

在这里插入图片描述

1. 应用层

任务: 通过应用进程间的交互来完成特定的网络应用;
数据单元:报文;
协议:定义的是应用进程间通信和交互的规则,如域名协议DNS、支持万维网应用的HTTP协议、支持电子邮件的SMTP协议等等;

2. 运输层

任务:负责向两台主机中进程之间的通信提供通用的数据传输服务;
协议TCPUDP

TCP

传输控制协议TCP:提供面向连接的、可靠的数据传输服务;
数据单元:报文段;

UDP

用户数据报协议UDP:提供无连接的、尽最大努力的数据传输服务;
数据单元:用户数据报;

3. 网络层

任务:负责为分组交换网上的不同主机提供通信服务;
两种服务虚电路数据报服务
协议:无连接的网际协议IP和多种路由选择协议;
可靠性:不提供服务质量的承诺;
数据单元:将运输层产生的报文段或用户数据报封装成分组或包,也称IP数据报或简称数据报;

虚电路

面向连接的,可靠通信由网络质量保证;

数据报服务(TCP/IP体系)

网络层向上提供简单灵活、无连接的、尽最大可能交付的数据报(分组)服务;

4. 数据链路层

任务:两台主机之间的数据传输都是在链路上进行的,需要专门的链路层协议。主要解决了三个问题——封装成帧、透明传输、差错检测;
数据单元:帧;
可靠性:差错检测,如果发现有差错,就简单的丢弃以免继续在网络中传送白白浪费资源。如果需要改错,就需要采用可靠传输协议来纠错。过去OSI的观点是将其设计为可靠的,增加了帧编号、确认和重传机制。现在一般将可靠性交由上层TCP去做,数据链路层有错帧,立刻丢包,上层请求重传。
两种信道传输方式:点对点信道()、广播信道(局域网使用的技术)
点对点协议点对点协议PPP
互联网用户连接某个ISP接入互联网。此协议为用户计算机和ISP通信的协议。
包括三部分:

  1. 一个将IP数据报封装到串行链路的方法;
  2. 链路控制协议LCP
  3. 网络控制协议NCP

广播信道协议CSMA/CD协议(以太网技术)
包括:
多点接入载波监听碰撞检测

5. 物理层

任务:尽量屏蔽硬件差异带来的影响;
单位:bit流传输

TCP UDP的区别

TCPUDP都是运输层的协议。

区别UDPTCP
是否连接无连接面向连接
可靠性不可靠可靠,使用流量控制和拥塞控制
连接个数一对一、一对多、多对一、多对多一对一
传输方式面向报文面向字节流
首部开销仅八字节最小20字节,最大60字节
适用场景实时应用,视频传输可靠传输的应用,比如文件传输,软件下载

三次握手和四次挥手

TCP的连接建立

基础概念SYN首部同步位,SYN同步报文段不能携带数据但是会消耗一个序号;
ACK首部确认位,ack为确认序号,seq为数据报文段序号;确实报文段不携带数据不消耗序号。

在这里插入图片描述

1. 客户端发送同步报文段,SYN=1,同时发送自己的序号seq=x,进入SYN-SEND(同步已发送)状态;
2. 服务端收到请求连接信号,如同意连接,发送SYN=1且ACK=1的报文段,并发送自己的序号seq=y,且发送对于客户端序号的确认序号ack=x+1,进入SYN-RCVD(同步收到)状态;
3. 客户端收到确认信号后,发送对确认信号确认的信号。发送确认报文段ACK=1,自己的序号seq=x+1,确认序号ack=y+1;之后进入ESTABLISHED(已建立连接)状态,服务端收到后也进入ESTABLISHED(已建立连接)状态。

TCP的连接释放

基础概念FIN首部的终止控制符;

在这里插入图片描述

1. 客户端发连接释放报文段,FIN=1,其序号seq=u;进入FIN-WAIT-1(终止等待1)状态;
2. 服务器端发出确认报文段,ACK=1,序号seq=v,确认号ack=u+1,进入CLOSE-WAIT(关闭等待)状态; 客户端接收到服务端的确认后,进入FIN-WAIT-2(终止等待2)状态;此时TCP连接处于半关闭状态,A已经没有数据发送了,但是服务端发送数据,A还是需要接收。
3. 服务器数据发送结束后,发送连接释放和确认报文段,FIN=1且ACK=1,发送自己这时的seq=w,重发上次的确认号ack=u+1。服务端进入LAST-ACK(最后确认)状态;
4. 客户端接收到后,发确认报文段ACK=1,确认号ack=w+1,自己的序号seq=u+1。此时进入TIME-WAIT(时间等待)状态,经过时间等待计时器设置的时间2MSL,关闭。服务端接收到确认后,进入关闭状态。

HTTPHTTPS

区别

都是www服务器和浏览器之间的超文本传输协议

HTTPHTTPS
http://开头https://开头
不安全安全
标准端口:80标准端口:443
OSI模型中工作于应用层OSI模型中安全传输机制工作于传输层
无法加密加密传输
无需证书需要CA机构颁发的SSL证书

HTTPS验证流程

  1. 客户端请求服务器获取证书公钥
  2. 客户端(SSL/TLS)解析证书(无效会弹出警告)
  3. 生成随机值
  4. 公钥加密随机值生成密钥
  5. 客户端将密钥发送给服务器
  6. 服务端用私钥解密密钥得到随机值
  7. 将信息和随机值混合在一起进行对称加密
  8. 将加密的内容发送给客户端
  9. 客户端用密钥解密信息

HTTP特性以及状态码

状态码特性
200响应成功
301永久重定向
302临时重定向
304资源缓存
403服务器禁止访问
404服务器资源未找到
500服务器内部错误
504服务器繁忙
1xxInformational(信息状态码) 接受请求正在处理
2xxSuccess(成功状态码) 请求正常处理完毕
3xxRedirection(重定向状态码) 需要附加操作已完成请求
4xxClient Error(客户端错误状态码) 服务器无法处理请求
5xxServer Error(服务器错误状态码) 服务器处理请求出错

HTTP1.0、HTTP1.1、HTTP2.0的区别

  1. 1.1和1相比较,1.1可以一次传输多个文件;
  2. http1.x解析基于文本,http2.0采用二进制格式,新增特性 多路复用、header压缩、服务端推送(静态html资源);

HTTP缓存机制

浏览器缓存的分类

主要分为两类:协商缓存强缓存,也可以称为缓存协商和彻底缓存
浏览器在第一次缓存请求成功后再次请求时:

  1. 首先会获取该资源缓存的header信息,根据其中的 expirescache-control来判断是否命中强缓存,如果命中,直接从缓存中获取资源,包括header信息,不会和服务器进行通信;
  2. 没有命中强缓存,则会发送请求至服务器,该请求会携带有关缓存的header字段信息:Last-Modified/IF-Modified-SinceEtag/IF-None-Match。由服务器根据信息判断是否命中协商缓存,若命中则服务器返回新的响应header更新之前的信息,但不会返回资源内容,它会告诉浏览器可以直接从缓存获取;
  3. 若还是没有命中则返回最新的资源内容。

在这里插入图片描述

强缓存

Expires是http1.0时的规范,它的值为一个绝对时间的GMT格式时间字符串,代表资源的过期时间,在这个时间之前极为命中,有一个缺点就是失效时间是一个绝对时间,服务器和客户端时间偏差较大时,会导致缓存混乱。
Cache-Control是http1.1出现的header信息,主要是利用该字段的max-age来进行判断,它就是一个相对时间。
两者都可以在服务端配置,Cache-Control优先级更高。

协商缓存

协商缓存就是由服务器来决定缓存资源是否可用。主要涉及到以下header字段。第一次请求的响应头会带上某个字段:Last-Modified或者Etag,后续请求则会对应的带上If-Modified-Since或者 If-None-Match,若响应头没有上面的两字段,则请求头也不会有相应的字段。

  1. Last-ModifiedIf-Modefied-Since都是GMT格式的时间字符串;
  2. EtagIf-None-Match这两个值是由服务器生成的每个资源的唯一表示字符串,只要资源变化值就该改变。

Last-ModifiedETag是可以一起使用的,服务器会优先验证ETag,一致的情况下,才会继续比对Last-Modified,最后才决定是否返回304

既然有了Last-Modified为什么还要Etag:两者都是一个目的,和服务器协商缓存文件为最新。前者是用的最后修改时间和服务器文件最后修改时间对比来做的;后者是用文件内容的标识符做对比来判断的;
修改时间带来的问题就是,文件可能短时间内重复修改,但是内容最终未变化,使用修改时间的话就会做多次无用的GET,Etag的话就避免了这个问题!

输入URL到浏览器页面呈现的全部过程

网络:构建请求->查找强缓存->DNS解析->三次握手建立TCP连接
浏览器解析:解析HTML构建DOM树->解析CSS构建CSS树、样式计算->生成布局树(Layout tree)
浏览器渲染:建立图层树(Layer Tree)->生成绘制列表->生成图块并栅格化->显示器显示内容(浏览器会将各层的信息发送至GPU,GPU进行合成并显示)->断开连接(TCP四次挥手)

GETPOST的区别

GETPOST
浏览器回退不会再次请求再次请求
浏览器主动缓存不会,需要手动设置
浏览器历史记录会完整保存不会保存
URL中的参数长度是有限制的没有限制
通过URL传送Request body
参数暴露在地址栏,不安全报文内部更安全
一般用于查询信息一般用于提交信息
产生一个TCP数据包产生两个TCP数据包

xsscsrfddos攻击原理及避免方式

XSS(跨站脚本攻击)

一种代码注入攻击。攻击者在目标网站上注入恶意代码,当被攻击者登录网站时就会执行这些恶意脚本,可以用来读取用户的 cookiesessiontokens或其他敏感信息。

避免方式: 
	1. url参数使用encodeURIComponent方法转义;
	2. 将html中的特殊符号进行转义;
	3. 尽量不使用InnerHtml插入HTML内容用textContent或innerText来替代;
	4. jquery方面使用text(),而不使用html();

CSRF(跨站请求伪造)

攻击者由被攻击网站进入第三方网站,向被攻击网站发送跨站请求。利用在被攻击网站已经获取的 用户凭证,绕过后台的用户验证,达到冒充用户对被攻击网站进行某种操作的目的。

避免方式:
	1. 添加验证码;
	2. 使用Token进行用户鉴别;

DDOS(分布式拒绝服务)

DDOS又叫分布式拒绝服务,其原理就是利用大量的请求造成资源过载,导致服务不可用。

避免方式:
	1. 限制单IP请求频率;
	2. 防火墙等防护设置禁止ICMP包等;
	3. 检查特权端口的开放;
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-08 11:53:51  更:2021-08-08 11:55:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:53:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码