- 博客(13)
- 收藏
- 关注
原创 抓包分析TCP三次握手和四次挥手
抓包分析 实验主要两个内容: TCP三次握手和四次挥手过程 分析HTTPS的TLS握手过程 TCP三次握手 windows10下wireshark工具,浏览器访问47.93.242.17端口443,即HTTPS协议,源端口54407 过滤规则 ip.dst ==47.93.242.17 or ip.src == 47.93.242.17 过滤ip tcp.port == 80 过滤端口,无论是源端口还是目的端口 三次握手过程 第一次握手tcp报文段 报文段分析: 源端口:544
2022-02-27 22:03:10
3700
原创 智能指针:实现简易auto_ptr
auto_ptr简易实现 最近在看《STL源码剖析》,其中迭代器这一章开头提到,iterator可以看做是一种smart_ptr,同时候捷老师给出了部分auto_ptr的实现,我在这里给出完整实现。
2021-12-27 13:42:18
158
原创 Web服务器性能测试工具介绍
web性能测试工具 相关工具:webbench 、Apache bench 压力测试相关指标 吞吐量(Requests per second, RPS),某个并发用户数下,单位时间内处理的请求数。 注:RPS是基于并发用户数的。RPS=Complete requests/Time taken for testsRPS = Complete\ requests / Time\ taken\ for\ testsRPS=Complete requests/T
2021-10-28 13:40:19
346
原创 使用docker安装mysql
使用docker安装mysql 第一次使用docker,不得不说,太方便了???? 基本命令 sudo docker search mysql sudo docker pull mysql # 拉取官方mysql镜像 使用容器运行mysql镜像,创建容器,-d后台运行 sudo docker run --name mysqldb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest 进入容器 sudo docker exec
2021-10-21 22:18:55
93
原创 TCP传输控制协议
TCP传输控制协议 内容参考《TCP/IP详解卷1》version2 快速看了一遍,其中关于拥塞控制的相关算法还得进一步学习 ???? 引言与TCP概述 单个信道,通信媒介可能会丢失或改变被传递的信息,处理差错的两种方式,使用差错校正码(添加一些冗余的比特,使得即使某些比特被毁,真实的信息也可以被恢复过来)来纠正通信问题;另一种是尝试重新发送直到信息最终被接收,被称为自动重复请求(Automatic Repeat Request,ARQ)。 ARQ和重传 简单停-等协议 允许多个分组同时进入网络会使事情
2021-10-20 22:18:41
649
原创 TCP连接的建立和终止、TCP的状态转移
TCP连接的建立 三次握手 TCP连接终止 四次挥手 半连接 《TCP/IP 详解卷一》 TCP状态转移图 RST标志位 RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。就像上面说的一样,发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。 TCP处理程序会在自己认为的异常时刻发送RST包。例如,A向B发起连接,但B之上并未监听相应的端口,这时B操作系统上的TCP处理程序会发RST包
2021-10-14 22:58:08
329
原创 关于socket可读可写的条件
引起select返回套接字就绪的条件 可读的四个条件(满足其中之一即可): 套接字接收缓冲区的数据字节数大于等于接收缓冲区低水位标记的当前大小。 该连接的读半关闭(接收到FIN的TCP连接)。读操作不阻塞并返回0(EOF). 该套接字是监听套接字且已完成的连接数不为0. 其上有一个套接字错误待处理。读操作返回-1,并设置errno。 可写的四个条件(满足其中之一即可): 发送缓冲区的可用空间字节数大于等于套接字发送缓冲区低水位标记的当前大小,并且该套接字已连接,或者该套接字不需要连接(UDP sock
2021-10-14 13:59:45
441
原创 强制触发EPOLLIN、 EPOLLOUT事件
调用epoll_ctl(epoll_fd, EPOLL_CTL_MOD, sockfd, &event)重新设置一下event,其中要包含EPOLLIN/EPOLLOUT,这样就会立即触发一次相应事件。
2021-10-12 18:03:45
357
原创 EPOLL系列系统调用
epoll系列系统调用 epoll是使用一组函数来完成任务,而不是单个函数。其次,epoll把用户关心的文件描述符上的事件放在内核里的一个事件表中,从而无需像select和poll那样每次调用都要重复传入文件描述符集或事件集。epoll需要使用一个额外的文件描述符,来唯一标识内核中的事件表。 内核事件表 这个文件描述符使用epoll_create函数来创建: #include<sys/epoll> int epoll_create(int size); size参数现在并不起作用,只是给内核一
2021-10-11 10:13:13
431
原创 记录一些常用C库函数和Unix系统调用
常用函数 记录一些常用的C库函数和Unix系统调用 string.h char* strpbrk(const char* str1, const char* str2)检索字符串str1中第一个匹配字符串str2中字符的字符,不包含空结束字符,返回该字符位置 int strcasecmp(const char* s1, const char* s2);用来比较s1和s2字符串,比较时忽略大小写差异,返回值若s1和s2字符串相同返回0,s1长度大于s2则返回大于0的值 size_t strspn(const
2021-10-09 21:14:09
144
1
原创 网络编程-高级I/O函数
网络编程相关的高级I/O函数 大致分为三类: 用于创建文件描述符的函数,pipe dup/dup2 用于读写数据的函数readv/writev sendfile mmap/munmap splice tee 用于控制I/O行为和属性的函数fcntl pipe函数 创建管道,常用于进程间通信。 #include <unistd.h> int pipe(int fd[2]); 此外,socket基础API提供一个socketpair函数,创建一个双向管道,在半同步/半异步进程池的实现中,使用
2021-10-08 23:33:22
99
原创 2021-10-07
2021年的最后一个假期,突然意识到过去三个月学习的知识,已经忘得差不多了,这种挫败感,让我这个多年的计算机平凡人也有了写技术博客的想法...... 希望这确是一个新的开始0.0
2021-10-07 19:08:24
72
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人