-
作用范围不同,Cookie 保存在客户端(浏览器),Session 保存在服务器端。
-
存取方式的不同,Cookie 只能保存 ASCII,Session 可以存任意数据类型,一般情况下我们可以在Session 中保持一些常用变量信息,比如说 UserId 等
-
有效期不同,Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭或者 Session 超时都会失效。
-
隐私策略不同,Cookie 存储在客户端,比较容易遭到不法获取,早期有人将用户的登录名和密码存储在 Cookie 中导致信息被窃取;Session 存储在服务端,安全性相对 Cookie 要好一些。
-
存储大小不同, 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie。
-
拥塞控制:拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况;常用的方法就是:( 1 )慢开始、拥塞避免( 2 )快重传、快恢复。
-
流量控制:流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收
-
利用滑动窗口机制就可以实施流量控制。
-
原理就是运用TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方发回的窗口大小。考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送放将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零窗口大小的报文,但是这个报文在中途丢失的,那么发送方的发送窗口就一直为零导致死锁。
-
解决这个问题,TCP为每一个连接设置一个持续计时器(persistence timer)。只要TCP的一方收到对方的零窗口通知,就启动该计时器,周期性的发送一个零窗口探测报文段。对方就在确认这个报文的时候给出现在的窗口大小(注意:TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段)。
-
tcp粘包与拆包
-
概念:TCP是一个“流”协议,所谓流,就是没有界限的一长串二进制数据。TCP作为传输层协议并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分,所以在业务上认为是一个完整的包,可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。
-
产生原因:
-
(1)应用程序写入数据大于套接字缓冲区大小,会发生拆包; (2)应用程序写入数据小于套接字缓冲区大小,网卡将应用多次写入的数据发送到网络上,这将会发送粘包; (3)进行MSS(最大报文长度)大小的TCP分段,当TCP报文长度——TCP header长度>MSS 的时候会发生拆包; (4)接收方法不及时读取套接字缓冲区数据,这将发生粘包。
-
解决方法:
-
拆包处理方法:
-
1)通过包头+包长+包体的协议形式,当服务器端获取到指定的包长时才说明获取完整。
-
2) 指定包的结束标识,这样当我们获取到指定的标识时,说明包获取完整。
-
粘包处理方法:
-
1)发送方对于发送方造成的粘包问题,可以通过关闭Nagle算法来解决,使用TCP_NODELAY选项来关闭算法。
-
2)接收方无法自己解决粘包,通常交给应用层,发送每条数据时,将数据的长度一并发送,例如规定数据的前4位是数据的长度,应用层在处理时可以根据长度来判断每个分组的开始和结束位置。
-
TCP和UDP有如下区别:
-
连接:TCP面向连接的传输层协议,即传输数据之前必须先建立好连接;UDP无连接。
-
服务对象:TCP点对点的两点间服务,即一条TCP连接只能有两个端点;UDP支持一对一,一对多,多对一,多对多的交互通信。
-
可靠性:TCP可靠交付:无差错,不丢失,不重复,按序到达;UDP尽最大努力交付,不保证可靠交付。
-
拥塞控制/流量控制:有拥塞控制和流量控制保证数据传输的安全性;UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率。
-
报文长度:TCP动态报文长度,即TCP报文长度是根据接收方的窗口大小和当前网络拥塞情况决定的;UDP面向报文,不合并,不拆分,保留上面传下来报文的边界。
-
适用场景(由特性决定):数据完整性需让位于通信实时性,则应该选用TCP 协议(如文件传输、重要状态的更新等);反之,则使用 UDP 协议(如视频传输、实时通信等)。
-
ARP协议即地址解析协议,是根据IP地址获取MAC地址的一个网络层协议,工作在网络层。
-
工作原理
ARP首先会发起一个请求数据包,数据包的首部包含了目标主机的IP地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的IP地址,然后和自己的IP地址进行比较,如果相同就返回自己的MAC地址,如果不同就丢弃该数据包。ARP接收返回消息,以此确定目标机的MAC地址;与此同时,ARP还会将返回的MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。 -
ARP攻击以及如何解决
-
ARP攻击指的是,由于arp协议是基于信任局域网类的所有主机的,攻击者通过伪造ARP响应使得arp缓存表缓存到错误的IP-mac的映射表,从而达到通信发送错误,窃取等。
-
解决方法:A、使用双向绑定,局域网内的重要节点使用静态ARP,防止arp攻击 B、使用防护软件
-
DNS解析流程分为递归查询和迭代查询,递归查询是以本地名称服务器为中心查询, 递归查询是默认方式,迭代查询是以DNS客户端,也就是客户机器为中心查询。
-
域名与ip地址之间的相互转化,工作在应用层
-
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BG08uRir-1660012592954)(file:///D:\TMP\msohtmlclip1\02\clip_image001.png)]
-
五层网络体系结构分分别为:应用层、运输层、网络层、数据链路层、物理层。各层功能分别如下:
-
第五层——应用层(application layer)
(1) 应用层(application layer):是体系结构中的最高。直接为用户的应用进程提供服务。
(2) 在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持电子邮件的SMTP协议,支持文件传送的FTP协议等等。 -
第四层——运输层(transport layer)
(1) 运输层(transport layer):负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用和分用的功能。
a. 复用,就是多个应用层进程可同时使用下面运输层的服务。
b. 分用,就是把收到的信息分别交付给上面应用层中相应的进程。
(2) 运输层主要使用以下两种协议: **(1) 传输控制协议TCP(Transmission Control Protocol):**面向连接的,数据传输的单位是报文段,能够提供可靠的交付。 **(2) 用户数据包协议UDP(User Datagram Protocol):**无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付,只能提供“尽最大努力交付”。 -
第三层——网络层(network layer)
网络层(network layer)主要包括以下两个任务:
(1) 负责为分组交换网上的不同主机提供通信服务。在发送数据时,网络层把运输层残生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫做IP数据报,或简称为数据报。
(2) 选中合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。 -
第二层——数据链路层(data link layer)
**数据链路层(data link layer):**常简称为链路层,我们知道,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间传送数据是直接传送的(点对点),这时就需要使用专门的链路层的协议。
在两个相邻结点之间传送数据时,数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点之间的链路上“透明”地传送帧中的数据。
每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长是几百字节到一千多字节。 -
第一层——物理层(physical layer)
**物理层(physical layer):**在物理层上所传数据的单位是比特。物理层的任务就是透明地传送比特流。 -
首先,排查是客户端还是服务器端的问题,查看错误状态码进行分析
-
- 一次HTTPS的请求过程
-
见url的解析,几乎一样
-
- HTTP中的长链接如何实现的
-
- Time wait和Close wait的区别
-
Time wait指的是主动释放连接的一端在完成第三次挥手之后的等待时间,等待2msl是为了保证服务端接收到最后一次握手的信息,如果客户端不等待就释放连接,当第四次报文丢失的时候,服务端会一直等待或者重复发送第三次握手内容,当客户端建立新的连接的时候,将会收到服务端上次的第三次我握手的fin报文,导致连接建立不了。
-
TIME wait 过多可能是短时间大量的短连接,可以使用长连接。
-
Close Wait指的是被动释放连接的一端,完成第二次挥手之后,到第三次挥手之间的时间。
-
Close wait 过多说明服务端socket过于忙于读写,没有调用close方法发送fin包。
-
状态码:1** 表示正在处理
-
2** 请求已成功被服务器接收、理解、并接受。如200-OK,请求成功。
-
3** 服务器重定向,有临时重定向和永久重定向。
-
4** 客户端错误
-
5** 服务器端错误
-
HTTP请求头中包含如下三个内容:
-
User-Agent:产生请求的浏览器类型。
-
Accept:客户端可识别的内容类型列表。
-
Host:主机地址
-
DDos全称Distributed Denial of Service,分布式拒绝服务攻击。最基本的DOS攻击过程如下:
-
\1. 客户端向服务端发送请求链接数据包。
-
\2. 服务端向客户端发送确认数据包。
-
\3. 客户端不向服务端发送确认数据包,服务器一直等待来自客户端的确认。
-
发生在tcp三次握手的过程中。
-
ddos的预防 (1)减少SYN timeout时间。在握手的第三步,服务器会等待30秒-120秒的时间,减少这个等待时间就能释放更多的资源。
-
(2)限制同时打开的SYN半连接数
-
XSS也称 cross-site scripting,跨站脚本。这种攻击是由于服务器将攻击者存储的数据原原本本地显示给其他用户所致的。比如一个存在XSS漏洞的论坛,用户发帖时就可以引入带有<script>标签的代码,导致恶意代码的执行。
-
预防措施有:
-
前端:过滤。
-
后端:转义,比如go自带的处理器就具有转义功能。
-
- 中间人攻击知道吗?怎么做https的抓包?https怎么篡改?
-
Dns域名欺骗就属于中间人攻击
-
1.域名解析(域名 www.baidu.com 变为 ip 地址)。浏览器搜索自己的DNS缓存(维护一张域名与IP的对应表);若没有,则搜索操作系统的DNS缓存(维护一张域名与IP的对应表);若没有,则搜索操作系统的hosts文件(维护一张域名与IP的对应表)。若都没有,则找 tcp/ip 参数中设置的首选 dns 服务器,即本地 dns 服务器(递归查询),本地域名服务器查询自己的dns缓存,如果没有,则进行迭代查询。将本地dns服务器将IP返回给操作系统,同时缓存IP。
-
\2. 发起 tcp 的三次握手,建立 tcp 连接。浏览器会以一个随机端口(1024-65535)向服务端的 web程序 80 端口发起 tcp 的连接。
-
\3. 建立 tcp 连接后发起 http 请求。
-
\4. 服务器响应 http 请求,客户端得到 html 代码。服务器 web 应用程序收到 http 请求后,就开始处理请求,处理之后就返回给浏览器 html 文件。
-
\5. 浏览器解析 html 代码,并请求 html 中的资源。
024-65535)向服务端的 web程序 80 端口发起 tcp 的连接。
-
\3. 建立 tcp 连接后发起 http 请求。
-
\4. 服务器响应 http 请求,客户端得到 html 代码。服务器 web 应用程序收到 http 请求后,就开始处理请求,处理之后就返回给浏览器 html 文件。
-
\5. 浏览器解析 html 代码,并请求 html 中的资源。
-
\6. 浏览器对页面进行渲染,并呈现给用户。