- 博客(108)
- 资源 (1)
- 收藏
- 关注
原创 c++的const用法
c++与指针 顶层const 例子是这种 int * const a = &b; 这种const是a是一个常指针,一旦创建后不能再指向其他变量。 底层const const int *a = &b; 这个说的是不能通过a这个指针来修改b的值,而b是可以自己改变的。 const与参数 用const修饰参数可以保证参数不会修改,起到保护作用。 const与成员函数 保证成员函数不能修改成员变量的值,也不能调用非const修饰的成员函数。 const修饰参数返回值 修饰返回的值,主要是指针类型
2021-03-10 21:16:20
352
原创 cookie 和 seesion 学习笔记-2
Session 概念 cookie的使用会产生一些安全性和传输效率的问题。比如cookie存储了敏感信息可能被其他用户看到,或者cookie的内容太多影响传输效率。所以有了seesion会话。 session的使用 session就是存储键值对的一个东西,将cookie存在服务器的seesion中,给客户端返回jsessionid,下次访问时用jseesionid来访问就好。session有最大不访问时间,超过这个时间就会销毁存储在服务端的cookie信息。 session序列化 当服务器需要重启是将ses
2021-03-10 17:31:03
259
原创 cookie和seesion学习笔记
cookie 概念 cookie也就是http cookie,因为http是无状态的协议,为了维持用户和跟踪用户信息,所以引用了cookie放在客户端。cookie最大是4K,如果超过4K调用时会返回一个空字符串。 cookie的获得与使用 客户端向服务端发送请求,服务端收到之后生成cookie,放在响应头的set-cookie当中,客户端获得后将获得的cookie放到请求头的cookie字段中使用。但是当浏览器关闭释放内存cookie就会消失。 cookie的持久 set-cookie字段有个expire
2021-03-10 17:11:29
250
原创 死锁笔记
死锁是多个进程在运行过程中因竞争资源导致的一种僵局,如果没有外力作用它们都将无法推进。 产生死锁的四个必要条件 互斥条件:进程要求对所分配的资源进行排他性控制,一段时间内某资源仅为一个进程所占。 请求和保持条件:当进程因请求资源而阻塞时,对自己已经获得的资源保持不放。 不剥夺条件:进程的资源在未使用完前,不能剥夺,只能在使用完后自己释放。 环路等待条件:在发生死锁时必然有一个资源-进程形成环链。 解决死锁的基本方法 预防死锁: 一次性分配所有资源。(破坏请求条件) 只要有一个资源得不到分配,其他资源也不分配
2021-03-10 16:01:31
182
原创 集群负载均衡学习笔记
集群的应用服务器节点通常会被设计成无状态,用户可以请求任何一个节点。 负载均衡器 负载均衡器根据每个服务器节点的负载情况将用户的请求转到合适的服务器上。 服务器运行的两个部分: 1.根据负载均衡算法得到合适转发的节点。 2.进行转发。 负载均衡器的作用: 实现高可用:当某个节点故障时,负载均衡器会将用户请求转发到另外的可用节点,保证服务持续可用。 实现伸缩性:根据系统的负载情况可用移出和添加节点。 负载均衡算法 轮询方法: 按序分配,将收到的请求依次转发到每个服务器。 缺点是如果服务器性能差异大,性能差的服
2021-03-07 19:28:21
201
原创 2-3平衡树学习笔记
学习红黑树还是先学习一下2-3平衡树,有助于红黑树的理解和学习。 基本概念和性质 2-3平衡树的2和3也就是所说的阶,举个例子2阶就是一个节点存一个值有两个子树,其中左子树全部小于根节点,右子树全部大于根节点,3阶就是一个节点存两个值,有三个子树,左子树全小于根节点的a值,右子树全大于根节点b值,中间子树就a全都介于a和b之间。 查找 和二叉搜索树类似,根据所查的值与当前节点的值的关系进行搜索。 插入 在插入之前先做一次查询,如果查到这个值就不再插入,否则返回最后遍历到的节点。 当树为空: 直接创建一个新的
2021-03-06 11:34:11
250
原创 多人文档简单理解
多人文档需要解决实时通讯和编辑冲突问题。 编辑锁 只要有人编辑这个文档,该文档就会被锁定,其他人无法编辑。这种方案实现简单所以应用最广,但是用户体验不好,并且也不能实时通讯。 GNU diff-patch diff和patch是两个不同的命令,diff来找到两个版本不同的地方,patch来合并更新两个文件。 实现方法: 每个人都保持长连接,保持好当前的文档副本。 有人编辑时如果停顿5s(根据具体产品)将现有版本和副本diff,将结果传给服务端更新副本。 服务器更新文档,通过长连接发给其他用户,通过patch
2021-03-05 22:48:11
285
原创 操作系统锁机制-1
互斥锁 互斥锁加锁失败时,线程会释放CPU给其他线程。 互斥锁是一种独占锁,当线程A加锁成功后此时互斥锁已经被线程A独占了,其他的线程枷锁就会失败。当线程枷锁失败后内核会将线程设为阻塞状态,锁被释放后内核会在合适的时机唤醒线程。互斥锁加锁失败会产生开销,两个进程的上下文切换。 自旋锁 自旋锁加锁失败后线程会进入忙等,直到它拿到锁。自旋锁开销小一般不会产生线程上线文切换。需要注意的是如果是单核CPU需要抢占式调度器,因为忙等进程不会放弃CPU。 读写锁 只读取公共资源用读锁加锁,要修改公共资源用写锁加锁。 当
2021-03-03 20:08:13
736
1
原创 TCP 常用知识笔记(简)-10
TCP保障传输可靠 连接握手 可以防止历史连接,同步序列号。 校验和 发送方在发送数据之前计算一个16位的校验和,并且进行校验和填充。 接收方在接收到数据后计算校验和,用计算后的校验和与发送端比较。 序列号和确认应答 TCP传输数据时将每个字节数据进行编号,编号就是序列号。 确认应答就是告诉发送端接收到哪些数据和下次应该发送哪些数据。 可以保证数据有序接收且不会接受重复报文。 超时重传 如果超过计时器时间没收到ACK就会触发超时重传,保证不会因为网络的问题使报文丢失。 流量控制 使发送端的发送速度和接收端的
2021-03-03 16:26:49
241
2
原创 磁盘调度算法-1
磁盘调度算法 调度磁盘的访问,提高磁盘的访问效率。 先来先服务 顾名思义先到的请求先被服务。先访问先提出访问的磁道。 最短寻道时间优先 先访问到磁头位置时间最短的磁道,但是这种算法会产生饥饿,磁头可能一直在一个小范围内移动。 扫描算法 规定磁头在一个方向上移动,访问所有未完成的请求,直到该方向上最后磁道才调换方向。也叫电梯算法。性能良好,但是中间磁道访问频率高,两遍访问频率低。 循环扫描算法 只在一个方向上扫描,到头后立即复位到起始边。 LOCK和C-LOCK 扫描算法和循环扫描算法的改良,不是访问到最后磁
2021-03-03 15:27:14
314
1
原创 页面置换算法-1
页面置换算法 CPU访问的内容不在物理内存时就会产生缺页中断。 缺页中断处理的流程: 1.在CPU中访问某个页面,去页表查找这个页面。 2.如果该页表有效就直接使用,否则CPU发送缺页中断请求。 3.操作系统收到了缺页中断,操作系统执行缺页中断处理函数,先会查找该页面在磁盘中的位置。 4.找到磁盘中对应的页面,需要把页面放到物理内存中。在换入之前应该先找到空白页。 5.页面从磁盘换入内存后把页表状态位改为有效。 6.CPU重新执行导致缺页中断的指令。 页面置换算法就是发生在第四步找不到空白页面的情况。 页表
2021-03-03 15:12:13
443
1
原创 文件系统笔记 -7
软链接和硬链接 软链接 软连接是创建一个文件,这个文件有自己的inode,但是这个文件的内容是另外一个文件的路径。目标文件删除,链接文件还在,只是找不到指向的文件了。 硬链接 多个目录项中的索引节点是同一个,只有删除所有硬链接和源文件文件才会被真正删除。 ...
2021-03-02 22:08:14
124
原创 文件系统笔记 -6
目录的存储 普通文件存储的是文件数据,而目录文件里面保存的是目录里面一项一项的文件信息。 目录文件最简单的保存方式就是列表,一项一项地将目录里的文件信息(文件名,文件inode,文件类型)列在表里。 但是列表查找费力,所以改成哈希表的形式,把文件名变成一个hash值,如果存在哈希值代表文件在该表中。 ...
2021-03-02 21:35:07
138
原创 文件系统笔记 -5
空闲空间管理 当我们存放一个文件的时候需要找一段空闲空间,所以对于空闲空间的管理也很重要。 空闲表法 把所有空闲空间信息建成一张表,表内容包含空闲区第一个块号和该空闲区块的个数。 当请求分配磁盘空间时,系统一次扫描空闲表里的内容,直到找到一个合适的空闲区域为止。当用户撤消一个文件时,系统回收文件空间,这时也需要扫描空闲表,寻找一个空闲表条目,并将释放空间的第一个物理块号和以及它占用的块数添加到这个表的条目中。 这种方法只对空闲区少的时候好用,空闲区大了查找效率低。这种方法比较适合建立连续空间文件。 空闲链表
2021-03-02 21:23:30
136
原创 文件系统笔记 -4
文件的存储 文件的存储主要有以下两种: 连续空间存放 非连续空间存放 连续空间存放方式 顾名思义,文件存放在磁盘连续的物理空间中,这种存储方式的读取效率很高。存储时文件头里需要指定起始块的位置和长度。 缺点:有磁盘空间碎片、文件长度不易扩展。 非连续空间存储方式 非连续空间存储方式分为链表方式和索引方式。 链表方式 链表的方式存储是离散的、不连续的,因此可以消除磁盘碎片,同时文件的长度可以动态扩展。根据的实现的方式,分为隐式链表和显式链表。 隐式链表:实现方式是文件头要包含第一块和最后一块的位置,并且每个数
2021-03-02 20:50:48
553
原创 文件系统笔记 -3
文件打开 打开一个文件之后,操作系统会跟踪进程打开的所有文件,会有一个打开文件表维护文件描述符。文件描述符是文件打开的标志。 文件描述符中有: 文件指针:系统跟踪上次读写位置作为当前文件的位置指针。对于打开文件的进程,此指针是唯一的。 文件打开计数器:记录打开该文件的进程个数,当计数器为0系统关闭文件,删除该条目。 文件的磁盘位置:记录文件磁盘位置,保存在内存中,加快访问。 访问权限:访问模式(只读,读写等)用来允许或接受I/O操作。 文件系统的基本操作单位是数据块。 当用户进程从文件读取 1 个字节大小的
2021-03-02 18:43:38
174
原创 文件系统笔记 -2
虚拟文件系统VFS 文件系统有很多,但操作系统希望对用户提供一个统一的接口,于是在用户层和文件系统层引入了中间层,也就是虚拟文件系统。 VFS定义了一组所有文件系统都支持的数据结构和标准接口,这样程序员就不需要了解文件系统工作原理只需要了解VFS的接口即可。 ...
2021-03-02 17:01:09
125
原创 文件系统笔记-1
文件系统 以Linux为例 概念 文件系统的基本数据单位是文件,文件系统的作用是对磁盘上的文件进行组织管理。组织的方式不同就会形成不同的文件系统。 Linux系统为每个文件分配两个数据结构:索引节点(记录文件元信息),目录项(记录目录层次结构) 索引节点(inode):用来纪录文件元信息,如inode编号,文件大小,各种日期,访问权限,以及在磁盘的位置等。 目录项(dentry):用来纪录文件的名字,索引节点指针以及其他目录项的层级关系。目录项是内核维护的一个数据结构,不存放在磁盘而是缓存在内存。 目录项和
2021-03-02 11:31:15
285
原创 进程间通信笔记 - 2
信号量 信号量一般配合其他方式一起使用,主要实现进程间的互斥与同步,而不是缓存数据。 信号量表示资源的数量,控制信号量的方式有两种原子操作: P操作:将这个信号量减一,减一后如果信号量小于0代表资源已被占用进程需要阻塞等待。反之表明资源可用可以正常执行。 V操作:把信号量加一,加一后如果信号量大于等于0代表有阻塞的进程,于是会唤醒运行,反之代表没有阻塞的进程。 P操作用在进入共享资源之前,V操作用在进入共享资源之后,两个操作成对出现。 如果信号量初始为1代表互斥信号量,为0是同步信号量。 ...
2021-03-02 10:58:44
152
原创 进程间通信笔记-1
进程间通信 每个进程的用户地址空间都是独立的,一般而言不能相互访问,所以进程通过内核进行通信。 管道通信 管道就是内核里的一串缓存,管道传输数据是无格式的流且大小受限,通讯数据遵守先进先出原则。 匿名管道的通信范围是父子进程,命名管道的范围是任意两个进程。 消息队列 管道效率低不适合频繁地交换数据。 消息队列是保存在内核中的消息链表。 发送的数据会被分成一个一个的数据单元,即消息体(数据块)。消息的发送方和接收方要先约定好消息体的数据类型。消息队列的生命周期跟随内核,如果没有释放消息队列或者关闭操作系统,消
2021-03-01 22:45:15
113
原创 内存管理笔记 -2
段页式内存管理 内存分段与分页可以组合在一起使用,先把程序划分成多个有意义的段,然后把每个段划分成多个页,这样地址结构就由段号、段内页号、页内位移三部分组成。
2021-03-01 21:52:17
104
原创 内存管理笔记-1
虚拟内存 操作系统提供的一种机制,将虚拟地址和不同的物理地址映射起来。进程要访问虚拟地址时由操作系统转化为物理地址,这样进程写入的是不同的物理地址就不会冲突了。进程持有的虚拟地址是通过CPU芯片中的内存管理单元转化成物理地址的。 操作系统通过内存分段和内存分页的方式来管理虚拟内存和物理内存的关系的。 内存分段 程序是由若干个逻辑单元组成的,例如代码分段、数据分段、栈段等。不同的段有不同的属性,所以通过分段来吧这些段分离出来。 分段机制下虚拟地址由两部分组成,段选择子和段内偏移量。 段选择子保存在段寄存器内,
2021-03-01 21:39:37
119
原创 进程与线程笔记 -8
进程调度 非抢占式调度:执行一个进程直到这个进程被阻塞或者这个进程退出才会调用其他进程,不会处理时钟中断。 抢占式调度算法:挑选一个进程,进程执行一段时间,超过这段时间进程还在运行就会被挂起,接着挑选另外的进程。抢占式调度算法需要在时间间隔末端发生时钟中断,以便返回给调度程序进行调度。 调度原则 保证CPU的利用率,确保CPU始终处于忙碌状态。 提高系统进程吞吐量,尽量让更多的进程都能获得CPU的使用权。 减少周转时间,使进程运行和阻塞时间的和尽可能小。 减少进程等待的时间。 尽快让用户的进程得到响应。 先
2021-03-01 17:25:06
367
原创 进程与线程笔记 -7
线程实现 用户线程 用户线程是基于用户态的线程管理库来实现的,TCB也是在管理库中实现的。操作系统看不到TCB,只能看到PCB。 用户线程的管理调度是用户级线程库函数完成调度的,操作系统不参与。 优点: 每个进程由私有的线程控制块列表,用来管理跟踪线程,TCB使用用户级管理库函数管理,可以用在不支持线程技术的操作系统。 管理由库函数进行管理,不需要内核态和用户态切换,速度快。 缺点: 操作系统不参与线程调度,如果线程发起系统调度被阻塞,那进程所有的线程都不能执行了。 线程开始运行后除非它主动交出CPU否则其
2021-03-01 16:12:58
136
原创 进程与线程笔记 -6
线程上下文切换 线程是CPU调度的单位,当进程只有一个线程时,线程就等于进程,否则线程上下文切换时不需要修改全局变量和共享内存等资源,但是线程的私有资源需要保存。
2021-03-01 10:56:29
108
原创 进程与线程笔记 -6
进程与线程 进程是资源分配的单位,线程是CPU调度的单位。 进程拥有完整的资源,线程只独占必不可少的资源。 两者都有就绪、运行、阻塞状态,具有相同转换关系。 线程可以减小并发执行的时间和空间开销(线程创建的时间比较快,不需要处理一些资源信息,直接共享。线程终止的时间段,因为需要释放的资源少。线程切换比进程切换时间少,线程切换不需要切换页表,而进程需要。线程间信息传递通过共享内存和文件,不需要经过内核。)。 ...
2021-03-01 10:40:27
100
原创 进程与线程笔记 -5
线程 进程特性 进程间可以并发运行 进程共享相同的地址空间 线程概念 线程就相当于进程中的一个执行流程。 同一进程内的线程共享代码段、数据段、打开的文件等资源,但每个线程有自己的独立的一套栈和寄存器,这样可以保证线程的控制流相对独立。 线程的优点 一个进程内可以同时存在多个线程 线程之间可以并发 线程之间可以共享地址空间等资源 线程缺点 当进程的一个线程崩溃,这个进程其他所属的进程也会崩溃。 ...
2021-03-01 10:25:05
92
原创 进程与线程笔记 -4
进程切换 进程间是共享CPU的,所以需要进程切换让不同的进程都能够在CPU运行,这个操作就是进程切换。 CPU上下文切换 任务给CPU运行前,CPU需要知道任务从哪里开始加载运行。 操作系统会事先帮CPU设置好CPU寄存器和程序计数器。 CPU寄存器和程序计数器是CPU在运行任务前所需要的环境,这个环境就是CPU上下文。 CPU上下文切换就是把上一个任务的CPU上下文保存起来,然后加载新任务的上下文,跳转到程序计数器所指的新位置,执行新任务。 进程上下文切换 进程上下文切换就是CPU上下文切换的一种。 进程
2021-03-01 09:29:20
105
原创 进程与线程笔记 - 3
进程的控制 创建进程 为新进程分配一个唯一的进程标号,申请一个空白的PCB,如果没有可用的PCB则创建失败。 为进程分配资源,如果资源不足,就进入等待状态。 初始化PCB 如果进程调度队列能接纳新进程,那就将新进程插入就绪队列,等待被调度运行。 终止进程 终止进程有三种方式:正常结束、异常结束、外接干预。 查找需要终止进程的PCB。 如果处于执行状态,则立刻终止该进程执行,然后将CPU资源分给其他进程。 如果还有子进程,则将其所有子进程终止。 将进程所拥有的的资源退还给操作系统或父进程。 将PCB从队列中删
2021-03-01 08:57:53
218
原创 进程与线程笔记 - 2
进程控制块(PCB) PCB是进程存在的唯一标识,进程存在,PCB存在,进程消亡,PCB消亡。 进程控制块携带的信息 进程描述信息:进程标识符(每个进程都有唯一的进程标识符)、用户标识符(进程所属的用户,为共享和保护服务) 进程控制和管理信息:进程的状态,进程的优先级 资源分配情况:有关内存地址或虚拟地址的空间信息,所打开的文件列表以及所使用的I/O设备信息。 CPU相关信息:CPU中各个寄存器的值,当进程被切换时,CPU信息保存在PCB中,当进程重新执行时可以从断点处执行。 进程控制块的组织方式 PCB通
2021-02-28 23:03:02
131
原创 进程与线程笔记-1
进程 进程概念: 我们编写的程序通过编译形成二进制可执行文件,当我们运行这个可执行文件,它会被装载到内存,接下来CPU会只执行程序当中每一条指令,这个运行中的程序就是进程。 进程并发和并行: 单核切换执行进程是并发,多核一起执行是并行。 进程的状态 运行状态:进程占用CPU 阻塞状态:进程因为某一事件发生而暂停,不可运行 就绪状态:可以运行,但是有其他进程占用CPU 创建后先进入就绪状态。 进程挂起 进程从物理内存掉到硬盘,没有实际占用物理内存的情况就是挂起。所以可以把阻塞的进程挂起来更好地利用物理内存。
2021-02-28 22:45:59
104
原创 IP常用知识笔记(简)-5
DNS 域名解析 DNS的域名都是用句点来分割的,代表不同层次见的界限,在域名中越靠右的位置层级越高。 域名的关系类似于一个树形结构。 (根 DNS 服务器 顶级域 DNS 服务器 权威 DNS 服务器) 根域的DNS服务器信息保存在所有DNS服务器当中,以便于所有服务器都可以访问根域DNS服务器,然后在一路找到目标DNS服务器。 DNS域名解析流程:浏览器先查找自己缓存,如果没有查找服务器缓存,还没有就查找hosts,最后向DNS服务器找。DNS服务器先看自己缓存,有就返回,没有找根域名DNS服务器,然后
2021-02-28 21:10:41
147
原创 IP常用知识笔记(简)-4
IPV6 IPV6基础 IPV6的地址是128位的,拥有更多的地址,IPV6还有更好的安全性和扩展性。 IPV6优点 IPV6可自动配置,即使没有DHCP服务器也可以自动配置IP。 IPV6包头首部长度为固定的40字节,去掉包头校验和,简化了首部结构,减轻路有负担,大大提高传输效率。 有应对伪造IP地址的网络安全功能以及防止线路窃听功能。 IPV6地址标识方法 总共128位,16位一组,采用:作为分隔,如果出现连续的0则可以使用::把0省略代替,只允许出现一次::。 IPV6的地址结构 环回地址:
2021-02-28 19:25:49
169
原创 IP常用知识笔记(简)-3
IP的分片与重组 每种链路的MTU是不同的,当IP数据包大小大于MTU时,IP数据包会被分片,重组只能由目的主机完成,路由器不会重组。在分片传输的过程中,如果一个分片丢失会导致整个IP数据包报废,所以对于TCP自己引入MSS在TCP层进行分片,而UDP尽量不传输大于MTU的报文。 ...
2021-02-28 16:53:58
129
原创 IP常用知识笔记(简)-2
公有IP和私有IP 私有IP:允许组织内部人员自己分配管理,可以重复。 公有IP:由ICANN组织管理,世界唯一的。 IP地址与路由 IP地址用网络地址部分来进行路由控制。 路由控制表中记录着网络地址和下一步应该发送到的路由器地址,主机和路由都有自己的路由控制表。转发时如果有多个相同的网络地址记录,选择最长匹配的记录进行转发。 环回地址 计算机有一个特殊的地址127.0.0.1作为环回地址,与该地址具有相同意义的主机名是localhost,使用这个IP和主机名时,数据包不会流向网络。 ...
2021-02-28 16:43:22
229
原创 IP常用知识笔记(简)-1
IP基础 IP位于TCP/IP参考模型的第三层,网络层。 IP的作用 MAC层负责实现两个直连设备之间的通信,IP负责在没有直连的两个网络之间通信。需要通过MAC层和网络层共同作用才能实现最终目标地址的通信。在通信过程中源IP和目的IP是不变的,而源MAC和目的MAC是不断改变的。 IP地址分类 IP(IPV4)地址是32位的正整数来表示的,为了记忆方便把每8位分成一个分组用.来分隔,再将分组转化为十进制。IP是根据网卡的数目来分配的。 使用NAT技术使得可联机算机超过IP总数, 地址的分类: A类:最左0
2021-02-28 16:11:33
327
原创 TCP 常用知识笔记(简)-9
拥塞控制 网络出现拥堵时再发送数据极容易出现丢包超时等问题,如果继续传数据会加剧网络拥堵。 拥塞控制就是为了控制不让发送方的数据充满整个网络。 拥塞窗口(cwnd):发送方维护的一个状态量,如果网络没出现拥塞cwnd增大,否则cwnd减小,但是cwnd的值要小于等于发送窗口和接收窗口的最小值。 只要未在规定时间内收到ACK报文发生超时重传就认为发生拥塞。 拥塞控制算法 慢启动: TCP在刚建立起连接时有个慢启动状态,一点一点提高发送数据包的数量。发送方每收到一个ACK报文,cwnd的数量翻倍,当cwnd达到
2021-02-28 14:25:21
410
原创 TCP常用知识笔记(简)-9
TCP滑动窗口 TCP引入滑动窗口改进一问一答的通讯方式。窗口大小指无需等待确认应答可以继续发送数据的最大值。 窗口的实现是操作系统开辟的一个缓存空间,发送方在等待确认应答前在缓存区保留数据,如果按时收到应答就可以把数据从缓存区移除。 如果连续几个数据包当中的某个ACK报文丢失,但是之后的ACK报文到达,那么之前的报文不会被重发,这个模式叫累计确认或累计应答。 TCP头部有个window字段,即窗口大小。这个字段告诉发送端自己还有多少缓冲区可以接收字段,发送端根据这个字段发送数据。 因为传输时延,接收窗口约
2021-02-28 10:20:08
729
原创 TCP 常用知识笔记(简)-8
TCP重传 超时重传 在发送数据时,设置一个定时器,当超过指定时间还没收到ACK报文确认应答报文就重发该数据。 发生情况:数据包丢失,确认应答丢失。 超时重传时间RTO一般略大约RTT,并且会根据网络状况动态变化。 快速重传 快速重传以数据驱动重传,当连续收到三个相同的ACK且在定时器过期之前就触发重传重传报文。 问题:不知道是重传ACK的还是重传所有的。 SACK方法() 也是收到三个相同的ACK就触发重传,不过该方法会在TCP头部加一个sack字段用来将缓存的地图发送给对方,就可以知道哪些数据收到哪些数
2021-02-27 23:36:22
123
原创 TCP常用知识笔记(简)-7
TCP保活机制 对于已经建立的连接,如果客户端突然故障,服务器的处理方法:定义一个时间段,如果时间段内没收到任何相关活动,TCP保活 机制开始发证作业,每隔一个时间段发送一个探测报文,如果连续几个探测报文都没有得到响应说明连接死亡。 ...
2021-02-27 10:14:57
106
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅