tcp/ip
文章平均质量分 62
le119126
这个作者很懒,什么都没留下…
展开
-
tcp 三次握手和四次挥手
tcp使用的过程,client端,主动连接方叫client。server端,被动接收方叫server。1、TCP先连接(三次握手)client > server:发送SYN aserver > client:回复SYN b,ack a + 1client > server ack b + 1 2、连接通了,双方可以互相收发消息 3、断开连接client转载 2014-09-30 15:53:53 · 411 阅读 · 0 评论 -
epoll EPOLLONESHOT 事件
eppll 即使使用ET模式,一个socket上的某个事件还是可能被触发多次,采用线程城池的方式来处理事件,可能一个socket同时被多个线程处理如果对描述符socket注册了EPOLLONESHOT事件,那么操作系统最多触发其上注册的一个可读、可写或者异常事件,且只触发一次。。想要下次再触发则必须使用epoll_ctl重置该描述符上注册的事件,包括EPOLLONESHOT 事件。例子:原创 2015-06-04 17:20:09 · 6778 阅读 · 2 评论 -
《TCP/IP高效编程》笔记
理解私有地址和NAT私有地址:10.0.0.0~10.255.255.255.255 172.16.0.0~172.31.255.255.255 192.168.0.0~192.168.255.255私有地址与因特网通信一般是NAT(网络地址翻译)支持NAT的设备包括路由器、防火墙和独立NAT设备。大部分NAT设备支持一下三种模式:静态、地址池、PAT-端口地址原创 2015-11-10 17:18:54 · 890 阅读 · 0 评论 -
tcp的关闭(shutdonw、close、SO_LINGER选项)与 连接断开情形判断
1.close只是减少引用计数,只有当引用计数为0的时候,才发送fin,真正关闭连接shutdown不同,只要以SHUT_WR/SHUT_RDWR方式调用即发送FIN包2.对方关闭读,再对其写,写端会收到rst,再写收到sigpipe3.SO_LINGER对shutdown无影响原创 2015-10-21 10:29:35 · 3227 阅读 · 1 评论 -
SO_REUSEADDR和SO_REUSEPORT
http://blog.chinaunix.net/uid-26851094-id-3318435.htmlhttp://blog.chinaunix.net/uid-28587158-id-4006500.htmlSO_REUSEADDR和SO_REUSEPORTSO_REUSEADDR提供如下四个功能:SO_REUSEADDR允许启动一个监听服务器 并捆绑其众所周知端口,即转载 2015-10-21 12:38:23 · 644 阅读 · 0 评论 -
套接字 中 shutdown与close区别
1. int shutdown ( int s , int how )how=0 关闭接收端,unix下会刷新输入队列,丢弃在tcp/ip 栈中的应用程序还未读到的数据,如果还有新数据到来,tcp会进行ACK确认,但是数据也还是会丢弃,反正应用程序将收不到数据,即使已经到达了内核。windows下会重置连接。(套接字 用how=0 shutdown,如果再对他进行读操作,返回EOF)ho原创 2015-06-04 16:53:56 · 1440 阅读 · 2 评论 -
线程进程通知
进程线程的等待通知:pipe :单向socketpair:双向eventfdeventfd 是一个比 pipe 更高效的线程间事件通知机制,一方面它比 pipe 少用一个 file descripor,节省了资源;另一方面,eventfd 的缓冲区管理也简单得多,全部“buffer” 只有定长8 bytes,不像 pipe 那样可能有不定长的真正 buffer。线程转载 2015-03-04 10:50:03 · 770 阅读 · 0 评论 -
linux下UDP编程
1.UDP数据包接收时,应用层的socket的接收buf如果小于到达包的大小,那buf中就只存储可接收的大小,这个包余下数据会被丢弃,再也收不到。2.recvfrom返回0 ,并不代表对方关闭socket,对方可以发送0个长度空包3.如果客户端没有先使用connect设置通信的对方地址 a。那必须使用sendto 、recvfrom b。即使服务器没有开,sendt原创 2015-04-05 21:44:52 · 689 阅读 · 0 评论 -
写sfss时遇到的问题
1.控制输入字符串的长度 fgets(admin,NAME_LENGH,stdin); if(admin[strlen(admin)-1]=='\n') admin[strlen(admin)-1]='\0'; fflush(stdin);//The ANSI/ISO standard specifies that fflush() is useful onl原创 2014-05-14 15:53:56 · 781 阅读 · 0 评论 -
tcp总结
cp tcp出现rst的情况整理 http://www.cnblogs.com/lulu/p/4149562.html正常情况tcp四层握手关闭连接,rst基本都是异常情况,整理如下:1. GFW 2. 对方端口未打开,发生在连接建立 如果对方sync_backlog满了的话,sync简单被丢弃,表现为超时,而不会rst3. c转载 2015-09-09 15:54:42 · 622 阅读 · 0 评论