摘要:一、内容概览 WebSocket的出现,使得浏览器具备了实时双向通信的能力。本文由浅入深,介绍了WebSocket如何建立连接、交换数据的细节,以及数据帧的格式。此外,还简要介绍了针对WebSocket的安全攻击,以及协议是如何抵御类似攻击的。 二、什么是WebSocket HTML5开始提供的一种
阅读全文
随笔分类 - 网络编程
摘要:【并发编程七】进程通信——套接字(socket)_80行代码实现一个聊天软件 一、简介 二、相关知识介绍 1、winsock1.h、winsock2.h 2、如何使用ws2_32.dll 3、WSAStartup() 函数 4、socket 5、bind 5、listen 6、accept 7、co
阅读全文
摘要:对于tcp连接 TIME_WAIT使用建议使用以下优化方式: 1.修改net.ipv4.ip_local_port_range参数,增加客户端端口可用范围。2.或服务器IP,让服务器能容纳足够多的TIME-WAIT状态连接。在我们常见的互联网架构中(NGINX反代跟NGINX,NGINX跟FPM,F
阅读全文
摘要:今天在生产环境遇到了一个奇怪的网络现象,通过抓包发现,SYN包没有ACK。可以ping通,防火墙开放的情况下,基本确定对方服务器问题。首先排除端口是否已经耗尽,发现仍有很多富余那么可能就是linux内核网络参数tcp_tw_recycle捣鬼。登录对方主机发现这个参数的确被设置成1. # sysct
阅读全文
摘要:本文为翻译英文BLOG《Coping with the TCP TIME-WAIT state on busy Linux servers》,但并非完整的翻译,译者CFC4N对原文理解后,进行了调整,增加了相关论点论据,跟原文稍有不同。翻译的目的,是为了加深自己知识点的记忆,以及分享给其他朋友,或许
阅读全文
摘要:首先,问题中描述的65535个连接指的是客户端连接数的限制。 在tcp应用中,server事先在某个固定端口监听,client主动发起连接,经过三路握手后建立tcp连接。那么对单机,其最大并发tcp连接数是多少呢? 如何标识一个TCP连接 在确定最大连接数之前,先来看看系统如何标识一个tcp连接。系
阅读全文
摘要:背景: 笔者负责的一个项目在实时性方面有着较高要求,低延时是一个技术指标,希望能够尽可能减少延迟,来优化服务体验。 所以需要在UDP方面进行一些调研。 而我们的数据协议是建立在可靠网络传输协议之上的,它的数据包之间有一些关联,不允许丢包。 因而将TCP迁移到使用Reliable UDP可能是一个优化
阅读全文
摘要:C:socket相关的sendto()函数简介 http://blog.csdn.net/flytiger_ouc/article/details/19634279 文中提到SOCK_DGRAM, SOCK_STREAM类型套接口 UDP sendto和recvfrom使用详解 比较完整的介绍了ud
阅读全文
摘要:摘要:本文将讨论UDP的并发实现机制。给出了两种实现方法。第一种是最为常见的,TFTP传输的方式。第二种是对UDP进一步封装,以达到并发的可能。主要是采用队列、多线程的方法。后面会给出一个简单的实现例子,以供大家参考。功能方面较为简单,以后会慢慢完善。 众所周知,通常所见的的TCP服务器都是并发实现
阅读全文
摘要:转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28502731&id=3651271 大多数UDP服务器程序是迭代运行的,服务器等待一个客户请求,读入这个请求,处理这个请求,送回其应答,再等待下一个客户请求。 然而当客户请求的处
阅读全文
摘要:一、tcp并发与udp并发的区别 无论是epoll还是select,在观察有无数据就绪时,都是针对多个文件描述符。如果只有一个文件描述符,那么进程只要观察那一个文件描述符即可。在网络编程中,一个Socket对应一个文件描述符。Tcp协议的server在监听端口前初始化一个socket,每有一个新的连
阅读全文
摘要:大多数UDP服务器程序是迭代运行的,服务器等待一个客户请求,读入这个请求,处理这个请求,送回其应答,再等待下一个客户请求。 然而当客户请求的处理需要消耗过长的时间时,我们期望UDP服务器程序具有某种形式的并发性。 当使用TCP时,服务器的并发处理得以简化的根源在于每个客户连接都是唯一的(不同的已连接
阅读全文
摘要:引言 作为文章“《从TCP三次握手说起:浅析TCP协议中的疑难杂症》”的姊妹篇,很早就计划写篇关于UDP的文章,尽管UDP协议远没TCP协议那么庞大、复杂,但是,要想将UDP描述清楚,用好UDP却要比TCP难不少,于是文章从下笔写,到最终写成,断断续续拖了好几个月。 对应系列的上一篇:《告知你不为人
阅读全文
摘要:前言 socket在默认情况下是阻塞状态的,这就使得发送和接受都处于阻塞状态; TCP协议下发送选用send,UDP协议下,发送选用sendto. TCP协议下接收选用recv,UDP协议下,接收选用recvfrom. 一、阻塞模式&&send 假设发送缓冲区大小为4096KB,其中已经使用4000
阅读全文
摘要:首先socket在默认情况下是阻塞状态的,这就使得发送以及接收操作处于阻塞的状态,即调用不会立即返回,而是进入睡眠等待操作完成。下面把讨论点分为发送以及接收。 一.发送选用send(这里特指TCP)以及sendto(这里特指UDP)来描述 首先需要说明的是,不管阻塞还是非阻塞,在发送时都会将数据从应
阅读全文
摘要:【引言】 说到TCP协议,相信大家都比较熟悉了,对于TCP协议总能说个一二三来,但是TCP协议又是一个非常复杂的协议,其中有不少细节点让人头疼。本文就是来说说这些头疼点的,浅谈一些TCP的疑难杂症。那么从哪说起呢?当然是从三次握手和四次挥手说起啦,可能大家都知道TCP是三次交互完成连接的建立,四次交
阅读全文
摘要:WINDOWS下: 所谓双网卡,就是通过软件将双网卡绑定为一个IP地址,这个技术对于许多朋友来说并不陌生,许多高档服务器网卡(例如intel8255x系列、3COM服务器网卡等)都具有多网卡绑定功能,可以通过软硬件设置将两块或者多块网卡绑定在同一个IP 地址上,使用起来就好象在使用一块网卡,多网卡绑
阅读全文
摘要:1.CLOSE_WAIT的简单解决方案 不久前,我的Socket Client程序遇到了一个非常尴尬的错误。它本来应该在一个socket长连接上持续不断地向服务器发送数据,如果socket连接断开,那么程序会自动不断地重试建立连接。 有一天发现程序在不断尝试建立连接,但是总是失败。用netstat查
阅读全文
摘要:在客户端连接7302TCP端口失败,关闭程序,启动sockettool也不行,出现错误号为 10055(发现队列满了或者空间不足)。通过查网上资料,发现有两个方法:设置 ( TcpTimedWaitDelay和MaxUserPort设置 ) 本截图只设置了 MaxUserPort(队列 增加),如果
阅读全文
摘要:问题:60多路轮训的情况下,5分钟之后,现场报链接不上子进程的错误。绝大部分为海康设备 分析: 子进程的日志中 存在输入海康的解码库的错误,在子进程的对外dll中加日志发现,socket链接的时候存在10048(通常每个套接字地址(协议/网络地址/端口)只允许使用一次)的错误。公司重现的情况还存在1
阅读全文