Advertisement

计算机网络(面试必备知识点)

阅读量:

第一章 概述

互联网的组成以及几种网络传输方式

边缘部分是由所有互联于互联网的主体构成。这部分是由用户直接参与的主体完成的数据传输与共享功能。计算机之间的通信主要有两种模式:一种基于客户端-服务器架构(C/S),另一种采用点对点(P2P)技术。

由众多网络以及连接这些网络的路由器构成的一个大型网络系统中的一部分主要负责向边缘区域提供服务。在核心中扮演关键角色的是路由器,在其职责范围内的主要功能是进行分组交换,并转发 incoming的数据包。

数据交换的几种方式和特点:

  1. 采用电路交换技术时,具体包括建立通信连接、实现通话过程以及完成连接释放这三个步骤。在资源实现独占状态之下,传输速率相对较低。

  2. 采用分组交换技术进行通信时需要将原始数据报文分割成若干小块,并附加必要的同步标记以形成一个个独立的数据帧。这些独立的数据帧各自经过处理后分别进行传输处理以确保其完整性与安全性。这种通信方式具有很高的效率和灵活性,并能在较短时间内完成数据传输。然而,在提高通信效率的同时也会导致传输过程中的延时问题以及额外的处理开销。

  3. 数据交换中,在完成与邻近节点的数据传输后,在本地缓存中对这些信息进行转码处理,并随后重新发送至下一层节点。

image-20180528111328377

分层

​ 网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能

​ T C P / I P 通常被认为是一个四层协议系统 ,如下图所示

这里写图片描述

​ 每一层负责不同的功能:

​ 1.数据链路层:有时候被称为网络接口层。

2.网络层直接关联数据包的处理与分组过程。网络层的主要组成部分包括国际互联网协(IP)议(Internet protocol)。网络互操作性控制报文协(ICMP)议(Network Interoperability Control Message Protocol)。此外,在复杂的网络环境中还需要依赖管理信息交换协(IGMP)议(Message Interchange Method Protocol)。

3.运输层:旨在实现跨主机的应用程序之间的全连接通信主要有两种核心协议:Transmission Control Protocol(TCP)和 User Datagram Protocol(UDP)。其中TCP则负责确保数据传输的高度可靠性;而UDP则向应用层提供了简便且高效的数据传输服务。需要注意的是,在某些场景下数据传输是不可靠的。

4.功能层面:主要承担相关服务的具体操作。该层的主要服务包括Telnet、FTP、SMTP以及SNMP(简单网络管理协议)

网关的概念:协议簇之间的一个特殊连接点,在服务于特定的应用需求时实现不同协议之间的有效通信。

在TCP/IP协议簇中,IP层基于非实时通信机制运行,在此基础之上实现了数据传输功能;而TCP协议则通过引入超时重传机制、分段标记与确认机制以及队列管理技术等手段,在确保数据传输可靠性的同时实现了高效的数据交换;为确保端到端的可靠性保障体系得以建立

网桥是作为网络设备中的一种互联设备,在数据链路层上负责对整个网络进行互联;路由器同样是作为另一种网络设备,在OSI模型中的传输层(即网络层)上负责对整个网络进行互联。

数据的封装

在应用层采用TCP进行数据传输时,在进入网络前这些数据会被组织成一个协议栈中的各个层次,并在每经过一层网络设备后都会附加相应的头部信息。而经过处理后到达IP层的数据则被称为TCP报文;同样地,在到达下一层时这些信息则被称为IP数据报,在以太网中传送的就是经由以太网传输的信息块则统称为帧。

这里写图片描述

两种协议的数据类型在多数情况下表现相似。
其主要区别在于首部字段被编码为UDP格式。
具体来说,该首部占据的空间大小为8个字节。
向IP层发送的信息采用的是...报文格式

数据的分用与复用

当目标主机接收到一个以太网数据帧时,该数据开始自底层协议栈向上层依次剥离各层协议附加的报文头部字段,并逐步传递至目标主机所在的上一层网络接口设备。每个层次的通信端点都需要解析报文头部中的标识字段以便识别和处理上一层的数据传输请求。这个操作过程被称为分用。

端口号

TCP和UDP采用了16位的端号码来进行应用层区分。其中有一些特定的端号码较为知名:例如FTP协议使用的是21号TCP端口;而每一个Telnet应用程序通常会连接到23号TCP端口;TFTP则采用了69号UDP端口作为默认设置;这些知名的端号码大多在1至255之间;其中位于256至1023之间的号码主要用于Unix服务进程;而临时使用的号码则主要集中在1024至5000之间;此外一些保留下来的特殊用途号码则分布在大于5000的位置

unix系统中的端口号信息存储于/etc/services文件中 ,可以通过执行特定命令来获取当前服务的状态信息

​ grep “服务命令” /etc/services

第二章 数据链路层

数据链路层使用的信道主要有两种类型:

1.点对点信道

2.广播信道

数据链路层有三个基本问题:

1.封装成帧

2.透明传输

3.差错检测

封装成帧

​ 就是在数据的前后添加尾部和首部,这样就构成了一个帧。

帧界定符:SOH(01)表示一个帧的开始,EOT(04)表示帧的结束。

透明传输

当发送端的数据链路层在数据中遇到控制字符SOH或EOT时,在其前面应添加一个转义字符ESC。这种方法通常被称为字节填充或字符填充技术。

差错控制

​ CRC校验

PPP协议组成

​ 1.支持异步链路,也支持同步链路

​ 2.建立、配置和测试数据链路连接的链路控制协议LCP

​ 3.网络控制协议

​ 字节填充

​ 出现每一个0x7E字节的地方,插入0x7D,出现0x7D的地方后面插入0x5D

​ 零比特填充

​ 连续出现5个1,就在后面插入0

第三章 网络层

引言

IP层提供(unreliable;disconnected)的服务,在此特性中(unreliable)表示该层无法保证传输的数据包能够成功到达其指定的目的地;而(disconnected)则表明该层的数据报机制不携带关于后续数据报送达状态的信息。

这里写图片描述

与IP配套的协议还有三种

ARP:地址解析协议

ICMP:网际控制报文协议

IGMP:网际组管理协议

物理层使用的中间设备叫转发器

数据链路层使用的设备是网桥或者交换机

网络层使用的是路由器

网络层以上使用的是网关

IP首部

普通的IP首部长度为20字节 。具体的图解如下:

这里写图片描述

首部长度代表的是该段落中占用32位字的数量 ,这一数值包含了所有可能的选项设置信息。由于这是一个仅占据4位的信息字段,在计算时需要特别注意其最大值范围的变化。

该服务类型中的一个子字段涉及了一个3bit的优先级字段(目前未被采用),以及一个4bit的TOS字段

对于未使用的1位来说,在该位置必须设置为0值以避免潜在的问题出现。其中的4bit分别代表:最小延迟、最大吞吐量、最高可靠性和最小费用等关键参数设置选项。在这些设置中仅允许其中一个bit被配置为有效状态以确保系统的稳定性与安全性。当所有4bit都被设为0时,则表明处于常规服务状态

该数据流管理单元负责计算整个I P 数据包的总长度参数,并通过头端长度参数和整体数据流管理单元总长度参数实现数据流量统计功能

可以直接获取I P数据报中数据内容的起始位置和长度的信息。由于该字段占用16比特的空间,I P数据报最
**长可达65535字节的长度。

T T L( t i m e - t o - l i v e )生存时间段定义了数据报经过的最大路由器数量。该字段规定了数据报的生存时间。T T L的初始值由源主机配置(通常为32或64),一旦经过一个处理它的路由器后,则将其值减一。当该字段的值降为零时,则丢弃该数据报并触发ICMP响应通知源主机

子网寻址

每个主机均采用了子网划分技术。这是实现了将主机IP地址分为网络部分和 host部分;这种做法导致A类和B类地址为主机预留了过多的IP空间,在实际应用中,这可能是不必要的。

这里写图片描述

IP地址的指派范围

这里写图片描述

子网掩码

该网络掩码的主要作用是用来确定有多少位用于标识出子网编号以及剩余部分作为主机编号。
基于所给IP地址及其对应的网络掩码,
计算机可以明确区分目标属于:
(1)同一本地网络中的其他设备;
(2)其他本地网络中的设备;
(3)完全不同的网络中的设备。

特殊的IP地址

​ 经过子网的划分,可以确定7个特定的IP地址,

这里写图片描述

ifconfig

ifconfig 是用来设置和获取网络接口信息的命令,在引导过程中通常会被调用以完成主机上所有网络接口的配置工作

netstat

netstat旨在提供一个系统性的接口命令列表。通过指定一系列参数组合,用户能够详细查看各个网络接口的相关技术指标。例如,MTU大小决定了数据包的最大传输单元;分组数量反映了数据流量的处理情况;而输入错误和冲突则有助于识别网络问题。

分组转发算法

​ 1.从数据报文中取出目的地址D,然后得到其网络地址N

当N为连接至路由器的本地网络地址时,则可实现立即交付;否则,则需执行第3步。

当路由表中存在指向特定D主机的路由时,则会将数据包发送给所指定的目标路径。

如果路由表中含有指向网络N的路由,则将数据报发送给指定的目标路由地址。

​ 5.如果路由表中有一个默认的路由,那么就直接交个指明的下一跳路由

​ 6.报告分组出错

无分类编址CDIR

CDIR的两个特点:

取消了传统的A/B/C类地址划分及子网设置,并对IP地址进行了更细致的分级管理

2.将网络前缀相同的连续的IP地址组成一个CDIR地址块

在采用CDIR的情况下,构建了一个地址聚合的网络结构,并且其核心机制是将网络地址进行分组与映射;在路由查找阶段的下一跳中通过最长匹配策略实现路径选择

ICMP

ICMP主要分为两种,ICMP差错报告报文和ICMP询问报文

ICMP差错报文有四种:

1.终点不可达

2.时间超过

3.参数问题

4.改变路由

ICMP询问报文:

1.回送请求和回答 用于是否可达以及了解相应状态

2.时间戳请求和回答 用于时间测量和时钟同步

traceroute(ICMP应用)

用于跟踪一个分组从源点到终点所经过的路径

Ping(ICMP应用)

主要用于测试主机之间的连通性。

ARP地址解析协议

ARP负责建立IP地址与硬件地址之间的一一对应关系,并实现了将逻辑IP地址转换为物理MAC地址的功能。

ARP的核心机制在于每个主机配置有若干个ARP速缓存。这个高速缓存的作用是存储最新的互联网地址与硬件地址之间的映射关系。高速缓存中的每一项通常会持续有效保持20分钟,并自生成时刻开始计算有效保持时间。

​ 48 bit的以太地址 6个十 六进制的数来表示,中间以冒号隔开。

​ ARP地址解析过程:

当主机A需向本局域网中的机器B传输数据包时,在ARP快速缓冲区检查机器B是否已分配IP。若存在,则获取其对应的MAC地址并将其设置为当前数据包的MAC帧,并将该修改后的MAC帧广播至与之匹配的网络接口。

​ 如果没有需要进行广播请求:

广播发送一个数据包作为ARP询问数据,并记录A节点的IP地址及硬件信息;同时查询B节点的信息以获取其硬件配置

​ 2.本局域网上的所有主机接收到ARP广播分组

主机B响应收到ARP分组,并向A发送其硬件ID和IP地址信息,在局域网范围内其他设备均未作出回应

​ 4.主机A收到返回结果后,将B的IP和硬件地址对应的写入高速缓存

RARP逆向地址解析协议

当系统具有本地硬盘时,在引导过程中通常会从硬盘上的配置文件中获取IP地址。然而,在不带本地硬盘的计算机(如X终端或无硬盘工作站)的情况下,则必须依靠RARP协议来获取IP地址。

​ 对应于 ARP,RARP请求以广 播 式传送, RARP应答一般是单播 (unicast)传送的。

内部网关协议IGP

​ 在一个自治系统内部使用的路由选择协议。

​ 主要分为RIP和OSPF协议。

RIP适用于小型互联网

OSPF适用于大型互联网

外部网关协议BGP

IPv6

IPv6支持无连接,IPv6的主要特征有:

1.更大存址空间,IPv6的地址为128位

2.扩展的地址层次结构

3.灵活的首部格式

4.改进的选项

5.允许协议扩充

6.支持即插即用,IPv6不支持DHCP

7.支持资源的预分配

8.IPv6首部是8字节对齐

40字节的IPv6基本首部如下

这里写图片描述

一个IPv6数据报目的地址可以是有以下三种基本类型

单播:传统的点对点通信

多播:一对多点的通信

任播:终点是一组计算机,也叫做组播。

IPv使用的是零压缩法,也就是一串连续的零可以为一对冒号代替

这里写图片描述

需要注意的是,在任一地址中只能使用一次零压缩。

这里写图片描述

第四章 运输层

网络链路层负责实现主机间的逻辑通信过程,而传输层则专注于确保应用进程之间的可靠数据传输通道建立

运输层的两个主要协议:

用户数据报协议UDP:

1.不建立连接

2.尽最大努力传输

3.面向报文的

4.UDP没有拥塞控制

5.首部开销少

6.可以一对一、一对多、多对多

传输控制协议TCP:

1.提供面向连接的服务

2.面向字节流

3.提供可靠服务

4.TCP只能是点对点

UDP和TCP协议各种应用

这里写图片描述

TCP端口

这里写图片描述

TCP连接

TCP连接的端口叫做套接字或者插口

每一条TCP连接唯一地被通信两端的两个端点所确定:

在一个应用进程和另一个应用进程之间建立一个TCP连接。

TCP连接的端点是个抽象的套接字,即 (IP地址:端口)

一个IP地址通常对应多个TCP端口,而一个端口号也可能存在于多个不同的TCP连接中。

可靠传输的工作原理

停止等待协议:

停止等待就是没发送完一个分组就停止发送,等待对方的确认。

无差错情况

这里写图片描述

出现差错

A一旦超过一定时间仍未得到确认后,则会视为当前发送的分组为丢失,并将之前发送过的数据重新发送出去。

这里写图片描述

确认丢失和确认迟到

这里写图片描述

确认丢失采用两个行动:

1.丢失这个重复分组M1

2.向A发送确认

确认迟到采用的行动;

收到后丢弃

连续ARQ协议

这里写图片描述

发送方收到一个确认,就将发送窗口向前滑动。

TCP报文段的首部格式

​ TCP报文首部前20个字节是固定的,TCP首部吧最小长度是20字节。

这里写图片描述

各个字段意义:

源端口和目的端口:各占2个字节

序号:4字节,范围是[0,2^32-1] ,可以看出最多4GB

确认号:4字节,期望收到对方下一个报文段的第一个数据字节的序号。

窗口:2字节

校验和:2字节

紧急指针;2字节

TCP用塞控制

拥塞控制算法:慢开始、拥塞控制、快重传、快恢复

慢开始和拥塞避免

在管理维护过程中,在CWND(即cwnd)被引入时的最初阶段,发送方会将自身的发送窗口大小设置为与CWND相等

还需要设置一个慢开始门限ssthresh:

这里写图片描述

慢开始使用指数增大,拥塞避免算法是使用加法增大

这里写图片描述

开始时cwnd=1,ssthresh=16,使用慢开始算法

在传输轮次为4,使用拥塞避免算法

轮次为12,出现网络超时,ssthresh=cwnd/2=12,cwnd=1 之后使用慢开始算法

在轮次为21时,发现重复确认,使用了快重传

这里写图片描述

在4的时候,使用快恢复,将cwnd=ssthresh=cwnd/2=8然后执行拥塞避免

TCP连接管理

三次握手如下:

这里写图片描述

为什么需要使用3次握手呢?

​ 防止已失效的连接请求报文段传输到B,因而产生错误。

这里写图片描述

TCP连接释放

这里写图片描述
这里写图片描述

第五章 HTTP报文

报文流

HTTP传输的数据块通过HTTP应用程序间发送,并且这些数据块包含一些作为元数据开头的部分。

报文流入源端服务器

​ HTTP使用术语流入和流出来描述事务处理。

报文向下游流动

​ 所有的报文都向下游流动,报文的发送者都在接收端者的上游。

报文的组成

报文通常由三大组成部分构成:开头行、属性字段块以及可选的数据区域。

该ASCII文本的起始行和头部均通过行分隔符分隔;每行为两个字符构成的行终止序列所构成;其中每个文件末尾均为回车换行组合。

主体是一个可选的核心数据块的关键信息。该处的数据可以是二进制数据与文本信息,并且也可能为空状态。

报文段的语法

​ 所有的报文都可以分为两类:请求报文和响应报文。

通过发送请求数组至Web服务器,当服务器接收到该请求数组后,相应的响应数据将被传输回客户端机器。

​ 请求报文格式

这里写图片描述

​ 响应报文格式

这里写图片描述

​ 方法:例如GET、HEAD

​ 请求URL:请求资源

​ 版本:HTTP版本

​ 状态码:发生的状态

​ 原因短语:数字状态码的可读性版本

​ 首部:可选字段,一般是报文长度,类型

​ 主体:任意数据组层的数据块

起始行

1.请求行

​ 请求方法和URL、版本号等,使用空格分隔

2.响应行

​ HTTP版本、数字状态码、原因短语、

3.方法

​ 请求的起始行以方法作为开始

​ 常用的方法

​ GET 从服务器获取文档

​ HEAD 从服务器获取文档首部

​ POST 向服务器发送需要处理的数据

​ PUT 请求的主体存储在服务器上

​ TRACE 对报文进行追踪

​ OPTIONS 决定可以在服务器上执行哪些方法

​ DELETE 从服务器删除文档

4.状态码

整体范围 定义范围 分类

100-199 100-101 信息提示

200-299 200-206 成功

300-399 300-305 重定向

400-499 400-415 客户端错误

500-599 500-505 服务器错误

5.短语原因

​ 为状态码做解释

6.版本号

​ 遵守的协议

首部

在起始行之后可能跟着零个或多个HTTP头字段;这些报文中包含了额外的信息内容;这些报文可以看作是一个名称与值配对的列表。

1.首部分类

​ 通用首部:可以出现在请求报文中,也可以出现在响应报文中

​ 请求首部:提供能多相关请求的信息

​ 响应首部:提供响应的信息

​ 实体首部:主体的长度和内容,或者资源自身。

​ 扩展首部:规范中没有定义的新首部

​ 首部内容分行使用CRLF也就是\n\t

2.首部延续行

划分较长的内容块以增强阅读体验感;每一行前必须留出一个空白格或使用制表符分隔

实体的主体部分

​ 主体主要是HTTP要传输的内容

版本0.9的报文

由请求和响应构成,在HTTP/1.1协议下,默认情况下客户端会发送一个完整的HTTP/1.1消息报文给服务器。其中请求仅包含HTTP方法和路径信息;而响应仅包含HTML文档内容(即页面实体),不包含版本信息、HTTP状态码或头信息(即无开头字段)。默认情况下客户端会发送一个完整的HTTP/1.1消息报文给服务器进行交互操作;服务器在收到完整报文后会按照标准流程返回相应应答数据体以及附加头信息(即状态码或头字段),以表明处理结果的状态。

方法

若一台服务器要与HTTP/1.1兼容,则仅需为其服务资源提供GET和HEAD方法即可。

安全方法

​ GET和HEAD方法被认为安全,这两个请求都不产生什么动作。

GET

​ 用于请求服务器发送某个资源。

服务器仅返回响应中的头部部分。客户端无需获取完整资源即可访问其头部信息。

PUT

向服务器发送文件,并让服务器从其路径获取一个由所请求的URL命名的文档;如果存在,则将该请求体直接作为响应内容返回。

POST

​ 向服务器输入数据,支持HTML表单

TRACE

​ 追踪报文的路径,主要用于诊断。

OPTIONS

向Web服务器查询其支持的功能种类。或者向服务器查询哪些方法被支持以及特定资源的支持情况。

DELETE

​ 请求服务器删除钦地区URL所制定的资源。

扩展方法

​ COPY、LOCK、MVOE等

状态码

​ 状态码分为五类

100-199 信息性状态码

​ 100Continue状态码:说明请求的初始化部分,请求客户端继续。

​ 101:根据客户端指定,将协议且 切换成Update首部

1.客户端与100Continue

客户端应用程序应当仅在不向服务器发送任何可能导致其被拒绝处理的长数据包时才发送100Continue指令。

2.服务器与100Continue

​ 不主动向客户端发送这个状态码,除非出错

3.代理与100Continue

不确定下一跳服务器是否支持HTTP/1.1协议,并将Exception向下转发。当得知其支持该协议时,请返回407。

200-209 成功状态码

​ 200 请求成功

​ 201 创建服务器对象请求

​ 202 请求被接受,服务器没有执行任何动作

​ 203 实体首部包含的信息不是来自源端服务器,而是来自资源的一份副本。

​ 204 响应报文中国年包含若干首部和一个状态码,但是没有实体的主体部分

​ 205 另一个主要用于浏览器的代码,晴空当前页面的HTML表单元素

​ 206 成功执行一个部分的请求

300-399 重定向状态码

利用某些重定向的状态代码来完成对应用程序本地副本与远端服务器上资源的验证。

​ 300 客户端请求一个实际指向多个资源的URL时会返回这个状态码

​ 301 请求的URL以被移除时使用,响应返回资源所在的URL

​ 302 与301类似,但是请求仍然应使用老的URL。

​ 303 告知客户端应该用另一个URL来获取资源。

​ 304 客户端可以通过包含的请求首部,使其请求变成有条件的。

​ 305 说明必须通过一个代理来访问资源。

​ 306 当前未使用

307与301类似,在线服务中客户端可采用通过Location头部获取当前URL的方式实现对资源的位置定位,并在未来的请求中需采用旧版地址

HTTP/1.0发送POST请求,收到302,期望HTTP客户端使用GET请求返回的URL。

HTTP/1.1使用303,对于客户端使用307代替302临时重定向

400-499 客户单错误状态码

​ 400 客户端发送错误请求

​ 401 请求客户端认证

​ 402 未使用

​ 403 服务器拒绝服务

​ 404 资源没找到

​ 405 不支持请求方法

​ 406 服务器没有与客户端可接受的URL相匹配的资源

​ 407 要求资源进行认证的代理服务器

​ 408 请求超时

​ 409 请求可能资源上英法德一些冲突

​ 410 服务器以前拥有过资源,用于Web站点维护

​ 411 服务器要求在报文中包含Content-Length首部

​ 412 客户端请求条件失败了

​ 413 请求实体过大

​ 414 请求URL过长

​ 415 服务器无法理解请求内容类型

​ 416 请求范围无效

​ 417 请求的Expect请求首部包含一个期望,服务器无法满足此期望。

500-599 服务器错误代码

​ 500 服务器内部错误

​ 501 请求超出服务器能力范围

​ 502 坏网关

​ 503 无腹鳍现在无法提供服务

​ 504 网关超时

​ 505 请求无法支持此协议版本

首部

通用首部

​ 提供与报文有关的最基本信息

​ 通用缓存首部

请求首部

​ 用于请求首部

​ Accept首部

​ 条件请求首部

​ 安全请求首部

​ 代理请求首部

响应首部

​ 用于响应

​ 协商首部

​ 安全响应首部

实体首部

​ 包含实体

​ 内容首部

​ 实体缓存首部

持久连接

初始化对某服务器HTTP请求的应用程序可能在之后对同一台服务器发起更高的频率请求,这种现象被称为站点本地性.

在事务处理完成之后持续处于开启状态的TCP连接定义为持久连接。该协议标准HTTP/1.1则遵循这一规定。

持久以及并行连接

持久连接分为两种主要类型:早期采用的是 keep-alive 标签;而现行主流的做法是采用 persistent 标签。

keep-alive连接

这里写图片描述

Keep-Alive操作

通过发送Connection:Keep-Alive报文头信息字段来维持keep-face应用程序与服务器之间的连接存活状态。

Keep-Alive选项

​ 服务器客户端不一定同意keep-alive,需要设置逗号参数管理

​ timeout 连接保持时间

​ 参数键max 估计服务器还有多少个事务保持此连接的活跃状态

​ 支持未经出来的属性,用于诊断和调试。

Keep-Alive连接的限制和规则

HTTP/1.0中,keep-alive并不是默认使用的。

Connection: keep-alive前导部分应包含在每次新连接请求时一同发送的所有希望维持长期连接的报文。

客户端探明有没有持久连接首部,直到服务器响应之后是否关闭连接

keep-alive和哑代理

​ 1.Connection首部和盲中继

​ 不理解首部,直接转发,没有删除Connection首部,这就是盲中继。

​ 2.代理和逐跳首部

​ 现在的代理不转发含有Connection的首部

管道化连接

​ HTTP/1.1允许持久连接使用请求管道。

第六章 客户端识别于cookie机制

个性化接触

站点的个性化

1.个性化的问候

2.有的放矢的推荐

3.管理信息的存档

4.记录安全回话

HTTP首部

HTTP请求首部

这里写图片描述

客户端IP地址

客户端IP地址识别用户的缺点:

客户端IP地址表示所有使用的设备。并非单独的用户,在某些情况下可能多台不同的计算机被同一组用户共享使用。

2.很多服务提供商都会在用户登录时动态分配IP地址

3。提高安全性,通过NAT来浏览网页

用户登录

HTTP中内置有一种功能,可借助于www-Aythenticate头部字段和headers Authorization来传递用户相关信息

胖URL

一些网站会为每个用户生成特定版本的 URL 以记录身份信息,并通常会对真实 URL 进行扩展以增添状态数据。

技术问题:

1.丑陋的URL

2.无法共享URL

3.破坏缓存

4.额外的服务器负载

5.逃逸口

6.回话间非持久

cookie时当前识别用户,实现持久会话的最好方式。

cookie的类型

cookie分为两类:会话cookie和持久cookie

会话cookie时一种临时cookie,用户就会删除

持久cooki存储在看硬盘,计算机重启时仍然存在

唯一区别是过期时间

cookie是如何工作的

cookie中存储着由名字=值这样的数据项组成的任意数量集合,并通过Set-Cookie或Set-Cookie2HTTP响应头将这些数据项发送给客户端。

cookie罐:客户端的状态

核心概念是让浏览器能够收集特定于服务器的信息,并在每次浏览器访问时将这些信息传递给服务器。

1.网景公司的cookie,存储在cookie.txt中

2.ie存储在高速缓存目录下独立文本文件中

不同的站点使用不同的cookie

浏览器只向服务器发送服务器产生的那些cookie。

1.cookie的域属性

在Set-Cookie响应头部插入一个Domain属性字段, 以便确定哪些网站能够访问特定的Cookies

2.cookie路径属性

Cookie规范清楚地认识到支持用户Cookie与多个Web站点进行关联。通过Path属性这一技术手段,该功能得以实现;具体而言,在此配置下所指定的所有URL路径前缀都会被接受为有效的Cookie值。

cookie成分

cookie有两个版本,第一个是cookies版本0,第二个是cookie版本1

cookie的规范:

这里写图片描述

cookies版本0

明确指明了Set-Cookie响应头、 cookie 请求头以及与管理 cookie 相关的字段信息。

这里写图片描述

1.版本0的Set-cookie首部

必须设置一个强制指定的cookie名称,并随后是简短的cookie属性,这些属性之间通过分号分隔。

2.版本0的cookie首部

将所有与域名、路径模式及安全漏洞相关的国旗型cookies被这个站点接收。所有cookies会被整合到一个cookie头部:

这里写图片描述

cookies版本1

引入set-Cookies2首部和Cookies首部,能与版本0系统进行互操作。

1.版本1的Set-cookie2首部

这里写图片描述

2.版本1的cookie首部

将被收集和传输的是与每个cookie相关的补充数据,这些数据将用于记录每个cookie来源的信息

3.版本1的cookie2首部和版本协商

Cookie2请求首部用于解析不同cookie规范版本,并协调客户端与服务器在处理不同cookie规范版本之间的兼容性。

cookie与会话跟踪

当一个用户访问某个网站时

cookie与缓存

1.如果缓存文档,将其标示出来

2.缓存Set-Cookie首部要小心

3.小心处理带有cookie首部请求

微信公众号

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~