
Unix网络编程vol1
文章平均质量分 79
春泥面包
这个作者很懒,什么都没留下…
展开
-
UNIX网络编程卷一:第五章 TCP客户/服务器程序实例
POSIX 信号处理信号:1、由一个进程发送给另一个进程。2、由内核发送给某个进程。如SIGCHLD信号就是由内核在任何一个进程终止时,发送给该进程的父进程。每个信号有一个与之关联的处置,或称为行为(action)(信号处理函数)。可以通过sigaction函数设置信号的行为。1)设置信号处理函数这种行为称为捕获信号。但是有两个信号不能被捕获:SIGKILL S原创 2015-08-07 14:54:50 · 720 阅读 · 0 评论 -
UNIX网络编程卷一:第二十章 广播
TCP只支持单播寻址UDP和原始IP还支持其它寻址类型。IPv6中增加了任播方式。广播(broadcastign):用途1: 在本地子网定位一个服务器主机,这种操作成为资源发现。用途2: 在多个客户主机和单个服务器主机通信的局域网环境种尽量减少分组流通, 如: a) ARP : ARP在本地子网上广播一个请求:“IP地址为a.b.c.d的系统亮明身份,告原创 2015-08-17 10:38:38 · 565 阅读 · 0 评论 -
UNIX网络编程卷一:调试工具 tcpdump lsof 总结
1、tcpdump2、lsof1) 查看某个端口被谁占用, 下面的例子是查看谁占用了8888用于TCP连接。lsof -i TCP:8888原创 2015-08-31 14:01:05 · 607 阅读 · 0 评论 -
UNIX网络编程卷一:第八章 I/O UDP
原创 2015-08-10 13:21:56 · 527 阅读 · 0 评论 -
UNIX网络编程卷一:第十七章 ioctl
ioctl函数传统上一直作为不适合归入其它精细定义类别的特性的系统借口。POSIX致力于摆脱ioctl借口,办法是创造新的函数来取代ioctl,例如:Unix终端接口传统上使用ioctl访问,而POSIX为终端创造了12个新函数:tcgetattr tcflush ....但是,ioctl依然保留了不少功能,用于:获取接口信息、访问路由表、访问ARP高速缓存等。网络程序原创 2015-08-17 09:23:56 · 662 阅读 · 0 评论 -
MTU and MSS
原文:http://blog.youkuaiyun.com/hldjf/article/details/7450565MTU: Maxitum Transmission Unit 最大传输单元MSS: Maxitum Segment Size 最大分段大小[分析过程]先 说说这MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切的关系,让我们先仔细回忆一下Ethern转载 2015-09-02 13:35:25 · 622 阅读 · 0 评论 -
UNIX网络编程卷一:第十一章 名字与地址转换
名字和数值地址间的转换函数(IPV4):gethostbynamegethostbyaddr服务名字和端口号之间转换:getservbynamegetservbyport协议无关函数:getaddrinfo : 主机名字和IP之间的转换getnameinfo : 服务名字和端口号实践代码:https://github.com/huntinux/unpv原创 2015-08-11 15:53:28 · 673 阅读 · 0 评论 -
accept: Invalid argument
accept函数出错看看 man 2 accept:NAME accept, accept4 - accept a connection on a socketSYNOPSIS #include /* See NOTES */ #include int accept(int sockfd, struct s原创 2015-08-07 11:09:52 · 1595 阅读 · 0 评论 -
MTU和MSS
原文: http://blog.youkuaiyun.com/yaneng/article/details/4294943如何修改MSS值,改它有啥用?先说一段废话。。MTU与MSS值到底设置为多少?MTU: Maxitum Transmission Unit 最大传输单元MSS: Maxitum Segment Size 最大分段大小PPPoE: PPP Over转载 2016-01-15 16:27:29 · 611 阅读 · 0 评论 -
Linux下的I/O复用与epoll详解 - junren
原文:http://www.tuicool.com/articles/BrQjIj前言I/O多路复用有很多种实现。在linux上,2.4内核前主要是select和poll,自Linux 2.6内核正式引入epoll以来,epoll已经成为了目前实现高性能网络服务器的必备技术。尽管他们的使用方法不尽相同,但是本质上却没有什么区别。本文将重点探讨将放在EPOLL的实现与使用详解。转载 2016-02-16 15:56:55 · 597 阅读 · 0 评论 -
setsockopt中参数之SO_REUSEADDR的意义(转)
http://www.cnblogs.com/qq78292959/archive/2013/01/18/2865926.html1、一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用。 SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。server程转载 2016-02-25 09:55:18 · 807 阅读 · 0 评论 -
linux send与recv函数详解
原文: http://www.cnblogs.com/blankqdb/archive/2012/08/30/2663859.html1 #include 2 ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);3 ssize_t send(int sockfd, const void *转载 2016-05-05 14:04:23 · 2120 阅读 · 0 评论 -
非阻塞connect
预备知识套接字默认是阻塞的,那么使用阻塞的套接字进行connect时自然会阻塞当前的程序流。TODO:阻塞的connect最长会阻塞会阻塞多长时间?connect、accept与三次握手的关系图:非阻塞connect该怎么写 非阻塞的套接字通常与IO-multiplexing结合使用。创建non-block的socket使用connnect进行连接 判断connect的返回值r。分为三种情况原创 2017-01-15 11:14:37 · 772 阅读 · 0 评论 -
epoll
www.cnblogs.com/haippy/archive/2012/01/09/2317269.htmlwww.cppblog.com/converse/archive/2008/10/12/63836.html转载 2015-07-20 11:33:56 · 915 阅读 · 0 评论 -
UNIX网络编程卷一:第四章 基本TCP套接字编程
客户端在调用connect前,不必非得调用bind,因为如果需要的话,内核会确定源IP地址,并选择一个临时端口作为源端口。如果是TCP套接字,调用connect会激发TCP的“三次握手”。listen调用listen后的套接字,称为监听套接字,listen把一个未连接的套接字转换成一个被动套接字,指示内核应接受指向该套接字的连接请求。内核为监听套接字维护两个队列原创 2015-08-03 19:52:48 · 787 阅读 · 0 评论 -
UNIX网络编程卷一:第二十一章 多播
单播、广播、多播。从名字上就可以看出区别。单播和广播时寻址方案的两个极端(要么单个要么全部),多播是一个折中方案。多播数据报只应该由对它感兴趣的接口接收。此外,广播局限于局域网,而多播既可以用于局域网,也可用于广域网。多播地址IPv4的D类地址224.0.0.0 ~ 239.255.255.255 是IPv4的多播地址。D类地址的低28位构成多播组ID。原创 2015-08-17 10:48:09 · 434 阅读 · 0 评论 -
UNIX网络编程卷一:第三十章 客户/服务器程序设计范式
本章介绍了9种,服务器设计范式。代码总结: https://github.com/huntinux/unpvol1/tree/master/30chp原创 2015-08-31 10:55:08 · 681 阅读 · 0 评论 -
UNIX网络编程卷一:第六章 I/O 复用 select, poll
什么时候使用?当需要同时处理多个描述符时,需要使用I/O复用。Unix下可用的5种I/O模型1、阻塞I/O2、非阻塞I/O3、I/O复用 (select poll)4、信号驱动I/O (SIGIO)5、异步I/O (POSIX的aio_系列函数)一个输入操作通常包括两个不同的阶段:1、等待数据准备好 (等待数据从网络中原创 2015-08-10 10:53:03 · 721 阅读 · 0 评论 -
UNIX网络编程卷一:第二十六章 线程
malloc和free是不可重入函数。在主线程处于这两个函数之一的内部处理期间,从某个信号处理函数种调用这两个函数之一可能造成灾难性后果。这是因为这两个函数操纵了相同的静态数据结构。原创 2015-08-17 11:21:18 · 504 阅读 · 0 评论 -
UNIX网络编程卷一:第十三章 守护进程和inetd超级服务器
守护进程(daemon)是在后台运行且不与任何控制终端关联的进程。因为它们通常由系统初始化脚本启动。守护进程有多种启动方式:1、由系统初始化脚本启动。 如inetd, Web2、由inetd超级服务器启动。inetd监听网络请求,当有一个请求到达时,启动相应的实际服务器(Telnet, FTP等)3、cron守护进程按照规则定期执行一些程序。这些程序也作为daemon运原创 2015-08-11 16:50:25 · 526 阅读 · 0 评论 -
UNIX网络编程卷一:第十四章 高级I/O
高级I/O可设置超时时间read和write的三个变体: 1) recv send : 通过第四个参数从进程到内核传递标志 2) readv writev : 允许指定往其中输入数据或从其中输出数据的缓冲区向量. 3) recvmsg sendmsg: 结合了其他I/O函数的所有特性,并具备接收和发送辅助数据的新能力.套接字超时在套接字I/O原创 2015-08-12 10:01:13 · 537 阅读 · 0 评论 -
UNIX网络编程卷一:第十五章 Unix域套接字
Unix域协议它并不是一个实际的协议族,而是在单个主机上执行客户/服务器通信的一种方法.在UNPvol2--IPC(进程间通信)中,Unix域协议可以当作一种IPC方法.Unix域提供两类套接字:1) 字节流套接字 (类似TCP)2) 数据报套接字 (类似UDP)为什么使用Unix域套接字?1) 当通信两端位于同一主机上时,Unix域套接字要快.2) 可原创 2015-08-12 14:58:27 · 596 阅读 · 0 评论 -
linux 网络编程-基础篇
原文: www.cnblogs.com/lr-ting/archive/2012/08/24/2652482.html#Socket简介是一个编程接口是一种特殊的文件描述符(everything in Unix is a file)并不仅限于TCPIP协议面向连接(Transmission Control Protocol - TCPIP)无连接(User转载 2015-07-20 12:48:16 · 570 阅读 · 0 评论 -
UNIX网络编程卷一:第十六章 非阻塞I/O
套接字的默认状态是阻塞的。当发出一个套接字调用,但是不能立即完成时,该进程被投入睡眠。可阻塞的套接字调用有4类:1)输入操作 read readv recv recvfrom recvmsg 某进程对一个阻塞的TCP套接字调用这些输入函数,并且该套接字的接受缓冲区种没有数据可读,该进程被投入睡眠,直到有一些数据到达。 因为TCP是字节流协议,该进程的原创 2015-08-13 10:12:41 · 567 阅读 · 0 评论 -
UNIX网络编程卷一:第一章 简单的客户端服务器程序
代码#include #include #include #include // exit#include // socketaddr_in #include // bzero#include // inet_pton#include // read#define MAXLINE 4096 /* max text原创 2015-07-21 18:04:42 · 648 阅读 · 0 评论 -
TCP协议中的三次握手和四次挥手(图解)
原文:建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:转载 2015-07-22 11:04:03 · 468 阅读 · 0 评论 -
UNIX网络编程卷一:第三章 套接字编程简介
套接字地址结构该结构在两个方向上传递:从进程到内核和从内核到进程。适用于IPV4的地址转换函数为:inet_addr、inet_ntoa适用于IPV4和IPV6的地址转换函数:inet_pton, inet_ntop每个协议族都定义它自己的套接字地址结构,它们均以sockaddr_开头,并以协议族的唯一后缀结尾。如IPV4套接字地址结构同城称为:“网际套接字地址结构”,它的名字原创 2015-07-29 08:51:01 · 800 阅读 · 0 评论 -
UNIX网络编程卷一:第二章 传输层:TCP、UDP
TCP(Transmission Control Protocol) 传输控制协议,是一个复杂、可靠到字节流协议。面向连接的协议,为用户进程提供可靠的全双工字节流。TCP关心确认、超时和重传之类的细节。UDP(User Datagram socket)一个简单的、不可靠的数据报协议。无连接协议,不能保证最终到达目的地。UDP应用进程往一个UDP套接字写入一个消息,该消息原创 2015-07-22 14:26:56 · 743 阅读 · 0 评论 -
raw socket in linux
0 前言 http://www.binarytides.com/raw-sockets-c-code-linux/ In normal sockets when any data is send over the network, the kernel of the operating system adds some headers to it like IP header and翻译 2017-06-28 13:52:44 · 919 阅读 · 0 评论