自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

网络安全

积一时之跬步,臻千里之遥程

  • 博客(14)
  • 资源 (5)
  • 收藏
  • 关注

原创 16-基于udp的客户端/服务端通信

1. 使用udp协议通信在此之前,我们基于TCP的客户端/服务端通信示例是有连接方式的,客户端会先调用connect发起连接,当两端tcp连接建立完成,然后服务端调用accept接受客户端的连接,通过套接字开始通信。UDP协议是无连接且不可靠的,没有被动套接字和主动套接字之分,客户端和服务端之间通信不需要提前建立好连接,而是直接调用sendto或recvfrom函数收发数据,如下图所示:...

2018-10-22 11:15:11 1167

原创 15-SO_RCVBUF和SO_SNDBUF套接字选项

1. 套接字缓冲区对于tcp协议来说,客户端和服务端在建立tcp连接的时候,双方会通告自己的接收窗口大小(告诉对方自己能接收的数据大小),然后双方就会根据接收窗口来调整自己的发送窗口大小。如果你已经忘的差不多了,请参考: 19-tcp连接建立 , 如果你完全看不明白请参考:tcp/ip协议学习目录,结合《tcp/ip详解卷一》把tcp协议系统的学一遍,正所谓万丈高楼平地起,想要建一座高楼大...

2018-10-14 00:12:36 1265

原创 14-改写tcp服务器

1. 使用select改写tcp服务器在此之前,回顾一下多进程并发型服务器通信过程,并发型服务器的做法是针对每一个客户端请求,服务器的父进程就fork创建一个子进程来处理客户端的请求。如果有大量的客户端请求的话,那么服务器也需要创建大量的子进程来处理请求,这将会消耗服务器大量的系统资源。 因此我们可以使用select改写tcp服务器,通过select来处理多个客户端的请求,具体处理过程...

2018-10-13 16:05:57 391

原创 数据结构基础心法

根据数据结构学习目录整理而成的知识图谱,还需完善。 

2018-10-09 22:26:57 419

原创 13-select重写客户端和tcp优雅关闭

在阅读此篇之前,请先看完第11篇的一小节,传送门:11-服务端进程终止和SIGPIPE信号1. 服务器进程终止的问题在第11篇中的第1小节中,tcp客户端需要同时处理两个输入:标准输入和tcp套接字,tcp客户端代码如下所示://循环读写数据while (1) { //tcp客户端阻塞于fgets上 fgets(buf, siz...

2018-10-09 22:19:53 1462 2

原创 46-内存映射的保护和同步

1.保护权限mmap函数的prot参数可指定内存映射区的保护权限,例如指定PROT_READ和PROT_EXEC,在调用open打开文件就应该指定O_RDONLY或者O_RDWR。如果指定了PROT_WRITE,打开的文件应该使用O_WRONLY或者O_RDWR。因为有些硬件的架构实现有些不同,所以对于保护权限还是有区别的:1. 一般打开文件指定O_RDWR标记就已经满足基本的...

2018-10-06 13:39:21 1248

原创 45-内存映射的陷阱

       本篇将介绍内存映射过程中的一些系统分页边界陷阱,可助你打通任督二脉,掌握内存映射基本的使用和出错处理。 1. 第一种情况之前有说过在调用mmap函数创建内存映射时,建议指定参数length最好是系统内存分页的整数倍,虽然这并不是强制的,但这么做当然是有原因的,如果参数length恰好是系统内存分页的整数倍,那么内存映射区和文件映射区范围恰好是一样的。我们来看一个mma...

2018-10-06 09:34:38 546

原创 44-共享文件映射

1. 文件映射内存映射主要分两种:文件映射和匿名映射。上一篇讲的就是文件映射,一般创建文件映射需要以下几个步骤:1. 调用open函数打开一个文件,获得其文件描述符2. 将文件描述符作为mmap函数的参数传入 执行完以上步骤后,mmap函数会将文件映射到进程空间中,如果不需要用到文件描述符可以调用close关闭。在创建文件...

2018-10-05 17:53:53 1034

原创 43-初窥内存映射mmap

1. 文件通信如果你已经完成了进程间通信的学习,相信你对进程间通信已经有了一个初步的了解。由于进程之间是相互独立的,不能相互访问,进程之间想要通信必须借助内核空间,因为内核空间对于进程之间是共享的。像这样的进程间通信的方式有很多种,例如管道、信号、共享内存、消息队列、套接字、命名管道等,在linux早期是使用文件来完成进程间通信的。对于文件通信,本质上也是通过内核空间来完成的。首先系统...

2018-10-04 19:51:10 500

原创 42-使用flock文件锁

1. flock函数flock函数是专门用于实现对文件加锁的,与fcntl不同的是,flock系统调用最初是源自BSD的,而fcntl则是源自System V,flock是对整个文件进行加锁,而fcntl不仅可以对整个文件加锁,还可以对文件部分区域加锁,更加具有灵活性。 flock - apply or remove an advisory lock on an open file...

2018-10-03 16:04:47 1921 4

原创 44-http协议

参考资料:《Web性能权威指南》《HTTP权威指南》1. http协议概述http协议全称为超文本传输协议(HTTP,HyperText Transfer Protocol),是基于tcp协议的一个应用层协议,主要定义web浏览器和web服务器之间交换数据的过程以及数据的格式。经过不断地发展,现在http协议不仅成为了浏览器使用的通信协议,而且还成为了大部分的互联网软...

2018-10-02 20:51:13 1504

原创 41-fcntl设置文件锁

1. 文件锁当多个进程打开同一文件进行读写时可能会出现数据混乱的问题,原因在于进程间共享同一文件读写指针位置,也就是f_pos(关于f_pos参考:4-文件描述符与打开的文件之间的关系的第三小节file结构体)。解决这个问题的方法有很多,比如可以使用信号量完成进程同步,但通常使用文件锁会更好一些,因为内核会将锁跟文件关联起来,这就需要借助fcntl函数来实现对一个文件进行加锁。只有拿到锁的...

2018-10-02 14:28:01 1755

原创 40-System V——信号量的细节问题

1. 多个进程操作信号量假设此时有多个进程在请求信号量发生阻塞时,且每个进程请求信号量减去的值都是一样的,那么到底哪个进程能继续执行是不确定的,这取决于调度算法。如果在阻塞的进程中,每个进程请求信号量减去的值都是不一样的,那么则会按照先满足条件的先执行的顺序进行。例如此时有A和B两个进程阻塞,当前信号量的值为0,A进程请求将信号量值减去2,B进程请求将信号量减去1,当C进程请求将信号量加1...

2018-10-01 22:49:47 478

原创 39-System V——信号量

1. 什么是信号量   前面学过的System V IPC两种进程通信方式:共享内存和消息队列都是用于在进程间对共享区域的数据的交换传递来实现进程间通信,如果有多个进程同时向共享内存写数据可能就会出现数据混乱的问题。   信号量也是System V IPC的一种通信方式,和其他IPC方式不同的是,信号量主要是为了防止多个进程间访问共享数据时,产生竞争等一系列问题,信号量就是用来进程同步的。...

2018-10-01 20:57:29 511

evidence01.zip

《wireshark网络安全分析——使用wireshark进行网络取证》实验中用到的pacp数据包文件

2020-03-23

http_with_jpegs.cap.gz

《wireshark网络安全分析——使用wireshark进行网络取证》实验中用到的pacp数据包文件

2020-03-21

计算机网络思维导图

根据计算机网络学习目录整理而成的知识图谱,由思维导图梳理后,看上去果然好多了,对于计算机网络的每一层基本上有了清晰的认识,帮助大家学习和理解计算机网络的每一层的功能和之间的联系

2019-01-10

内存映射I/O大文件性能测试代码

内存映射I/O的读写性能测试,以内存映射I/O和和系统调用write写500M文件为例

2018-10-05

tcpip详解卷一第二版

tcpip详解卷一的第2版,相对于第一版来说第二版采用了wireshark进行抓包,不管是对于做网络开发还是网络技术的同学来说,都是值得一看的

2018-06-01

空空如也

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

TA关注的人

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