计算机网络(cookie与session)

news/2024/5/18 11:49:13 标签: session, cookie, 网络

5、其他相关

5.1 Session原理

session 可以放在文件、内存中或数据库都可以,是以键值对的形式存储。Session 也是一种 key-value 的属性对。
当程序需要为某个客户端的请求创建一个 session 的时候,服务器首先检查这个客户 端的请求里是否已包含了一个 session 标识 - 称为 session id,如果已包含一个 session id 则说明以前已经为此客户端创建过 session,服务器就按照 session id 把这个 session 检索 出来使用(如果检索不到,可能会新建一个,根据 getSession()方法的参数),如果客户 端请求不包含 session id,则为此客户端创建一个 session 并且生成一个与此 session 相关 联的 session id,这个 session id 将被在本次响应中返回给客户端保存。

  • session的客户端实现方法(session id的保存):
    1、使用cookie保存
    2、url重写:就是把 session id 直接附加在 URL 路径的后面,也就是像我们经常看到 JSP 网站会有 aaa.jsp?JSESSIONID=*一样的。
    3、在页面表单里增加隐藏域
    在这里插入图片描述
  • session被创建的时间:
    一个常见的错误是以为 session 在有客户端访问时就被创建,然而事实是直到某 server 端程序(如 Servlet)调用 HttpServletRequest.getSession(true)这样的语句时才会被创建。
  • session被删除的时间:
    A.程序调用 HttpSession.invalidate()
    B.距离上一次收到客户端发送的 session id 时间间隔超过了 session 的最大有效时间
    C.服务器进程被停止
  • getSession()/getSession(true)、getSession(false)的区别:
    getSession()/getSession(true):当 session 存在时返回该 session,否则新建一个 session 并返回该对象。
    getSession(false):当 session 存在时返回该 session,否则不会新建 session,返回 null。

cookie_19">5.2 cookie的机制

1、cookie的种类

  • .以文件方式存在硬盘空间上的永久性的 cookie
  • 停留在浏览器所占内存中的临时性的 cookie

2、cookie的有效期
maxAge 决定着 Cookie 的有效期,单位为秒。

  • 当maxAge属性为正数,则cookie在maxAge秒之后自动失效。浏览器会将 maxAge 为正数的 Cookie 持久化,即写到对应的 Cookie 文件中。无论客户关闭了浏览器 还是电脑,只要还在 maxAge 秒之前,登录网站时该 Cookie 仍然有效。
    在这里插入图片描述
  • 当maxAge为负数,表示该 Cookie 仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该 Cookie 即失效。Cookie 信息保存在浏览器内存中,因此关闭浏览器该 Cookie 就消失了。
  • Cookie 默认的 maxAge 值为–1。
  • 当maxAge为0,表示删除该cookie。通过设置该 Cookie 即时失效实现删除 Cookie 的效果。失效的 Cookie 会被浏览器从 Cookie 文件或者内存中删除。
    在这里插入图片描述

3、cookie的组成部分
Cookie 的内容主要包括:名字,值,过期时间,域和路径。
存在于http头部信息中,标准格 式: Set- Cookie: NAME=VALUE ;Expires=DATE ;Path=PATH ; Domain=DOMAIN_NAME;SECURE;例如:Set-Cookie: JSESSIONID=mysession; Expires=Thu, 05-Jun-2 008 05:02:50 GMT; Path=/web;
Cookie 的域和路径属性一起构成 cookie 的作用范围。
domain 属性可以使多个 web 服务器共享 cookie
path 指定与 cookie 关联在一起的网页。

cookiesession_40">5.3 cookiesession的原理解析

客户第一次发送请求给服务器,此时服务器产生一个唯一的 sessionID,并返回给客户端(通过 cookie),此时的 cookie 并没有 setMaxAge();只是保存于客户端的内存中,并与一 个浏览器窗口对应着,由于 HTTP 协议的特性,这一次连接就断开了。以后此客户端再发送 请求给服务器的时候,就会在请求 request 中携带 cookie,由于 cookie 中有 sessionID,所以 服务器就知道这是刚才那个客户,从而区分不同的人,购物车就是这样实现的。
在这里插入图片描述

cookiesession_43">5.4 cookiesession的区别

1、cookie 数据存放在客户端,用来记录用户信息的,session 数据放在服务器上。
2、正是由于 Cookie 存储在客户端中,对客户端是可见的,客户端的一些程序可能会窥探、 复制甚至修改 Cookie 中的内容。而 Session 存储在服务器上,对客户端是透明的,不存在 敏感信息泄露的危险。
3、Session 是保存在服务器端的,每个用户都会产生一个 Session。如果并发访问的用户非常多,会产生非常多的 Session,消耗大量的服务器内存。
4、cookie 的容量和个数都有限制。单个 cookie 的容量不能超过 4KB,很多浏览器都限制 一个站点最多保存 20 个 cookie,而 session 没有此问题。

sessioncache_48">5.5 session和cache的区别

  • Session 是单用户的会话状态。当用户访问网站时,产生一个 SESSIONID。并存在 于 COOKIES
    中。每次向服务器请求时,发送这个 COOKIES ,再从服务器中检索是否 有这个 SESSIONID 保存的数据。
  • 而 cache 则是服务器端的缓存,是所有用户都可以访问 和共享的。因为从 Cache 中读数据比较快,所以有些系统(网站)会把一些经常被使用的 数据放到 Cache 里,提高访问速度,优化系统性能。

sessionsession_53">5.6 当有大量的session时如何提高速度,session的访问量较大时如何解决

session 放到 redis 或 memcache 等此类内存缓存中或着把 session 存储在 SSD 硬盘上。

5.7 在浏览器中输入网址(url)后,执行的全部过程,使用到的协议有哪些

1.域名解析
2.为了将消息从你的 PC 上传到服务器上,需要用到 IP 协议、ARP 协议和 OSPF 协议。
3.发起 TCP 的 3 次握手
4.建立 TCP 连接后发起 http 请求
5.服务器响应 http 请求
6.浏览器解析 html 代码,并请求 html 代码中的资源(如 js、css、图片等)
7.断开 TCP 连接
8.浏览器对页面进行渲染呈现给用户

  • 域名解析
    在这里插入图片描述
    例如需要查询www.baidu.com 的 IP 地址:
    1、浏览器搜索自己的 DNS 缓存(维护一张域名与 IP 地址的对应表);
    2.若没有,则搜索操作系统中的 DNS 缓存(维护一张域名与 IP 地址的对应表);
    3.若没有,则搜索操作系统的 hosts 文件( Windows 环境下,维护一张域名与 IP 地址的 对应表);
    4.若没有,则操作系统将域名发送至 本地域名服务器–(递归查询方式),本地域名服务 器 查询自己的 DNS 缓存,查找成功则返回结果,否则,(以下是迭代查询方式)
    4.1.本地域名服务器 向根域名服务器(其虽然没有每个域名的的具体信息,但存储了负 责每个域,如 com、net、org 等的解析的顶级域名服务器的地址)发起请求,此处,根域 名服务器返回 com 域的顶级域名服务器的地址;
    4.2.本地域名服务器 向 com 域的顶级域名服务器发起请求,返回 baidu.com 权限域名 服务器(权限域名服务器,用来保存该区中的所有主机域名到 IP 地址的映射)地址;
    4.3.本地域名服务器 向 baidu.com 权限域名服务器发起请求,得到 www.baidu.com 的 IP 地址;
    5.本地域名服务器 将得到的 IP 地址返回给操作系统,同时自己也将 IP 地址缓存起来;
    6.操作系统将 IP 地址返回给浏览器,同时自己也将 IP 地址缓存起来;
    7.至此,浏览器已经得到了域名对应的 IP 地址。

  • 三次握手

  • ARP(地址解析协议)
    ARP 解决的是同一个局域网内,主机或路由器的 IP 地址和 MAC 地址的映射问题。如果 源主机和目的主机在同一个局域网内(目标 IP 和本机 IP 分别与子网掩码相与的结果相同, 那么它们在一个子网),就可以用 ARP 找到目的主机的 MAC 地址;如果不在一个局域网内, 用 ARP 协议找到本网络内的一个路由器的 MAC 地址,剩下的工作由这个路由器来完成。
    该协议的具体内容:

    • 每个主机都会有ARP高速缓存,存储本局域网内 IP地址和MAC地址之间的对应关系。
    • 当源主机要发送数据时,首先检查 ARP 高速缓存中是否有对应 IP 地址的目的主机的 MAC 地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送 ARP 请求分 组,该数据包包括的内容有:(源主机 IP 地址,源主机 MAC 地址,目的主机的 IP 地址)。
    • 当本网络的所有主机收到该 ARP 请求分组时,首先检查数据包中的 IP 地址是否是自 己的 IP 地址,如果不是,则忽略该数据包;如果是,则首先从数据包中取出源主机的 IP 地 址和 MAC 地址写入到 ARP 高速缓存中,如果已经存在,则覆盖,然后将自己的 MAC 地址 写入 ARP 响应包中,告诉源主机自己是它想要找的 MAC 地址。
    • 源主机收到 ARP 响应分组后,将目的主机的 IP 和 MAC 地址写入 ARP 高速缓存中, 并利用此信息发送数据。如果源主机一直没有收到 ARP 响应分组,表示 ARP 查询失败。
      在这里插入图片描述
  • 路由选择协议
    网络层主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器, 这些都是由路由器来完成的工作,通过查找路由表决定通过那个路径到达服务器,其中用到 路由选择协议。
    1、内部网关协议(IGP)
    一个自治系统内部使用,
    (1)RIP(应用层协议,UDP):基于距离向量的路由选择协议。RIP 协议要求网络中的每一个路由器都要维 护从它自己到其他每一个目的网络的距离记录。这里的“距离”实际上指的是“最短距离”。 RIP 认为一个好的路由就是它通过的路由器的数目少,即“距离短”。
    (2)OSPF(网络层协议):
    2、外部网关协议
    (1)BGP协议(应用层协议,TCP):不同自治系统的路由器之间交换路由信息的协议。边界网关协议 BGP 只能是力 求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非要寻找一条最佳路 由。
    路由器分组转发算法:
    (1)首先从 IP 数据报首部提取出目的主机的 IP 地址 D,得出其所在的网络 N。
    (2)若 N 就是与此路由器直接相连的某个网络,则进行直接交付,直接把数据报交付给目 的主机。否则就执行(3)。
    (3)若路由表中有目的地址为 D 的特定主机路由,则把数据报传给路由表中所指明的下一 跳路由器。否则执行(4)。
    (4)若路由表中有到达网络 N 的路由,则把数据报传给路由表中所指明的下一跳路由器。 否则执行(5)。
    (5)若路由表中有一个默认路由,则把数据报传给默认路由所指明的默认路由器。否则执 行(6)。
    (6)报告转发分组出错。

  • 建立TCP连接后发起http请求

  • 服务器收到请求并享有http请求

  • 浏览器解析 html 代码,并请求 html 代码中的资源(如 js、css、 图片等)

  • 断开 TCP 连接

  • 浏览器对页面进行渲染呈现给用户

5.8 路由器和交换机的区别

1、交换机在数据链路层,路由器在网络
2、交换机转发数据帧,路由器转发ip分组
3、交换机隔离冲突域,不隔离广播域;路由器隔离冲突域和广播域


http://www.niftyadmin.cn/n/1865529.html

相关文章

计算机网络(网络基础概念)

0. 网络基础 1、互联网基础结构发展阶段 从单个网络到互联网的发展三级结构的互联网,分为主干网、地区网、校园网多层次ISP结构的互联网 2、互联网的组成 边缘部分:由所有连接在互联网上的主机组成,用户直接使用,进行通信和资…

计算机网络(网络层)

网络层 1.虚电路与数据报服务 2.网际协议IP 下图是IP协议与其配套协议的关系 1、虚拟互联网络 将网络互相连接起来使用的一些中间设备根据所在的层次看: 许多计算机网络通过一些路由器进行互联。参加互联的计算机网络使用相同的网际协议IP,可以将互联…

计算机网络(运输层)

运输层 1.运输层协议概述 IP层中真正进行通信的实体是在主机中的进程,IP协议虽然将分组发送到目的主机,但是这个分组停留在主机的网络层而没有交付主机的应用进程。从运输层来看,通信的真正端点是主机中的进程。一个主机中经常有多个应用进程…

多线程与并发

1.缓存一致性问题,如何解决? 当程序在运行过程中,会将运算需要的数据从主存复制一份到 CPU 的高速 缓存当中,那么 CPU 进行计算时就可以直接从它的高速缓存读取数据和向其中 写入数据,当运算结束之后,再将…

数据库专题(优化查询)

一,优化查询的方法都有哪些? 1.使用索引: 应尽量避免全表扫描,首先应考虑在 where 及 order by ,group by 涉及的列上建立索引。 2.优化sql语句: 2.1 通过 explain(查询优化神器)用来查看 SQL 语句的执行效果&#x…

数据库专题(sql注入问题)

一,sql 语句应该考虑哪些安全性? 1.防止 sql 注入,对特殊字符进行过滤、转义或者使用预编译的 sql 语句绑定变量。 2.当 sql 语句运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止 泄漏服务器和数据库相关…

数据库专题(关于连接/存储过程/锁/范式/事务的问题)

一,内连接和外连接为区别? 有如下两个表: 内连接只显示符合连接条件的记录 外连接分左外连接、右外连接、全外连接三种: 1)左外连接:即以左表为基准,到右表找匹配的数据,找不到匹…

数据库专题(有关索引的问题)

一,什么是数据库索引? 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。 索…