42.什么是cookie呢

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

  1. 存储在用户本地终端上的数据
  2. 用来辨别用户身份
  3. 保存在用户本地终端

cookie是一些数据,存储在你电脑上的文本文件中,当web服务器向浏览器发送web页面时,在连接关闭后,服务端不会记录用户的信息,cookie的作用就是解决如何记录客户端的用户信息。

场景:当用户访问web页面,用户信息记录在cookie中,当用户下一次访问页面后,可以在cookie中读取用户访问记录。

cookie是以键值对形式存储的,当浏览器从服务器上请求web页面,该页面的cookie会被添加到请求中,服务端通过这种方式用来获取用户信息。

可以使用JavaScript来创建,读取,修改,删除cookie

使用document.cookie属性来创建,读取以及删除cookie

创建:

document.cookie = "username = dadaqianduan";

给cookie添加一个过期时间:

document.cookie = "username = dadaqianduan; expires=xxxxxx";

默认情况下,cookie属于当前页面:

document.cookie = "username = dadaqianduan; expires= ; path=/";

读取cookie

var x = document.cookie;

修改cookie

document.cookie = "username = dada; expires=xxx; path=/";

删除cookie, 把设置时间的expires 参数改为以前的时间即可。

document.cookie = "username = ; expires= xxx";

为什么会有cookie呢?因为http请求时无协议的,http1.x,无状态协议,客户端同一个请求发送多次,服务端并不能识别是不是同一个客户端发送,为了解决无状态,就有了cookie。

cookies是服务器暂存放在你的电脑里的资料,以.txt格式的文本文件,好让服务器用来辨认你的计算机,当你在浏览网站时,web服务器会发送一个小小的资料放在你的计算机上。

当你下一次访问同一个网站,web浏览器会先看看有没有它上次留下来的cookies资料,有的话就输出特定的内容给你。

计算机网络的基础知识问题:计算机网络的知识点(1)

计算机网络的基础知识问题:计算机网络的知识点(2)

cookie原理

浏览器第一次请求服务器,服务器响应请求中携带cookie,给浏览器,浏览器第二次请求,携带cookie,给服务器,服务器根据cookie辨别用户,也可以修改cookie内容。

计算机网络的基础知识问题:计算机网络的知识点(3)

计算机网络的基础知识问题:计算机网络的知识点(4)

计算机网络的基础知识问题:计算机网络的知识点(5)

计算机网络的基础知识问题:计算机网络的知识点(6)

domain时.baidu.com的cookie绑定到了域名商。跨域的域名不能写入在cookies文件里

计算机网络的基础知识问题:计算机网络的知识点(7)

cookie的属性有哪些

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

掌握面试中的HttpOnly,这个属性设置为true,就不能通过js脚本获取cookie的指,能有效防止xss的攻击。

Cookie中的HttpOnly和Secure中:

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

如果cookie中设置了HttpOnly属性,通过js脚本将无法读取到cookie信息,有效防止xss的攻击,窃取cookie内容,增加了cookie的安全性,但是重要信息还是不要存储在cookie中。

因为xss为跨站脚本攻击,是web程序常见的漏洞,属于被动式且用于客户端的攻击方式

Set-Cookie: id=a3fWa; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly

SameSite

SameSite Cookie允许服务器要求某个cookie在跨站请求时不会被发送,从而可以阻止跨站请求伪造攻击(CSRF)。

示例:

Set-Cookie: key=value; SameSite=Strict

SameSite有三个值:

None: 浏览器在同站请求,跨站请求下继续发送cookies,不区分大小写。(所有三方的请求都会携带cookie)

Strict: 浏览器将只在访问相同站点时发送cookie。(所有三方的链接都不会携带cookie)

Lax: Same-site cookies 将会为一些跨站子请求保留,如图片加载或者frames的调用,但只有当用户从外部站点导航到URL时才会发送。(只有同步且是get请求才可携带cookie)

在https协议中,才能通过js去设置secure类型的cookie,在http协议的网页中是无法设置secure类型cookie的。默认情况,https协议还是http协议的请求,cookie都会被发送到服务端。

43.什么是token呢?

token的出现,是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示。token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,第一登录时,服务器生成一个token,将此token返回给客户端,客户端带上这个token,无需再次带上用户名和密码了。

token的出现减轻了服务器的压力,减少频繁地数据库查询。

计算机网络的基础知识问题:计算机网络的知识点(8)

token的优点

  • 无状态,可扩展
  • 安全性
  • 多平台跨域
  • 基于标准

计算机网络的基础知识问题:计算机网络的知识点(9)

计算机网络的基础知识问题:计算机网络的知识点(10)

计算机网络的基础知识问题:计算机网络的知识点(11)

计算机网络的基础知识问题:计算机网络的知识点(12)

基于Token的身份验证的过程

浏览器,输入userName, Password,到mysql,校验成功 生成token,将token返回给客户端,当客户端发起请求时,每次访问api都携带token到服务器端,经过过滤器,校验token,校验成功后返回请求数据,校验失败后返回错误码。

44.cookie,session,token

cookie,记录访问过的网站或正在访问的网站,对于HTTP 协议是无状态的,服务器不知道浏览器上一次访问做了什么,也无法对用户会话进行跟踪连接,所以,cookie是由服务器发送到客户端浏览器的一段文本文件,包含了网站访问活动信息。Cookie 存放在客户端,用来保存客户端会话信息;由于存储在客户端,它的安全性不能完全保证。

session表示是c/s架构中服务器和客户端一次会话的过程,用来保存认证用户信息。session是一种HTTP存储机制,提供持久机制。Session存放在服务器端,用户验证客户端信息。由于存储在服务器,安全性有一定的保证。

token是一种认证方式(是“令牌”的意思,主要是用于身份的验证方式。)

45.跨域

计算机网络的基础知识问题:计算机网络的知识点(13)

网页的URL的协议、域名、端口有一个不同,就算是跨域了

跨域:JSONP

计算机网络的基础知识问题:计算机网络的知识点(14)

计算机网络的基础知识问题:计算机网络的知识点(15)

46.思维导图http小结

计算机网络的基础知识问题:计算机网络的知识点(16)

计算机网络的基础知识问题:计算机网络的知识点(17)

计算机网络的基础知识问题:计算机网络的知识点(18)

计算机网络的基础知识问题:计算机网络的知识点(19)

计算机网络的基础知识问题:计算机网络的知识点(20)

计算机网络的基础知识问题:计算机网络的知识点(21)

计算机网络的基础知识问题:计算机网络的知识点(22)

47.http中的字段
  1. accept,数据格式,请求accept,响应,content-type,表示收到的数据格式
  2. accept,压缩方式,请求accept-encoding,响应,content-encoding,采用什么样的压缩方式
  3. accept,支持语言,请求accept-language,响应content-language
  4. accept,字符集,请求accept-charset,响应content-type,指定字符集
  5. accept,范围请求,请求if-range和range,响应accept-anges和content-range
  6. cookie,请求时传递给服务端的cookie信息
  7. set-cookie,响应报文首部设置要传递给客户端的cookie信息
  8. allow,支持什么HTTP方法
  9. last-modified,资源的最后修改时间
  10. expires,设置资源缓存的失败日期
  11. content-language,实体的资源语言
  12. content-encoding,实体的编码格式
  13. content-length,实体主体部分的大小单位是字节
  14. content-range,返回的实体的哪些范围
  15. content-type,哪些类型
  16. accept-ranges,处理的范围请求
  17. age,告诉客户端服务器在多久前创建了响应
  18. vary,代理服务器的缓存信息
  19. location,用于指定重定向后的URI
  20. If-Match,值是资源的唯一标识
  21. User-Agent,将创建请求的浏览器和用户代理名称等信息传递给服务器
  22. Transfer-Encoding,传输报文的主体编码方式
  23. connection,管理持久连接,keep-alive , close
  24. cache-control,控制浏览器的强缓存
48.如果面试问HTTP报文结构是什么,你能回答上来不?

对于 TCP 而言

起始行 头部 空行 实体

  1. 请求报文

GET /home HTTP/1.1

  1. 响应报文

HTTP/1.1 200 OK

计算机网络的基础知识问题:计算机网络的知识点(23)

计算机网络的基础知识问题:计算机网络的知识点(24)

空行是用来分开头部和实体。

49.如果面试问HTTP请求方法有哪些,你能回答上来不?
  1. GET方法,用来获取资源
  2. POST方法,用来提交数据
  3. PUT方法,用来修改数据
  4. DELETE方法,用来删除资源
  5. OPTIONS方法,用来跨域请求
  6. HEAD方法,用来获取资源的元信息
  7. CONNECT方法,用来建立连接,用于代理服务器
50.如果面试问,你对URI是如何理解的,你能回答上来不?

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

URI包含了URN和URL。

URL的结构:

计算机网络的基础知识问题:计算机网络的知识点(25)

协议名,登录主机的用户信息,主机名和端口,请求路径,查询参数,URI上定位资源内的一个锚点。

51.如果面试问,你对HTTP状态码的了解有多少,你能回答上来不?

了解一些特定的HTTP状态码:

计算机网络的基础知识问题:计算机网络的知识点(26)

计算机网络的基础知识问题:计算机网络的知识点(27)

52.如果面试问,说说HTTP特点以及缺点,你能回答上来不?

特点是:

  1. 灵活可扩展
  2. 可靠传输
  3. 无状态等

缺点是:

  1. 无状态
  2. 明文传输
  3. 队头阻塞问题
53.如果面试问,说说你对Accept字段的理解,你能回答上来不?

计算机网络的基础知识问题:计算机网络的知识点(28)

计算机网络的基础知识问题:计算机网络的知识点(29)

  • 数据格式
  • 压缩方式
  • 支持语言
  • 字符集
54.如果面试问,什么是队头阻塞问题,你能回答上来不?

TCP中是报文,HTTP是请求。

对于解决HTTP的队头阻塞问题是:并发连接和域名分片。

55.如果面试问,说说你对HTTP代理的理解,你能回答上来不?

代理服务器功能:1,负载均衡,2,保障安全(利用心跳机制监控服务器,一旦发现故障机就将其踢出集群。),3,缓存代理。

理解代理缓存:

  • 由一个代理服务器下载的页面存储;
  • 一个代理服务器为多个用户提供一条通道;
  • 缓冲的代理允许一个代理服务器减少对同一个网站的同样页面的请求次数
  • 一旦代理服务器的一个用户请求了某个页面,代理服务器就保存该页面以服务于它的其他用户的同样的请求
  • 代理缓存,这种处理减少了用户等待页面显示的时间

计算机网络的基础知识问题:计算机网络的知识点(30)

缓存的作用:

计算机网络的基础知识问题:计算机网络的知识点(31)

代理服务器或客户端本地磁盘内保存的资源副本,利用缓存可减少对源服务器的访问,可以节省通信流量和通信时间。

示例:

Cache-Control: max-age=300;

表示时间间隔,再次请求的时间间隔300s内,就在缓存中获取,否则就在服务器中

Cache-Control:

  • public 表示响应可被任何中间节点缓存
  • private 表示中间节点不允许缓存
  • no-cache 表示不使用Cache-Control的缓存控制方式做前置验证
  • no-store 表示真正的不缓存任何东西
  • max-age 表示当前资源的有效时间

强缓存:浏览器直接从本地存储中获取数据,不与服务器进行交互

协商缓存:浏览器发送请求到服务器,浏览器判断是否可使用本地缓存

学习了解强缓存:

强缓存主要学习expires和cache-control

cache-control该字段:max-age,s-maxage,public,private,no-cache,no-store。

cache-control: public, max-age=3600, s-maxage=3600

  • 表示资源过了多少秒之后变为无效
  • s-maxage 的优先级高于 max-age
  • 在代理服务器中,只有 s-maxage 起作用

public 和 private

  • public 表示该资源可以被所有客户端和代理服务器缓存
  • private 表示该资源仅能客户端缓存

当浏览器去请求某个文件的时候,服务端就在response header里做了缓存的配置:

表现为:respone header 的cache-control

计算机网络的基础知识问题:计算机网络的知识点(32)

计算机网络的基础知识问题:计算机网络的知识点(33)

学习了解✍协商缓存:

response header里面的设置

etag: 'xxxx-xxx last-modified: xx, 24 Dec xxx xxx:xx:xx GMT

计算机网络的基础知识问题:计算机网络的知识点(34)

计算机网络的基础知识问题:计算机网络的知识点(35)

计算机网络的基础知识问题:计算机网络的知识点(36)

56.如果面试问,HTTP/2,你能回答上来不?

计算机网络的基础知识问题:计算机网络的知识点(37)

HTTP/2采用哈夫曼编码来压缩整数和字符串,可以达到50%~90%的高压缩率。

服务器推送

计算机网络的基础知识问题:计算机网络的知识点(38)

计算机网络的基础知识问题:计算机网络的知识点(39)

57.B/S 结构定义

浏览器-服务器结构,B/S结构,客户端不需要安装专门的软件,只需要浏览器即可,浏览器通过web服务器与数据库进行交互,可以方便的在不同平台下工作。

B/S结构简化了客户端的工作,它是随着Internet技术兴起而产生的,对C/S技术的改进,但该结构下服务器端的工作较重,对服务器的性能要求更高。

58.URI统一资源标识符

统一资源标识符是一个用于标识某一互联网资源名称的字符串。该标识允许用户对网络中的资源通过特定的协议进行交互操作。URI常见形式为统一资源定位符(URL),URN为统一资源名称。用于在特定的命令空间资源的标识,以补充网址。

计算机网络的基础知识问题:计算机网络的知识点(40)

59.HTTP 协议

HTTP超文本传输协议是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符来标识

HTTP 协议主要特点

计算机网络的基础知识问题:计算机网络的知识点(41)

60.数据链路-数据链路层

数据链路层:以太网,无线LAN,PPP。。。(无线,光纤。。。)

  • 数据链路的知识对了解TCP/IP与网络起到重要的作用
  • 数据链路层的协议定义了通过通信媒介互连的设备传输的规范
  • 物理层面是将实际的通信媒介如电压的高低,电波的强弱等信号与二进制01进行转换
  • 数据链路层处理的数据是一种集合为“帧”的块
  • WLAN,无线局域网
  • PPP,点对点协议,即是1对1连接计算机的协议
  • ATM,异步传输方式

数据链路是让互联网计算机之间相互通信的一种协议,通信手段

  • MAC地址用于识别数据链路中互连的节点

计算机网络的基础知识问题:计算机网络的知识点(42)

  • 无线通信是使用电磁波,红外线,激光等方式进行传播数据。一般在办公室的局域网范围内组成的较高速的连接称为无线局域网。
  • IP-VPN,在IP网络上建立VPN,网络服务商提供一种在IP网络商使用MPLS技术构建VPN的服务。
61.TCP和UDP的区别

TCP是一个面向连接,可靠,基于字节流的传输层协议。

UDP是一个面向无连接的传输层协议。

TCP是面向连接的,客户端和服务器端的连接,双方互相通信之前,TCP需要三次握手建立连接,而UDP没有建立连接的过程

tcp是面向字节流,udp是面向报文的。UDP的数据传输是基于数据报的,TCP继承了IP层的特性,TCP为了维护状态,将一个个IP包变成了字节流。

TCP报文格式图:

计算机网络的基础知识问题:计算机网络的知识点(43)

计算机网络的基础知识问题:计算机网络的知识点(44)

计算机网络的基础知识问题:计算机网络的知识点(45)

  • 序号:Seq序号,占32位,标识从TCP源端口向目的端口发送的字节流,发起方发送数据时,对此进行标记
  • 确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq 1
  • 标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等
  1. URG,紧急指有效
  2. ACK,确认序号有效
  3. RST,重置连接
  4. SYN,发起一个新连接
  5. FIN,释放一个连接
  6. PSH,接收方应该尽快将这个报文交给应用层

计算机网络的基础知识问题:计算机网络的知识点(46)

62.三次握手建立连接

TCP 的三次握手的过程:

计算机网络的基础知识问题:计算机网络的知识点(47)

计算机网络的基础知识问题:计算机网络的知识点(48)

有图可知都处于closed状态,服务器开始监听某个端口进入listen状态,客户端发起请求,发送SYN,seq=x,然后状态变为syn-sent状态。

服务器端接收到返回syn和ack,seq=x,ack =x 1,然后状态变成syn-rcvd状态。

客户端收到后,发送ack,seq=x 1,ack=y 1给服务器端,状态变为established,服务器收到后,状态变成established。

在连接过程中,需要对端确认的,需要消耗TCP报文的序列号。SYN消耗一个序列号而ACK不需要。

对于连接四次握手多余,二次握手,会带来资源的浪费,当遇到丢包,重传,连接关闭后,丢包到达服务端,就默认建立连接,可客户端以及关闭,所以三次握手就可以了。

63.四次挥手断开连接

TCP 四次挥手的过程

计算机网络的基础知识问题:计算机网络的知识点(49)

计算机网络的基础知识问题:计算机网络的知识点(50)

计算机网络的基础知识问题:计算机网络的知识点(51)

计算机网络的基础知识问题:计算机网络的知识点(52)

三次挥手,当服务器将ack和fin合并为一次挥手,会导致长时间的延迟,以至于客户端误认为fin没有到达客户端,让客户端不断重发fin。

64.TCP 滑动窗口

TCP 滑动窗口:

  1. 发送窗口

计算机网络的基础知识问题:计算机网络的知识点(53)

  1. 接收窗口

计算机网络的基础知识问题:计算机网络的知识点(54)

65.TCP 的拥塞控制?

TCP连接,拥塞控制:

  1. 拥塞窗口(Congestion Window,cwnd)
  2. 慢启动阈值(Slow Start Threshold,ssthresh)

了解TCP/IP协议四层

  1. 应用层决定了向用户提供应用服务时通信的活动。
  2. 传输层对上层应用层,提供处于网络连接中两台计算机之间的数据传输。
  3. 网络层用来处理在网络上流动的数据包。
  4. 链路层,用来处理连接网络的硬件部分。
  • HTTP协议的职责,生成对目标web服务器的HTTP请求报文
  • tcp协议的职责,为了方便通信,将HTTP请求报文分割成报文段
  • IP协议的职责,搜索对方的地址,一边中转一边传送
  • TCP协议的职责,从对方那里接收到的报文段,重组到达的报文段,按序号以原来的顺序重组请求报文
66.了解一下DNS

DNS是域名解析系统,它的作用非常简单,就是根据域名查出对应的IP地址。

  • 从根域名服务器查到顶级域名服务器的NS记录和A记录,IP地址
  • 从顶级域名服务器查到次级域名服务器的NS记录和A记录,IP地址
  • 从次级域名服务器查出主机名的IP地址

计算机网络的基础知识问题:计算机网络的知识点(55)

计算机网络的基础知识问题:计算机网络的知识点(56)

,