
网络通信
MyObject-C
从事于游戏、广告、推荐、金融交易相关后台开发
展开
-
三次握手四次挥手状态变化
相对于SOCKET开发者,TCP...原创 2014-11-20 15:11:56 · 492 阅读 · 0 评论 -
网卡中断与软中断
查看命令1. mpstat -P ALL 1 或 mpstat -I SUM -P ALL 1(有的机器得用这个命令),2. sar -n DEV 1 显示 网络读写发生在eth13. cat /proc/interrupts | grep eth1 通过这个可以查看网卡队列数目,也可以查看哪个cpu占用的软中断4.top命令查看Cpu(s): 0...转载 2018-09-26 16:10:33 · 8458 阅读 · 0 评论 -
tcp的可靠性表现在哪里
TCP提供一种面向连接的、可靠的字节流服务。 面向连接:意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。 TCP通过下列方式来提供可靠性:1、应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。 ...转载 2018-09-07 15:42:30 · 1142 阅读 · 0 评论 -
rdma介绍
RDMA技术最早出现在Infiniband网络,用于HPC高性能计算集群的互联。传统的基于Socket套接字(TCP/IP协议栈)的网络通信,需要经过操作系统软件协议栈,数据在系统DRAM、处理器Cache和网卡Buffer之间来回拷贝搬移,因此占用了大量的CPU计算资源和内存总线带宽,也加大了网络延时。举例来说,40Gbps的TCP/IP流能耗尽主流服务器的所有CPU资源;RDMA则解决了传统T...转载 2018-08-30 15:27:56 · 3125 阅读 · 1 评论 -
网络传输基本概念
概念介绍主要参考UNIX网络编程。(1)数据报大小IPv4的数据报最大大小是65535字节,包括IPv4首部。因为首部中说明大小的字段为16位。IPv6的数据报最大大小是65575字节,包括40字节的IPv6首部。同样是展16位,但是IPv6首部大小不算在里面,所以总大小比IPv4大一个首部(40字节)。(2)MTU许多网络有一个可由硬件规定的MTU。以太网的MTU为1500字节...原创 2018-08-08 10:38:49 · 4480 阅读 · 0 评论 -
udp网络测试
在Linux 上,编写一个每秒接收 100万UDP数据包的程序究竟有多难?丢包检查方法给每个UDP包编号,对比收发端的接收到的包。对于UDP协议层上的包,例如RTP包,可以从RTP包中读出包的序列号进行判断。 抓包。发送端和接收端分别抓包。linux下可以使用tcpdump,windows下使用wireshark。 第三种就是下面介绍的,通过查看系统的一些配置和使用命令来查问题的方法啦...转载 2018-08-08 10:34:45 · 14513 阅读 · 0 评论 -
TIME_WAIT补充
你遇到过TIME_WAIT的问题吗? 我相信很多都遇到过这个问题。一旦有用户在喊:网络变慢了。第一件事情就是,netstat -a | grep TIME_WAIT | wc -l 一下。哎呀妈呀,几千个TIME_WAIT. 然后,做的第一件事情就是:打开Google或者Bing,输入关键词:too many time wait。一定能找到解决方案,而排在最前面或者被很多人到处转载...转载 2018-06-14 16:42:03 · 181 阅读 · 0 评论 -
TIME_WAIT状态
TIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的。仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT。服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么你才有可能需要关注这个TIMEWAIT状态过多的问题。如果你的服务器设计为被动关闭,那么你首先要关注的是CLOSE_WAIT。 ...转载 2018-03-03 20:24:11 · 276 阅读 · 0 评论 -
EWOULDBLOCK网络可调参数
send返回值http://blog.youkuaiyun.com/anghlq/article/details/5990513 在Unix系统下,如果send 、 recv 、 write在等待协议传送数据时 , socket 被 shutdown,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。 此种情况 应用就很难查 出 处理进程为什么退出。...转载 2018-03-03 18:22:37 · 2661 阅读 · 0 评论 -
IO模型
阻塞和非阻塞读本质来说其实不能是读,在实际中, 具体的接收数据不是由这些调用来进行,是由于系统底层自动完成的,read也好,recv也好只负责把数据从底层缓冲copy到我们指定的位置. 对于读来说(read, 或者 recv) ,在阻塞条件下如果没有发现数据在网络缓冲中会一直等待,当发现有数据的时候会把数据读到用户指定的缓冲区,但是如果这个时候读到的数据量比较少,比参数中指定的长度要小,rea转载 2017-12-06 19:22:00 · 606 阅读 · 0 评论 -
粘包问题
1 什么是粘包现象 TCP粘包是指发送方发送的若干包数据到接收方接收时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。2 为什么出现粘包现象 (1)发送方原因 我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到确认,才会发送下一个分组;2)收集多个小分组,在一个确认到来时一起发送。 所以,正是Nagle算法造成了...转载 2017-11-27 16:49:38 · 319 阅读 · 0 评论 -
什么是epoll
什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。epoll的相关系统...原创 2015-08-19 14:35:59 · 691 阅读 · 0 评论 -
TCP_NODELAY与TCP_CORK选项
在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个算法来尝试解决福特汽车公司的网络拥塞问题(RFC 896),该问题的具体描述是:如果我们的应用程序一次产生1个字节的数据,而这个1个字节数据又以网络数据包的形式发送到远端服务器,那么就很容易导致网络由于...转载 2017-09-15 11:25:29 · 674 阅读 · 0 评论 -
TCP关闭
以下描述主要是针对windows平台下的TCP socket而言。首先需要区分一下关闭socket和关闭TCP连接的区别,关闭TCP连接是指TCP协议层的东西,就是两个TCP端之间交换了一些协议包(FIN,RST等),具体的交换过程可以看TCP协议,这里不详细描述了。而关闭socket是指关闭用户应用程序中的socket句柄,释放相关资源。但是当用户关闭socket句柄时会隐含的触发TCP转载 2014-12-05 18:01:54 · 865 阅读 · 0 评论 -
数据传输方式
环境限定:TCP/IP下的socket网络传输;C/C++开发语言,32/64位机。目前有两种方式对数据进行传输:1)字符流形式,即将数据用字符串表示;2)结构型方式,即将数据按类型直接传输。1)的方式保证所有的数据都是清晰的字符串明文,没有平台不一致问题,但传输的数据不定长,复合数据类型(如struct)的解析不方便。2)的方式保证数据长度固定/可控,方便对接受到数据的解析;但前提是要...转载 2014-10-27 19:52:28 · 682 阅读 · 0 评论 -
setsockop使用介绍
setsockopt 设置socketgetsockopt 和 setsockopt获得套接口选项:int getsockopt ( int sockfd, int level, int optname, void * optval, socklen_t *opteln ) 设置套接口选项:int setsockopt ( int sockfd, int level, int optna...转载 2014-10-09 17:57:01 · 1217 阅读 · 0 评论 -
rtp、udp、tcp协议介绍
OSI七层模型OSI 中的层 功能 TCP/IP协议族 应 用层 文件传输,电子邮件,文件服务,虚拟终 端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 表示层 ...转载 2018-12-18 15:03:39 · 1935 阅读 · 0 评论