自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 【nginx】开发一个模块的简要步骤

1、nginx模块的基本数据结构2、搭建http的过滤器功能3、新增模块的编译和运行

2022-10-06 22:08:44 1573 1

原创 【nginx】nginx常用的数据结构

nginx一些常用的数据结构体

2022-10-06 17:10:46 1095

原创 【nginx】nginx与http网络特性

1、http保持长连接的keepalive做法,以及nginx的实现。2、http长连接的另一种方式——pipeline以及实现。3、lingering_close问题以及nginx的处理方案。

2022-10-06 16:28:45 1274

原创 【网络编程笔记六】IO复用模型+reactor模型以及应用场景

1、IO复用函数的一些记录。2、文件描述符的计数。3、关于Reactor模型的一些记录。4、Reactor模型的应用场景举例。

2022-03-26 17:41:29 4372

原创 【网络编程笔记五】tcp状态分析之FIN_WAIT2和CLOSE_WAIT

1、tcp连接是三次握手,而为什么关闭连接需要四次握手?2、当发现发起关闭的一方,有大量FIN_WAIT2状态的时候(即被关闭的一方有大量的CLOSE_WAIT),这时候的问题排查方向。

2022-03-26 13:25:29 3281

原创 【网络协议笔记一】TCP连接管理

处理差错的两种主要方法是差错校正码和数据重传。差错校验码:基本上是添加一些冗余的比特,使得即使某些比特被毁,正确的信息也可以被简单的恢复。流量控制:流量控制分为基于速率的和基于窗口的。基于速率的流量控制是发送方指定某个发送数据的速率,则数据不能超过这个速率发送,多用于多播和组播。基于窗口的流量控制是发送方和接收方都维护一个滑动窗口(大小可变),接收方可以通知发送方使用多大的窗口,简称窗口通告或窗口更新。多用于TCP协议,窗口通告是和ACK于同一个分组。TCP使用的ACK是积累的,一个ack等于N

2020-05-27 13:46:40 248

原创 【网络编程笔记四】《UNIX网络编程》学习笔记——socket API函数基本概念

1、关于connect函数(1)激发TCP三次握手的是调用connect函数,该函数向对端发送一个SYN,从CLOSED状态转移到SYN_SENT状态,若函数执行成功再转移到ESTABLISHED状态。若函数执行失败,则该套接字不能再被使用,需要close当前的套接字并重新调用socket函数。(2)connect函数返回失败的原因可能有以下情况:发送SYN后没有得到响应,则重发SYN,超时未收到,则返回ETIMEOUT的错误。硬错误:发送SYN后,收到的响应是RST。(ECONNREFUSED)

2020-05-27 13:36:13 172

原创 【编程实验二】关于二级指针作为函数参数引发段错误的思考

前言:在调用sqlite3_open函数时,linux下运行程序出现Segmentation fault (core dumped)的报错。发现是传入函数的第二个参数出现问题。sqlite3_open函数原型:int sqlite3_open(const char filename, / Database filename (UTF-8) */sqlite3 *ppDb ...

2020-02-25 13:14:16 383

原创 【编程实验一】不含成员的结构体以及定义0元素的数组的作用

之前有看到过没有包含成员的结构体类型,很好奇其所占内存情况,尝试着自己运行。**1、调试:**在c语言编译环境下,没有成员的结构体的定义会报错,cpp的编译不会;在函数内声明一个0元素的数组,编译会报错。**2、结论:**这样的结构体类型的大小不为0,而是1字节,是为了在内存中占有空间。“空结构体”变量必须被存储,编译器为其分配一个字节的空间用于占位,这样才有地址可以取。**3、思考:**之...

2020-01-29 23:21:22 602

原创 【网络编程笔记三】多进程并发服务器简单例子

实现一个多进程并发服务器,可以用多个客户端同时连接该服务端。服务端每连接也给客户端就创建一个子进程来处理,父进程则继续负责接收客户端的连接。#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <arpa/inet.h>#include <ctype.h&gt...

2019-05-02 19:52:16 340

原创 【网络编程笔记二】socket的概念、主要函数的应用

socket基本概念IP地址可以在网络环境中标示一台主机,而端口号可以在主机中标示一台进程,因此IP号加端口号就可以在网络环境中找到一个唯一的进程,这个进程可以称为socket。socket还可以是Linux的一种文件的类型。socket的使用一定是成对出现;一定要绑定IP地址和端口号;在Linux中,socket的是实现是通过文件描述符的,文件描述符只有一个,但是指向两个缓冲区,一个读,一...

2019-04-22 16:55:50 181

原创 【网络编程笔记一】socket网络字节序,IP转换函数

网络字节序大端法存储: 低位的存在高地址中,高位的存在低地址中;小端法存储: 高位的存在高地址中,低位的存在低地址中。TCP/IP 协议规定, 网络数据流应采用大端字节序,即低地址高字节。如果主机是小端的话,就要进行转换,如果主机是大端的话,则不需要进行进行转换。转换函数如下:#include <arpa/inet.h>uint32_t htonl(uint32_t hos...

2019-04-22 16:34:21 283

原创 【网络基础理解笔记之三】网络数据包通信小结

数据的传输:数据要想进行传输必须进行封装:应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部。封装过程: 首先由用户处理,给数据加上应用层(如:用户封装ftp协议)。之后就交给内核处理通信细节:(1)加上传输层,打上报头(如:给数据加上TCP协议);(2)加上网络层,加上IP段的段首。(3)到网络接口层(链路层),以太网帧协议加上帧头和帧尾。然后就由以太网驱动程序,将我们封装好的数...

2019-04-22 16:24:39 944

原创 【网络基础理解笔记之二】以太网帧格式、ARP数据报格式

以太网帧格式:前两块分别是6字节目的地址和6字节的源地址,是指网卡的硬件地址(也叫 MAC 地址),长度是 48 位,每个网卡独立拥有一个MAC地址。(目的mac和自己的mac)第三块是2字节的类型,不一样的类型,代表数据块的内容不一样。类型1:IP数据表示数据的具体内容;类型2:ARP请求/应答表示这个数据包将要去的下一个网卡的MAC地址是多少(下一跳的路由地址,即一个路由称为一跳);...

2019-04-22 16:15:59 449

原创 【网络基础理解笔记一】协议的概念、网络应用程序设计模式

协议的概念:可以理解成为一种规则,在传输数据前制定好的。**举个例子:**若AB双方想要发送文件,分三次发送给B,则A要规定好三次分别发给B以及B接收A的是文件的那个内容(比如文件名、数据,文件大小)。如果双方其中一方没有遵守协议,比如A没有按顺序传输内容,导致B接收的不一样,则会导致文件传输出现问题。网络应用程序设计模式:**C/S模式:**客户机(client)/服务器(server)...

2019-04-22 16:10:08 179

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除