TCP/IP
xiaofei0859
这个作者很懒,什么都没留下…
展开
-
TCP/IP协议:connect系统超时连接控制(2)
1.alarm方法http://hi.baidu.com/ppln/blog/item/0523d3090731689d0a7b8200.html#include#include#include#include#include#include#include#include#include#define PORT 1234#define MAXD转载 2016-04-03 08:39:35 · 872 阅读 · 0 评论 -
再次谈谈TCP的Nagle算法与TCP_CORK选项
事件回放使用OpenVPN传输虚拟桌面流量,终端上有明显逐帧刷屏现象,网络环境为百兆局域网。分析1.首先将OpenVPN改为TCP模式,因为局域网环境下TCP和UDP差别不大,不会引起重传叠加问题。TCP的好处在于可以任意蹂躏分析,因为它的算法巨复杂,如果换UDP,太简单了,没啥好调整的;2.分析过程不是本文的目的,直接给结果吧。减小发送/接收缓冲区到MTU的2倍的样子,减小M转载 2016-10-18 14:09:46 · 333 阅读 · 0 评论 -
《TCP/IP详解》读书笔记(20章)-TCP的成块数据流
目前建立在TCP协议上的网络协议特别多,有telnet,ssh,有ftp,有http等等。这些协议又v金金ZGTERRF可以根据数据吞吐量来大致分成两大类:(1)交互数据类型,例如telnet,ssh,这种类型的协议在大多数情况下只是做小流量的数据交换,比如说按一下键盘,回显一些文字等等。(2)数据成块类型,例如ftp,这种类型的协议要求TCP能尽量的运载数据,把数据的吞吐量做到最大,并尽可能的提转载 2016-10-19 09:45:52 · 351 阅读 · 0 评论 -
TCP PUSH
由于发送该数据会清空发送缓冲,所以要加上PUSH标志。(告诉接收者:所有数据已发送,马上送到应用层去。)这里所说的数据包括与此PUSH包一起传输的数据以及之前就为该进程传输过来的数据设置PUSH标志:如果待发送的数据会清空发送缓存,那么栈就会自动为此包设置PUSH标志正在看《tcp/ip详解》8个wrtie,每个写1024的数据,每个都会加上push标志,原因是这么说的转载 2016-10-20 10:32:30 · 1167 阅读 · 0 评论 -
TCP连接关闭—close和shutdown
原文:http://lib.csdn.net/article/computernetworks/17264TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。为方便阅读,我们可以带着以下5个问题来阅读本文:1、当socket被多进程或者多线程共享时,关闭连接时有何区别?2、关连接时,若连接上有来自对端的还未转载 2017-04-14 09:57:22 · 1317 阅读 · 0 评论 -
IM即时通讯实现原理
即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前 者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。而后者是以数 据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。QQ就转载 2017-05-02 12:13:12 · 853 阅读 · 0 评论 -
Linux下的IPC-UNIX Domain Socket
一、 概述UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UDP和TCP,但是面向消息的UNIX Domain S转载 2017-07-05 10:30:27 · 496 阅读 · 0 评论 -
AF_INET域与AF_UNIX域socket通信原理对比
转载:http://blog.csdn.net/sandware/article/details/409234911. AF_INET域socket通信过程典型的TCP/IP四层模型的通信过程。发送方、接收方依赖IP:Port来标识,即将本地的socket绑定到对应的IP端口上,发送数据时,指定对方的IP端口,经过Internet,可以根据此I转载 2017-07-07 09:27:07 · 527 阅读 · 0 评论 -
多队列网卡简介
多队列网卡是一种技术,最初是用来解决网络IO QoS (quality of service)问题的,后来随着网络IO的带宽的不断提升,单核CPU不能完全处满足网卡的需求,通过多队列网卡驱动的支持,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。常见的有Intel的82575、82576,Boardcom的57711等,下面以公司的服务器使用较多的Intel 82575网卡为例,分析转载 2017-07-19 21:45:37 · 674 阅读 · 1 评论 -
connect()函数阻塞和非阻塞问题解决
建立socket后默认connect()函数为阻塞连接状态,在大多数实现中,connect的超时时间在75s至几分钟之间,想要缩短超时时间,可解决问题的两种方法:方法一、将socket句柄设置为非阻塞状态,方法二、采用信号处理函数设置阻塞超时控制。在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未完成转载 2017-08-13 12:46:16 · 13581 阅读 · 3 评论 -
带外数据OOB与紧急模式URG
A,TCP支持带外数据OOB吗?与紧急模式URG有什么关系? TCP支持带外数据,但是只有一个OOB字节,TCP的带外数据是通过紧急模式URG实现的.B,我们知道send(sendfd,"ABC",3,MSG_OOB),将发送3个字节的带外数据OOB数据.但是这里TCP又只支持一个字节的OOB,难道丢掉2个字节? TCP将把紧急模式URG 置位,紧急指针定位第三个字节(转载 2016-10-25 11:01:30 · 1488 阅读 · 0 评论 -
解读TCP 四种定时器
一.TCP的四种定时器TCP使用四种定时器(Timer,也称为“计时器”):重传计时器:Retransmission Timer坚持计时器:Persistent Timer保活计时器:Keeplive Timer时间等待计时器:Time_Wait Timer。 (1)重传计时器:重传定时器:为了控制丢失的报文段或丢弃的报文段,也就是对报文段确认的等待时间转载 2016-10-12 09:58:29 · 14002 阅读 · 0 评论 -
TCP/IP协议:最大报文段长度(MSS)是如何确定的(1)
TCP提供的是一种面向连接的,可靠的字节流服务,TCP提供可靠性的一种重要的方式就是MSS。通过MSS,应用数据被分割成TCP认为最适合发送的数据块,由TCP传递给IP的信息单位称为报文段或段(segment)。代表一个TCP socket的结构体struct tcp_sock中有多个成员用于确定应用数据被分割成最大为多大的数据块较为合适(最大报文段长度MSS)。 我们不难联想到,跟最大转载 2016-04-03 20:57:04 · 13078 阅读 · 0 评论 -
TCP/IP协议:最大传输单元MTU 路径MTU
最大传输单元MTU以太网和8 0 2 . 3对数据帧的长度都有一个限制,其最大值分别是1 5 0 0和1 4 9 2字节。链路层的这个特性称作M T U,最大传输单元。不同类型的网络大多数都有一个上限。如果I P层有一个数据报要传,而且数据的长度比链路层的M T U还大,那么I P层就需要进行分片( f r a g m e n t a t i o n),把数据报分成若干片,这样每一片都原创 2016-04-03 23:42:40 · 28604 阅读 · 1 评论 -
TCP/IP协议:最大报文段长度(MSS)是如何确定的(4)
通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。因为协议数据单元的包头和包尾的长度是固定的,MTU越大,则一个协议数据单元的承载的有效数据就越长,通信效率也越高。MTU越大,传送相同的用户数据所需的数据包个数也越低。转载 2016-04-05 11:13:35 · 4147 阅读 · 0 评论 -
TCP/IP协议:最大报文段长度(MSS)是如何确定的(3)
一.实际使用中的问题用户在使用路由器访问Internet时,经常会反馈不能访问网页(或部分网页)以及使用Outlook收发邮件(这些应用是基于TCP或UDP的),但进行Ping包时没有问题,这时候检查配置时也没有错误。出现这种情况的时候,多半是因为在设备上进行了NAT应用,同时设备对报文进行了分片操作。(没有支持路径MTU;设备没有参与MSS协商;结果TCP协商的MSS大于了设备的MTU-转载 2016-04-04 23:33:28 · 41814 阅读 · 3 评论 -
TCP之深入浅出send和recv
本篇我们用一个测试机上的阻塞socket实例来说明主题。文章中所有图都是在测试系统上现截取的。需要理解的3个概念1. TCP socket的buffer每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区,TCP的全双工的工作模式以及TCP的流量(拥塞)控制便是依赖于这两个独立的buffer以及buffer的填充状态。接收缓冲区把数据缓存入内核,应用进程一直没转载 2016-04-14 23:56:36 · 516 阅读 · 0 评论 -
TCP/IP协议: connect的系统超时控制
在使用TCP的connect连接服务器时,在默认情况下系统使用的是阻塞式socket,如果服务器当前不可用,则connect会等待知道超时时间到达,而这个超时时间是系统内核规定的,并不能使用setSocketOpt来设置,这个函数只能设置send和recv的超时,为了能够随意控制connect的超时时间,可以使用select。大致的过程就是先将socket设置成非阻塞,使用select去轮询套接口转载 2016-04-03 08:27:42 · 4157 阅读 · 0 评论 -
TCP/IP协议:最大报文段长度(MSS)是如何确定的(2)
一旦DF位置一,将不允许中间设备对该报文进行分片,那么在遇到IP报文长度超过中间设备转发接口的MTU值时,该IP报文将会被中间设备丢弃。在丢弃之后,中间设备会向发送方发送ICMP差错报文。为了简单直观的展示这个交互的过程,我做了下面这个图示: 我找了一个实际环境下捕获的ICMP需要分片但DF位置一的差错报文,下图为其解码格式:转载 2016-04-03 23:58:00 · 29333 阅读 · 0 评论 -
TCP/IP协议:最大报文段长度(MSS)是如何确定的(5)RFC 1191 路径MTU发现
1. 简介 2 2. 协议概览 2 3, 主机规范 3 3.1 TCP MSS选项 4 4. 路由器规范 5 5. 主机对老式报文的处理 5 6. 主机实现 6 6.1 分层 7 6.2 存储PMTU信息 7 6.3 清除过时的PMTU信息 8 6.4 TCP层的行为 9 6.5 其它传输协议的问题 10 6.6 管理接口 11 7. 路径MTU转载 2016-04-05 11:35:34 · 3046 阅读 · 0 评论 -
TCP/IP中的TTL
TTL是IP协议包中的一个值,它告诉网络,数据包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器转载 2016-10-12 09:12:12 · 1301 阅读 · 0 评论 -
accept与connect的超时设置
connect超时:我们都知道,connect对应与三次握手中的第一次发送SYN,而对待服务器的ACK,如果服务器没有启动服务器,有些机器会立刻返回一个RST表示服务器拒绝,从而connect失败,但又些服务器为了防止攻击,什么也不发送,直至客户端connect超时,而这一时间又75s,对于客户端来说是不能接收的。所以需要设置connect的超时时间。利用select设置conne转载 2017-08-13 17:49:24 · 1952 阅读 · 0 评论