![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机基础
文章平均质量分 76
一江溪水
这个作者很懒,什么都没留下…
展开
-
select、poll和epoll的区别
进程所能打开的最大连接数select单个进程所能打开的最大连接数有FD_ SETSIZE宏定义, 其大小是32个整数的大小(在32位的机器上,大小就是3232,同理64位机器上FD_ SETSIZE为3264)tips:我们可以对进行修改,然后重新编译内核,但是性能可能会受到影响,这需要进一步的测试。pollpoll本质上和select没有区别,但是它没有最大连接数的限制,原因是它是基于链表来存储的epoll虽然连接数有上限,但是很大,1G内存的机器上可以打开10万左右的连接,2G内存的机器可原创 2021-11-06 19:54:41 · 3371 阅读 · 1 评论 -
IO多路复用
概述IO多路复用是一种同步IO模型,实现一个线程可以监视多个文件句柄一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作;没有文件句柄就绪时会阻塞应用程序,交出cpu;多路是指网络连接,复用指的是同一个线程。三种实现方式select时间复杂度O(n),它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差原创 2021-11-06 15:50:24 · 166 阅读 · 0 评论 -
TCP的粘包和拆包
什么是粘包和拆包一个完整的业务数据包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和粘包问题。第一种情况(正常)接收端正常收到两个数据包,即没有发生拆包和粘包的现象;第二种情况接收端只收到一个数据包,由于TCP是不会出现丢包的,所以这一个数据包中包含了发送端发送的两个数据包的信息,这种现象即为粘包。这种情况由于接收端不知道这两个数据包的界限,所以对于接收端来说很难处理。第三种情况接收端收到了两个数据包,但是这两个数据包要么是不完整的原创 2021-10-13 22:25:47 · 907 阅读 · 0 评论 -
TCP三次握手和四次挥手
概念SYN-(Synchronize Sequence Numbers)同步序列编号。是TCP/IP建立连接时使用的握手信号。在客户机和服务器之间建立TCP连接时,首先会发送的一个信号。客户端在接受到SYN消息时,就会在自己的段内生成一个随机值seq=x。ACK-(Acknowledge character)确认字符,表示发来的数据已确认接收无误。最后,客户端将ACK发送给服务器。序列号被设置为所接收的确认值即Y + 1。SYN-ACK服务器收到SYN后,打开客户端连接,发送一个SYN原创 2021-09-05 15:11:04 · 185 阅读 · 0 评论