
网络编程
骑着山猫的平头哥
一个普通的视频监控从业者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
非阻塞socket编程
转自:http://blog.csdn.net/okiwilldoit/article/details/51015444 一. 阻塞与非阻塞 阻塞: 阻塞调用是指调用结果返回之前,当前线程会被挂起。该进程被标记为睡眠状态并被调度出去。函数只有在得到结果之后才会返回。当socket工作在阻塞模式的时候, 如果没有数据的情况下调用该函数,则当前线程就会被挂起,直到有数据为止。转载 2018-01-11 22:42:27 · 290 阅读 · 0 评论 -
关于POLL检测对端关闭连接----《Linux高性能服务器编程》读书笔记
POLL检测对端关闭连接有两种方法:1)触发POLLIN事件,recv调用返回02)触发POLLRDHUP事件其中POLLRDHUP 需要2.6.17以上内核,而且代码最开始处定义_GNU_SOURCE,实际上测试不定义也行。测试代码如下:聊天室服务器代码//#define _GNU_SOURCE 1 #include <sys/types.h> #include <sys/so...原创 2018-04-05 21:35:02 · 1553 阅读 · 0 评论 -
你所不知道的TIME_WAIT和CLOSE_WAIT
转自:http://mp.weixin.qq.com/s/y-7X7juYhcgnPN4AchtrmA本文针对对TCP/IP协议有所了解,至少入门的同学。如果你连TCP/IP协议是啥,或者只听到过名字,那看起来会很吃力。你遇到过TIME_WAIT的问题吗我相信很多都遇到过这个问题。一旦有用户在喊:网络变慢了。第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一...转载 2018-04-18 09:45:26 · 246 阅读 · 0 评论 -
listen函数与TCP连接建立过程的关系
listen函数与TCP连接建立过程的关系 TCP服务端程序创建过程:建立监听socket,通过bind绑定到服务地址和端口后,调用listen开始监听服务端口。这时在操作系统内核会建立SYN队列(未完成握手队列)和ACCEPT队列(已完成握手队列),队列长度由listen函数backlog参数指定。客户端调用connect向服务端发起建立TCP连接,服务端处理步骤如下:1) 客户端发SYN包到服...原创 2018-04-11 12:11:28 · 755 阅读 · 0 评论 -
产生复位报文的3种情况----《Linux高性能服务器编程》读书笔记
在某些特殊条件下, TCP连接的一端会向另一端发送携带RST标志的报文段,即复位报文。产生RST的三种情况:1)访问不存在的端口.当客户端程序连接一个不存在的端口时,目标主机会发送一个RST报文,RST报文接收通告窗口大小为0,客户端不能应答该报文,应该关闭连接或从新连接。当服务端某端口处于TIME_WAIT状态时,客户端尝试连接时也会受到RST.2) 异常终止连接TCP提供异常终止一个连接的方法...原创 2018-03-27 11:34:00 · 301 阅读 · 0 评论 -
TIME_WAIT状态存在的原因 ---- 《Linux高性能服务器编程》读书笔记
客户端在接受到服务器的结束报文(FIN)后,不会直接进入CLOSE状态,而是转移到TIME_WAIT状态。这个状态客户端连接要等待一段长为2MSL时间,才能完全关闭。MSL是TCP报文段在网络中的最大生存时间,RFC文档建议2min。TIME_WAIT状态存在的原因有2点:1)可靠地终止TCP连接。2)保证让迟来的TCP报文段有足够的时间被识别并丢弃。第一点很好理解,2端关闭过程都有发起(FIN)...原创 2018-03-27 10:39:00 · 219 阅读 · 0 评论 -
之前对listen、accpet函数理解误区----《Linux高性能服务器编程》读书笔记
以前一直以为TCP建立连接3次握手过程服务端是对应accept函数调用,看了《Linux高性能服务器编程》才发现以前理解有误。服务端建立了监听端口就可以接受客户端连接。服务端调用listen函数来创建一个监听队列以存放待处理的客户连接。其中第二个参数backlog表示内核监听队列最大长度,也就是完全连接状态(established)的socket上限,实际上是backlog+1。#incl...原创 2018-03-29 21:59:48 · 404 阅读 · 0 评论 -
TCP之深入浅出send和recv
转自:http://blog.chinaunix.net/uid-29075379-id-3921527.html需要理解的3个概念1. TCP socket的buffer每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没有调...转载 2018-03-06 08:37:49 · 206 阅读 · 0 评论 -
tcp窗口滑动以及拥塞控制
转自:http://blog.chinaunix.net/uid-26275986-id-4109679.htmlTCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议 关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。 所谓滑动窗口协...转载 2018-03-01 22:42:08 · 175 阅读 · 0 评论 -
半同步/半异步和领导者/追随者 有趣的解释
转自:http://blog.csdn.net/jinchaoh/article/details/50427733这不仅仅两个山贼的故事!先介绍下关系:下面开始讲故事:1、领导者/追随者模型:故事:话说一个地方有一群有组织无纪律的人从事山贼这个很有前途的职业。一般就是有一个山贼在山路口察看,其他人在林子里面睡觉。假如发现有落单的过往客商,望风的山贼就会弄醒一个睡觉的山贼,然后自己去打劫。醒来的山贼...转载 2018-02-28 15:30:56 · 310 阅读 · 0 评论 -
聊聊HTTPS和SSL/TLS协议
转自:http://www.techug.com/post/https-ssl-tls.html 要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识。 1. 大致了解几个基本术语(HTTPS、SSL、TLS)的含义 2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接”) 3. 大致了解加密算法的概念(尤其是“对称加密与非对称加密”的区别) 4.转载 2018-01-13 09:19:00 · 267 阅读 · 0 评论 -
从服务端多进程模型理解TCP连接
前面写了二篇关于TCP连接建立与listen(),accept()函数调用关系的文章:之前对listen、accpet函数理解误区----《Linux高性能服务器编程》读书笔记listen函数与TCP连接建立过程的关系今天再补充下多进程模型服务端程序TCP连接建立过程,服务端代码:#include <stdio.h> #include <unistd.h> #include...原创 2018-04-13 14:10:04 · 547 阅读 · 0 评论