随笔分类 -  Linux网络编程

摘要:说明 前面从stackoverflow上找了一篇讲这两个选项的文章,文章内容很长,读到最后对Linux中的这两个选项还是有些迷茫,所以重新写一篇文章来做一个总结; 本文只总结TCP单播部分,并且只讨论该选项的bind()系统调用部分,UDP,组播,开启选项之后数据包的调度等不做讨论; man手册中对 阅读全文
posted @ 2019-10-28 09:45 AlexAlex 阅读(1137) 评论(0) 推荐(0) 编辑
摘要:说明 本文下面内容基本上是截取自stackoverflow,针对这两个选项,在另外一篇文章中做了总结,请移步<Linux TCP套接字选项 之 SO_REUSEADDR && SO_REUSEPORT> 原文部分翻译 基本知识点 TCP/UDP连接是由一个五元组(如下)标识的,不允许存在多个连接具有 阅读全文
posted @ 2019-10-28 08:50 AlexAlex 阅读(710) 评论(0) 推荐(0) 编辑
摘要:listen函数 1 #include <sys/socket.h> 2 3 int listen(int sockfd, int backlog); 4 5 //ret-成功返回0 失败返回-1 listen仅由服务器调用,它做两件事情: (1) 当socket创建一个套接字的时候,它被假设为一个 阅读全文
posted @ 2019-10-27 20:57 AlexAlex 阅读(236) 评论(0) 推荐(0) 编辑
摘要:1. 原始套接字能力: (1) 进程可以读写ICMP,IGMP等分组,如ping程序; (2) 进程可以读写内核不处理协议字段的ipv4数据报;如OSPF等; (3) 进程可以使用IP_HDRINCL套接字选项自行构造ipv4首部; 2. 原始套接字的创建: 开启ip头构造选项: 当选项开启时,我们 阅读全文
posted @ 2016-04-09 16:51 AlexAlex 阅读(3126) 评论(0) 推荐(0) 编辑
摘要:1. 套接字选项函数原型: 2. 通用套接字选项: (1) SO_BROADCAST: 本选项开启或禁止进程发送广播消息的能力;只有数据报套接字支持广播,并且还必须是在支持广播消息的网络上; (2) SO_DEBUG: 本选项仅由TCP支持。当给一个TCP套接字开启本选项,内核将为TCP在该套接字和 阅读全文
posted @ 2016-04-07 15:10 AlexAlex 阅读(2240) 评论(0) 推荐(0) 编辑
摘要:套接字的默认状态是阻塞的,这就意味着当发出一个不能立即完成的套接字调用时,其进程将被投入睡眠,等待响应操作完成,可能阻塞的套接字调用可分为以下四类: (1) 输入操作,包括read,readv,recv,recvfrom,recvmsg; (2) 输出操作,包括write,writev,send,s 阅读全文
posted @ 2016-04-06 10:41 AlexAlex 阅读(9321) 评论(0) 推荐(0) 编辑
摘要:1. connect出错: (1) 若TCP客户端没有收到syn分节的响应,则返回ETIMEOUT错误;调用connect函数时,内核发送一个syn,若无响应则等待6s后再发送一个,若仍然无响应则等待24s后在发送一个,若总共等待75s后仍未收到响应则返回本错误; (2) 若对客户的syn响应是rs 阅读全文
posted @ 2016-04-05 22:06 AlexAlex 阅读(11468) 评论(1) 推荐(1) 编辑
摘要:1. listen函数: listen仅由服务器调用,它做两件事情: (1) 当socket创建一个套接字的时候,它被假设为一个主动套接字,也就是说,它是一个将调用connect发起连接的客户套接字。listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的连接请求;调 阅读全文
posted @ 2016-04-05 11:51 AlexAlex 阅读(2023) 评论(0) 推荐(0) 编辑
摘要:1. connect函数: connect函数是把当前套接字从CLOSED状态转移到SYN_SENT状态,若成功则再转移到ESTABLISHED状态。若connect失败则该套接字不再可用,必须关闭,我们不能对这样的套接字再次调用connect函数。当循环调用connect为给定主机尝试各个ip地址 阅读全文
posted @ 2016-04-05 11:10 AlexAlex 阅读(3960) 评论(0) 推荐(0) 编辑
摘要:如网络编程中accept之后等待数据到达,并且读取数据为例: Reactor: 基于同步IO 1. 线程等待读取socket数据,将socketfd添加到事件分派器中,如添加到epoll; 2. 事件分派器阻塞等待socketfd可读事件发生; 3. 若数据到达,socketfd变成可读状态,事件分 阅读全文
posted @ 2016-03-31 10:21 AlexAlex 阅读(517) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示