计算机网络
good-destiny
这个作者很懒,什么都没留下…
展开
-
高性能定时器
1 时间轮 轮中的实线指针指向轮子上的一个槽(slot),它以恒定的速度顺时针转动,每转动一步就指向下一个槽,每次转动称为一个滴答(tick)。一个滴答的时间称为是间轮的槽间隔si(slot interval),它实际上就是心跳时间。该轮共有N个槽,因此它运转一周的时间是N×si 。每个槽指向一条定时器链表,每条链表上的定时器具有相同的特性:它们的定时时间相差N×si的整数倍。...原创 2020-03-19 14:42:45 · 303 阅读 · 0 评论 -
常见六大Web安全攻防解析
0 前言 在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?本文主要侧重于分析几种常见的攻击的类型以及防御的方法。2 XSS XSS (Cross-Site Scripting),跨站脚本攻击,因为缩写和 CSS重叠,所以只能叫 XSS。跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览...转载 2020-03-18 17:21:22 · 638 阅读 · 0 评论 -
cookie、session和token原理
目录1 背景 2 cookie2.1cookie原理2.2cookie面临的问题3 sesssion3.1sesssion原理3.2sesssion面临的问题4 token4.1token原理4.2token优势1 背景 用户数量的增多,传统的服务端存储session的方式,面对负载均衡多服务器的部署方式,不好解决...原创 2020-03-18 00:06:39 · 436 阅读 · 0 评论 -
TCP拥塞控制机制
目录1 概述2 拥塞控制状态机2.1 Open状态2.2Disorder状态2.3CWR状态2.4Recovery状态2.5Loss状态3 四大算法3.1慢热启动算法 – Slow Start3.2拥塞避免算法 – Congestion Avoidance3.3拥塞状态时的算法3.4快速恢复算法 – Fast Recovery1...转载 2020-03-11 18:04:33 · 2000 阅读 · 1 评论 -
网络协议收发数据问题
1 如何收取数据? 对于收数据,当接受连接成功得到 clientfd 后,我们会将该 clientfd 绑定到相应的 IO 复用函数上并监听其可读事件。当可读事件触发后,调用 recv 函数从 clientfd 上收取数据(这里不考虑出错的情况),根据不同的网络模式我们可能会收取部分或一次性收完。收取到的数据我们会放入接收缓冲区内,然后做解包操作。对于使用 epoll 的 LT 模...原创 2020-03-05 23:04:09 · 343 阅读 · 0 评论 -
网络粘包解包问题杂谈
1、如何解决粘包问题? 在设计网络协议时,可能会存在粘包、丢包或者包乱序问题,但TCP协议时可靠性协议,大多数情况不存在丢包和乱序问题,但UDP协议如果不能接受少量丢包,就必须自己设计有序和可靠性传输机制(比如:RTP协议、RUDP协议,)。因此,只存在如何解决粘包的问题。 TCP 协议是流式数据格式。解决问题的思路还是想办法从收到的数据中把包与包的边界给区分出来。...原创 2020-03-05 22:24:42 · 305 阅读 · 0 评论 -
[HTTP协议] 基础知识
1、什么是Http协议无状态协议?怎么解决Http协议无状态协议?无状态协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息 无状态协议解决办法: 通过1、Cookie ; 2、通过Session会话保存。2、cookies机制和session机制的区别cookies数据保存在客户端,session数据保存在服务器端; cookies可以减轻服务器压力,但是不安全,...原创 2020-03-04 20:56:00 · 199 阅读 · 0 评论 -
高并发中的惊群问题
1 惊群效应是什么? 惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只能有一个进程(线程)获得这个时间的“控制权”,对该事件进行处理,而其他进程(线程)获取“控制权”失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群效应。2惊群效应消耗...原创 2020-02-26 22:11:04 · 715 阅读 · 0 评论 -
Linux环境SOCKET编程5:定时器接口timerfd
1、概述 timerfd是Linux为用户程序提供的一个定时器接口。这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景。timerfd是linux内核2.6.25版本中加入的借口。 timerfd、eventfd、signalfd配合epoll使用,可以构造出一个零轮询的程序,但程序没有处理的事件时,程序是被阻塞的...原创 2019-12-19 10:59:15 · 382 阅读 · 0 评论 -
Linux环境SOCKET编程4:Reactor模式
1、Reactor模式简介 Wikipedia上说:“The reactor design pattern is an event handling pattern for handling service requests delivered concurrently by one or more inputs. The service handler then demultip...原创 2019-09-03 00:03:29 · 700 阅读 · 0 评论 -
经典面试题 :网络通信题目集锦
技术面试中常见的网络通信细节问题解答1. TCP/IP协议栈层次结构2. TCP三次握手需要知道的细节点3. TCP四次挥手需要知道的细节点(CLOSE_WAIT、TIME_WAIT、MSL)4. TCP与UDP的区别与适用场景5. linux常见网络模型详解(select、poll与epoll)6. epoll_event结构中的epoll_data_t的fd与ptr的使...转载 2019-09-02 20:06:11 · 4306 阅读 · 0 评论 -
Linux环境SOCKET编程3:压力测试
测试方法:使用epoll实现一个通用的服务器压力测试程序。测试代码:#include <stdlib.h>#include <stdio.h>#include <assert.h>#include <unistd.h>#include <sys/types.h>#include <sys/epoll.h>...原创 2019-09-01 18:58:52 · 476 阅读 · 0 评论 -
Linux环境SOCKET编程2:epoll分析
我们通过实现分析知道LT模式下epoll_wait被唤醒可以通过两种方式,而ET模式只能通过一种方式。所以ET模式下能被唤醒的情况,LT模式下一定也能被唤醒。我们先来讨论特殊情况(ET模式),再来讨论一般情况(LT模式)。1ET根据上一节对两种加入rdlist途径的分析,可以得出ET模式下被唤醒(返回就绪)的条件为:对于读取操作:(1)当buffer由不可读状态变为...原创 2019-08-31 23:28:47 · 224 阅读 · 0 评论 -
Linux环境SOCKET编程1:套接字
一、socket运行过程 服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据...原创 2016-08-23 15:33:01 · 436 阅读 · 0 评论 -
【muduo源码分析 】 MutexLock和MutexLockGuard封装
MutexLock 封装临界区(critical section),这是一个简单的资源类,用RAII 手法[CCS,条款13] 封装互斥器的创建与销毁。临界区在Windows 上是struct CRITICAL_SECTION,是可重入的;在Linux 下是pthread_mutex_t,默认是不可重入的。MutexLock 一般是别的class 的数据成员。 Mut...原创 2019-03-28 00:12:17 · 642 阅读 · 0 评论 -
Linux I/O复用与epoll详解
select,poll,epoll之间的区别 select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而异步I/O则无...原创 2019-04-04 22:25:59 · 335 阅读 · 0 评论 -
Linux 五种I/O模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求->等待服务器处理->处理完毕返回这...原创 2019-04-13 22:55:39 · 212 阅读 · 0 评论 -
TCP三次握手与四次挥手的过程及原因
一、TCP的连接建立——三次握手1、最初两端的TCP进程都处于CLOSED(关闭)状态。A主动打开连接,B被动打开连接2、B的TCP**服务器进程创建传输控制块TCB(Transmission Control Block),然后处于LISTEN(收听)状态,准备接受客户端的连接请求**3、A的TCP**客户端进程也创建传输控制块TCB,向B发出连接请求报文段,此报文段中同步位SYN...转载 2019-08-28 11:13:06 · 329 阅读 · 0 评论