月黑雁飞高,计网全知道——精选22道计网面试题目

计算机网络知识

一、HTTP协议版本

  • http 0.9
    • 只有一个GET命令,服务器只能回应HTML格式的字符串
  • http 1.0
    • 引入了POST和http数据头部
    • 每一个TCP请求只能发送一个请求,发送数据完毕后,链接就关闭
    • 头信息是ASCII码,后面数据可为任何形式,服务器回应时会告诉客户端,数据是什么格式,即Content-Type字段的做用
  • http 1.1
    • 新增方法PUT、PATCH、OPTIONS、DELETE
    • 引入了持久链接,即TCP链接默认不关闭,能够被多个请求复用。
    • 同一个TCP链接中,全部数据通讯都是依次进行,容易形成队头阻塞
  • http 2.0
    • 头信息和数据体都是二进制,称为头信息帧和数据帧
    • 复用TCP链接,在同一链接中,客户端和浏览器均可以同时发送多个请求或者回应,且不用按照顺序一一对应,避免了“队头堵塞”,此时双向的实时通讯称为多工
    • 引入头信息压缩机制;客户端和服务器同时维护一张头信息表,全部字段都会存入这个表生成一个索引号,不发送一样字段只发送索引号,提升速度。
    • 容许服务器未经请求、主动向客户端发送资源,即服务器推送

http1.0和http1.1的区别css

  • 长链接:http1.1支持长链接和请求的流水线处理
  • 缓存处理:http1.1引入更多缓存控制策略
  • 带宽优化和网络链接使用
  • 错误通知的管理
  • Host头处理

二、HTTP的几种请求方法用途

  • GET:发送一个请求来获取服务器上的某一些资源
  • POST:向URL指定的资源提交数据或附加新的数据,没有指定资源在服务器的位置
  • PUT:能够向服务器提交数据,并指定了资源在服务器的位置
  • HEAD:请求页面的首部
  • DELETE:删除服务器上的某西苑
  • OPTIONS:用于获取当前URL所支持的方法,请求成功后会在Allow的头包含相似GET、POST等信息
  • TARCE:用于激发一个远程的应用层的请求消息回路
  • CONNECT:把请求链接转到TCP/TP通道

GET和POST的区别前端

  • GET用于信息获取,使用URL传递参数,发送信息的数量有限
  • POST是用于修改服务器上的资源

HTTP协议的主要特色java

  • 简单快速
  • 灵活可扩展
  • 无链接
  • 可靠传输

HTTP缺点web

  • 无状态
  • 明文传输
  • 队头阻塞

2.1 HTTPS

​ HTTP协议是承载与TCP协议上的,在HTTP和TCP之间添加一个安全协议,SSL或者TSL,就是HTTPS数据库

2.2 HTTP报文的组成部分

2.2.1 请求报文
  • 请求行
    • 请求方法
    • 请求URL
    • HTTP协议以及版本
  • 请求头
    • 一堆键值对
  • 空行
    • 代表后面的内容是请求体
  • 请求体
    • 请求数据
2.2.2 响应报文
  • 状态行
    • HTTP协议和版本
    • 状态码
    • 状态描述
  • 响应头
  • 空行
  • 响应体

2.3 Https和Http对比

  • 传输方式api

    • http传输方式:明文传输、网站或相关服务与用户之间的数据交互无加密,容易被监听,篡改
    • https传输方式:在HTTP加入了SSL层,用户数据传输加密
  • 身份认证跨域

    • http:无身份认证,用户没法经过http辨认出网站的真实身份
    • https:通过CA多重认证,包含域名管理权限认证等
  • 成本浏览器

    • http:无任何使用成本,全部网站默认都是http模式
    • https:须要成本,须要申请SSL整数来实现https
  • 链接端口缓存

    • http:80
    • https:443

三、从浏览器输入url到显示页面的步骤

  • 浏览器查找域名的IP地址:
    • 查找浏览器缓存:DNS记录
    • 查找系统缓存:hosts文件
    • 查找路由器缓存:DNS缓存
    • 递归查询
    • 迭代查询
  • 浏览器与目标服务器创建TCP链接
    • 经过DNS解析找到IP地址创建TCP链接
    • 三次握手
  • 浏览器经过http协议发送请求
    • 浏览器向主机发送一个HTTP—GET方法报文请求。
  • 某些服务器会作永久重定向响应
    • 重定向的做用:为了负载均衡或者导入流量,提升SEO排名,利用一个前端服务器接受请求,而后负载到不一样的主机上,能够大大提升站点的业务并发处理能力;重定向也可将多个域名的访问,集中到一个站点;
  • 浏览器跟踪重定向地址
  • 服务器处理请求
  • 服务器发送一个HTML响应
  • 释放TCP链接
  • 浏览器显示页面
  • 浏览器发送获取嵌入在HTML中的其余内容

四、三次握手与四次挥手

三次握手:SYN、ACK

  • 创建链接时,客户端发送SYN包到服务器,并进去SYN_SENT状态,等待服务器确认,其中SYN就是同步序列编号安全

  • 服务器收到SYN包,必须确认客户的SYN包,同时本身特发送一个SYN包,即SYN+ACK包,此时服务器进入SYN_RECV状态

  • 客户端接收服务器的SYN+ACK包,向服务器发送确认包ACK,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手

    第三次握手:防止失效的链接请求报文段被服务器端接收,从而致使错误

四次挥手

  • 主动关闭的一方,发送一个FIN传送数据,用来告诉对方,不会再给你主动发送数据了。此时主动关闭的一方还能够接受数据
  • 被动关闭放收到FIN包,发送ACK给对方,确认序号
  • 被动关闭放 发送一个FIN给关闭方,说不会再给你发送数据了
  • 主动关闭方收到FIN、发送给ACK,用来确认序号

五、web性能优化技术

​ 减小客户端忘了延迟和优化页面渲染性能来提高web性能

  • DNS查询优化
  • 客户端缓存
  • 优化TCP链接
  • 避免重定向
  • 网络边缘的缓存
  • 条件缓存
  • 压缩和代码极简化
  • 图片优化

六、网站性能优化

  • 内容方面:减小HTTP请求(合并文件、CSS精灵)减小DNS查询(DNS缓存,将资源分布到合适的数量的主机名)、减小DOM元素的数量
  • Cookie方面,减小其大小
  • css方面,将样式表放到页面顶部;不使用css表达式;压缩css,css从外部引入
  • 优化代码以及图片

七、Http状态码以及含义

  • 1XX 为信息状态码
    • 100 为继续,表示确认,成功返回具体参数信息
  • 2XX 成功
    • 200 正常返回信息
    • 201表示请求成功而且服务器建立了新的资源
    • 202 表示服务器已接收请求但还没有处理
  • 3XX 重定向
    • 301 永久重定向
    • 302 临时性重定向
    • 303 临时重定向,且老是使用GET请求新的URl
    • 304 自从上次请求后,请求的页面未修改过
  • 4XX 客户端错误
    • 404 未找到
    • 401 请求未受权
    • 403 禁止访问
  • 5XX 服务器错误
    • 500 常见的服务器错误
    • 503 服务器暂时没法处理请求,多是过载或维护

八、cookies、sessionStorage和localStorage的区别

  • cookie是网站用来标识用户省份而存储在用户本地终端上的数据
  • cookie的数据始终在同源的http请求中携带,即便是不须要的状况,因此其会在浏览器和服务器中间来回传递
  • sessionStorage和localStorage不会自动把数据发送给服务器,仅仅在本地保存
  • 存储大小
    • cookie的数据大小不能超过4K,sessionStorage和localStorage能够达到5M或更多
  • 有限期时间
    • localStorage存储持久数据,浏览器关闭后数据不会丢失,除非主动删除
    • sessionStorage数据在当前浏览器窗口关闭后自动删除
    • 设置过cookie过时时间以前都有效,就算关闭窗口或者浏览器关闭

九、多域名存储网络资源的好处

  • CDN缓存更加方便
  • 突破浏览器并发限制
  • 节约cookie带宽
  • 节约主域名的链接数,优化页面响应速度
  • 防止没必要要的安全问题

十、浏览器生成http请求消息

十一、OSI模型

  • 物理层::考虑的是怎么在传输媒体上传输数据比特流,尽量的屏蔽传输媒体和通讯手段的差别。(中继器。)
  • 数据链路层:互联设备之间传送和识别数据帧(网桥)
  • 网络层:地址管理与路由选择(路由器)
  • 传输层:管理两个节点之间的数据传输(TCP、UDP)
  • 会话层:通讯管理、负责奖励和断开通讯链接
  • 表示层:设备固有数据格式和网络标准数据格式的转换
  • 应用层:对特定应用的协议(HTTP、FTP)

十二、TCP/IP模型

  • 应用层:决定了想用户提供应用服务时通讯的活动(HTTP、FTP)
  • 传输层:对应上层应用层,提供处于网络链接中两台计算机之间的数据传输(TCP、UDP)
  • 网络层:用来处理网络上流动的数据包(因特网协议IP)
  • 链路层:用来处理链接网络的硬件部分(以太网、WI-FI)

1三、UDP

  • UDP面向报文的协议,不会对报文进行任何拆分和拼接操做,头部只有8字节
  • 是无链接的、不可靠的、没有拥塞控制、会出现丢包

1四、TCP

  • 是基于链接的协议、头部20字节
  • 全双工,双向传输
  • j基于字节流、不限制数据大小,打包成报文段,保证有序接收、重复报文自动丢弃
  • 有拥塞控制,用来处理双方处理能力的不匹配
  • 拥有可靠的传输服务,保证可达,丢包时经过重发机制实现可靠性
  • Sequence number 序号保证TCP传输的报文是有序的
  • Window Size 表示窗口大小,还能接受多少字节的数据
  • Acknowledgement Number 表示上一个序号的数据以及接受到,接收端但愿接受的下一个字节编号是多少

14.1 标识符

  • ACK=1 表示确认号字段有效
  • SYN=1 ACK=0 表示当前报文段是一个链接请求报文
  • SYN=1 ACK=1 表示当前报文段是一个统一创建链接的应答报文
  • FIN=1 表示此报文段是一个释放链接的请求报文
  • URG 紧急值有效
  • RST 重置链接
  • PSH 接收方应该尽快将这个报文交给应用层

14.2 TCP拥塞控制

拥塞窗口

慢启动阈值

1五、安全问题CSRF和XSS

15.1 CSRF:跨站请求伪造

  • CSRF攻击:攻击者盗用了你的身份,以你的明细发送恶意请求

  • CSRF原理:登陆受信任的网站A,在本地生成cookie,在不登出A的状况下,访问危险网站B

  • CSRF防护方式

    • Token验证(使用最多)
      • 服务器发送给客户端一个token
      • 客户端提交的表单中带有这个token
      • 若是这个token不合法,那么服务器就拒绝这个请求
    • 隐藏令牌
      • 把token隐藏在http的head头中
    • Referer验证
      • Referer指的是页面请求来源,只接受本站的请求,服务器才作响应,若是不是就拦截

15.2 XSS:跨域脚本攻击

​ xss是一种发生在web前端的漏洞,恶意攻击者王web页面里插入恶意的script代码,在浏览器中运行scrip代码。达到恶意攻击用户的目的。

  • xss攻击:须要向web页面注入恶意代码、这些恶意代码被浏览器成功执行
  • xss攻击方式
    • 反射型:发送请求时,xss代码出如今url中,做为输入提交到服务器端,服务器端解析后相应,XSS代码随着相应一块儿传给浏览器,最后在浏览器解析执行XSS代码。
    • 存储型:提交的代码会存储在服务器端(数据库、内存、文件系统)下次请求目标页面时不用再提交xss代码

15.3 二者的区别

  • CSRF须要先登陆,获取COOKIE,而后利用网站自己的漏洞去请求网站的api
  • XSS不须要登陆,直接向网站注入JS代码,篡改网站的内容

1六、cookie

​ cookie是网站为了辨别用户身份,进行session跟踪而存储在用户本地终端的数据(一般通过加密),由用户客户端计算机暂时或永久保存的信息

  • 存储在用户本地终端上的数据

  • 用来辨别用户身份

  • 保存在用户本地终端

    cookie的做用就是解决如何记录客户端的用户信息

16.1 cookie原理

​ 浏览器第一次请求服务器,服务器响应请求中携带cookie,给浏览器,后续浏览器再携带cookie给服务器,服务器根据cookie判断用户,也能够修改cookie的内容

16.2 cookie的属性

​ Name、Value、Domain、Path、Expires/Max-Age、Size、HttpOnly、Secure、SameSite

  • HttpOnly

    这个属性设置为true时,就不能经过js脚本获取cookie的值,可以有效的防止xss的攻击

  • Secure

    标记为Secure的cookie只能被https协议加密过的请求发送给服务端。单也没法保证其安全保障

  • SameSite

    Cookie运行服务器要求某个cookie在跨站请求时不会被发送,从而能够阻止扩展请求伪造攻击(CSRF)

    • None:浏览器再同站请求、跨站请求下继续发送cookies,不区分大小写(全部三方请求都会携带cookie)
    • Strict:浏览器只在访问相同站点时发送cookie(全部第三方的链接都不会携带cookie)
    • Lax:Same-site cookie将会为一些跨站请求保留,如图片加载或frames的调用,单只有当用户才外部站点导航到URL时才会发送(只有同步且是get请求才可携带cookie)

1七、token

​ token做为客户端的一个令牌,在第一个登录的时候获取到,之后就不须要频繁访问数据库,查询用户密码。

  • 解决的问题:
    • Token彻底由应用管理,因此它能够避开同源策略
    • Token能够避免CSRF攻击
    • Token能够是无状态的,能够在多个服务器间贡献
  • tocken的有点
    • 无状态,可扩展
    • 安全性
    • 多平台跨域
    • 基于标准

1八、cookie,session,token

  • cookie:存放在客户端,用来保存客户端会话信息,安全性不能完成保证
  • session:放在服务器端,保存认证用户信息
  • token:是一种认证方式(是“令牌”的意思,主要是用于身份的验证方式)

1九、URI

​ URL统一资源定位符,URI,统一资源标识符。URI用来区分网络上的不一样资源

​ URI包含了URN和URL

20、三大交换方式:

  • 电话交换:创建专用的物理链路,始终占用;简单粗暴,资源利用率不高,
  • 报文交换:就是把整个报文完整的发送到链路中,在某个节点存储下来以后再发送到下一个节点。
  • 分组交换:将一个长报文先分割为若干个较短的分组,而后把这些分组(携带源、目的地址和编号信息)逐个地发送出去。

2一、时延

时延=发送时延+传播时延+处理时延+排队时延。

  • 发送时延(传输时延):从开始发送数据帧,到数据帧发送完毕所需的所有时间。
  • 传播时延:发送端开始发送数据到接收端收到数据所须要的所有时间。(电磁波在信通中的时间)

2二、WEB页面请求过程:

  • 向DNS服务器发送DNS查询报文来解析域名。
  • 开始进行HTTP会话,须要先创建TCP链接。
  • 在运输层的传输过程当中,HTTP报文被封装进TCP中。HTTP请求报文使用端口号80,由于服务器监听的是80端口。链接创建之后,服务器会随机分配一个端口号给特定的客户端,之后的TCO传输都是使用这个端口号。
  • 在网络层的传输过程当中,TCP报文段会被封装进IP分组中,IP分组通过路由选择,最后到底目的地。
  • 在链路层,IP分组会被封装进MAC帧中,IP地址解析成MAC地址须要使用ARP。
  • 客户端发送HTTP请求报文,请求获取页面。
  • 服务器发送HTTP相应的报文,客户端从而获取该页面。
  • 浏览器获得页面内容之后,解析并渲染,向用户展现页面。

最后

  • 若是以为看完有收获,但愿能给我点个赞,这将会是我更新的最大动力,感谢各位的支持
  • 欢迎各位关注个人公众号【java冢狐】,专一于java和计算机基础知识,保证让你看完有所收获,不信你打我
  • 若是看完有不一样的意见或者建议,欢迎多多评论一块儿交流。感谢各位的支持以及厚爱。