绑定特殊 IP 之 0.0.0.0 的内部工作原理
大家好,我是飞哥!前段时间有位读者提了个问题,:“服务器端监听 0.0.0.0 的内部是咋样的?”大家可能也在 nginx、redis 等 server 的配置文件中见过 bind 的时候不用真实的 IP,而使用 0.0.0.0 的情况。我觉得这个问题提的很不错,弄懂这个实现过程很有利于大家理...
大家好,我是飞哥!前段时间有位读者提了个问题,:“服务器端监听 0.0.0.0 的内部是咋样的?”大家可能也在 nginx、redis 等 server 的配置文件中见过 bind 的时候不用真实的 IP,而使用 0.0.0.0 的情况。我觉得这个问题提的很不错,弄懂这个实现过程很有利于大家理...
大家好,我是飞哥!开篇我先考大家一个小问题,如果你的服务器上已经有个进程在 listen 6000 这个端口号了。那么该服务器上其它进程是否还能 bind 和 listen 该端口呢?我相信一定会有一部分同学会答说是不能的。因为很多人都遇到过“Address already in use”这个...
大家好,我是飞哥。大家都知道,在创建一个服务器程序的时候,需要先 listen 一下,然后才能接收客户端的请求。例如下面的这段代码我们再熟悉不过了。int main(int argc, char const *argv[]) { int fd = socket(AF_INET, SOC...
大家好,我是飞哥!在单进程的网络编程模型中。所有的网络相关的动作都是在一个进程里完成的,如监听 socket 的创建, bind、listen。再比如 epoll 的创建、要监听事件的添加,以及 epoll_wait 等待时间发生。这些统统都是在一个进程里搞定。一个客户端和使用了 epoll ...
大家好,我是飞哥!我在前面的几篇文章中分享了 Redis、Nginx 的网络模块内部实现原理。今天我就再带大家来了解一下 Netty 的网络内部实现。单线程 Redis 如何做到每秒数万 QPS 的超高处理能力!Redis 6 中的多线程实现方式比我预期的要差万字多图,搞懂 Nginx 高性能...