z**r 发帖数: 17771 | 1 did a quick search
http://stackoverflow.com/questions/281606/why-does-udp-have-a-l
There is a 96 bit pseudo header conceptually prefixed to the TCP header that
contains the information already.
The checksum field description from this source gives the answer:
Checksum: 16 bits
The checksum field is the 16 bit one's complement of the one's complemen
t sum of all 16 bit words in the header and text. If a segment contains an o
dd number of header and text octets to be checksummed, the last ... 阅读全帖 |
|
r*****3 发帖数: 143 | 2 中文名: TCP/IP协议族
原名: TCP/IP Protocol Suite
作者: Foruzan
Ghorbani
Burbank
Kasim
图书分类: 网络
资源格式: PDF
版本: 第4版
出版社: McGraw-Hill
书号: 978-0-07-337604-2
发行时间: 2010年
地区: 美国
语言: 英文
简介:
内容简介:
本书由编程与网络权威专家behrouz a.forouzan撰写,是一本关于tcp/ip协议族的经
典教材。.
本书图文并茂,重点概念突出。除了讲解一些基本概念和底层技术外,还介绍了
tcp/ip协议族中的核心协议ip和tcp, 以及几个主要的路由选择协议。书中详细阐述
使用网络层和运输层协议的一些应用程序,并讨论因特网中一些较新的内容,如移动ip
、多媒体、虚拟专用网、网络地址转换、下一代ip等,以及涉及到的网络安全问题。本
书结合图片讲述了技术性很强的内容,尽可能地结合实例来阐明一些概念,并且许多章
都包括了有关的设计内容,以便帮助理解每一种协议的思路和问题。每一章还有一个本
章内容小结,归纳了该章所有的重点内容。..
本书可作为通... 阅读全帖 |
|
c******n 发帖数: 4965 | 3 let's say I have bytes
1 2 3 4 5 going out in a TCP connection, they are in one tcp segment saying
"from 1 to 5", this segment is broken up into 5 IP packets,
all 5 IP packets arrive on receiver fine except 3, which keeps dropping, so
the receiving end won't be able to assemble the TCP segment, so receiving
client can not see any of the bytes 1--5, right? and TCP protocol on the
receiving end has to keep requesting retransmission of the entire segment in
its ACK ?
what happens on the sender cl... 阅读全帖 |
|
S*A 发帖数: 7142 | 4 你还害臊不?原文连接你开始没有给,我求了两次才给的。
我第一次提出疑问,引文里有你的原文
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
你说的是 Robert ? 他说了必须要重新写网络协议?这个听起来很不 make sense.
改了协议那些以前用旧协议的用户怎麼办啊?是不是可以选的协议还是有什么
理解上的问题啊。
求出处。你说的不会是 TCP TIME Wait 的问题把。
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
我第二次问你的出处
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
然后你的回答:
{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
http://blog.erratasec.com/2013/02/custom-stack-it-goes-to-11.ht
这里不写着吗,custom network stack. You don’t want a fu... 阅读全帖 |
|
z*****n 发帖数: 7639 | 5 tcp只存在于通信的两端,中间节点上只有网络层。
这一点要搞清楚。在端节点,tcp向下push也是受控的(有
tcp transmission window)。当多个tcp stream同时
向下push的时候,也会发生network ifque full,这时候
network layer会delay tcp 的请求 (send函数会延迟
返回或者返回 error code)。
在中间节点上,情况会复杂的多,一个是因为普遍使用的
以太网没有data link layer flow control,传输方可能
会overrun接受方的物理处理能力,更多的情况是在多端
口router上,出现N对1的拥塞。 |
|
w***s 发帖数: 321 | 6 早期TCP SACK对于丢包(如果数据报出错不是指TCP checksum error)没有多大帮助(
RFC2108, RFC2883),retransimission timeout还是会触发slow start, 所以祈求
你的TCP stack是否实现了更新的SACK机制, 比如RFC3517吧。
另外TCP使用什么ACK同底层无关,看两台设备之间同意用什么。
如果你实在在意重传,就需要考虑找个支持FEC的软件了。
TCP |
|
m******r 发帖数: 1 | 7 【 以下文字转载自 EE 讨论区,原文如下 】
发信人: MultStar (Upward), 信区: EE
标 题: Help, 各位知道有没有 TCP/IP, Ethernet 专用芯片?
发信站: The unknown SPACE (Fri Oct 27 00:54:55 2000) WWW-POST
SOS,兄弟现在有一个项目,需要设备上网。需要将 TCP/IP 协议(
部分)以及 Ethernet 做到同一个硬件上。因为不做硬件已经数年了
,不知道现在 TCP/IP 这么热,有没有什么专用的芯片,比如说将
IP 数据报封装到 802.3 Ethernet 的芯片,ICMP,ARP,这些协议,
已及路由传播的 RIP 等协议,有没有这些专用芯片?我虽然对
TCP/IP比较熟悉,但硬件编程处理的工作量的确比较大,而且处理速
度上也有些问题。盼各位高手指点,如蒙赐教,不胜感激! |
|
c*********f 发帖数: 4 | 8 功能要求:将UDP传输模拟成TCP,解决UDP丢包、重包、丢包重传、流量控制、拥塞控制
等问题,并在Internet网上达到近似TCP的传输速度。 实现要求: win32,C++ 封装成类
似CAsyncSocket 一样的调用和事件通知要求像TCP一样,完全按照顺序字节流发送和接收
数据,并将发送时的数据 按最优大小分包或并包(即可以将短时间内几次调用发送的小数
量数据合并成一个UDP包发送) 支持多种线程模型,单一线程/每个Socket一个线程/运行
在调用线程支持多种事件模型,窗口消息/事件/线程消息
具体要求是:首先数据要正确、然后是速度达到差不多TCP的速度,时间大约半个月到一
个月。在win32环境下运行,用V C++编写。
做这个软件的目的是为了穿透防火墙/NAT,就是让不同的内网可以直接通讯.
有意者请联系:y*[email protected]
MSN: y*********[email protected] |
|
j********x 发帖数: 2330 | 9 没理由用tcp,tcp的延迟抖动会严重影响播放质量。当然现在网络条件好,也可以采用
大缓冲的tcp;其实udp可以方便定制,开发的产品的质量综合要比tcp好才对 |
|
s********k 发帖数: 6180 | 10 【 以下文字转载自 EE 讨论区 】
发信人: silverhawk (silverhawk), 信区: EE
标 题: 一个TCP ACK的问题?
发信站: BBS 未名空间站 (Thu Dec 11 12:16:09 2008)
假设TCP使用的是ACK(不是NACK或者SACK),window=4096.接收端的ACK是对每个字节
都要ACK,还是等到4096都接受完了再ACK。还有一种是把4096窗口分成segment段(目
前看到的大多数TCP)。比如我分成512字节一个段,每个段接受成功之后ACK。那么其
中一个段没有接受成功,比如512-1023字节(段2),其中588-788字节丢失。TCP会启
动重传机制,是重传整个段512-1023?还是588-788? |
|
z*****n 发帖数: 7639 | 11
我认为这个问题本身是个伪问题。
tcp,udp都是操作系统的不同进程下的任务。在多任务
操作系统中,各个进程被轮流调用,不管是tcp还是udp,
都是向网络层即IP deamon写入tcp或者udp包。IP的工作
方式是fifo,谁先来谁排在前面被推出去。所以,如果
你有两个进程,同时向外发送,tcp和udp的发送速率一
样,包大小一样,进程优先度一样,它们会有相同的传
输结果。
下面的链路和物理层跟这个先后次序没有任何关系。 |
|
s********k 发帖数: 6180 | 12 【 以下文字转载自 CS 讨论区 】
发信人: silverhawk (silverhawk), 信区: CS
标 题: 请教一个TCP的问题
发信站: BBS 未名空间站 (Thu Oct 2 20:56:19 2008)
TCP中,比如我的window size是10, 那么我传送seq:0-9的数据包,然后接收端会回
传ACK=10.表明下一个我准备接受的是10, 那么加入我0-9之间数据包5出错了。那么这
个时候ACK=5? 这样的话6-9会被重传吗?如果在无线环境中,重传非常消耗资源。TCP
是不是一般用select ACK?在无线中应用最多的是哪种TCP? |
|
L***s 发帖数: 1148 | 13 【 以下文字转载自 Programming 讨论区 】
发信人: Leiss (徕司), 信区: Programming
标 题: 请教一个TCP连接的问题
发信站: BBS 未名空间站 (Mon Mar 3 19:17:44 2014, 美东)
http://www.mitbbs.com/article_t0/JobHunting/32638431.html
一个web服务器与50,000个手机保持着TCP连接,
突然服务器崩溃重启,所有的TCP连接全部terminated
(不是半开,要重新从FIN开始握手)。
服务器瞬间要负担50,000个TCP重连请求,
问:服务器端应如何加速这一重连过程? |
|
c*********f 发帖数: 4 | 14 功能要求:将UDP传输模拟成TCP,解决UDP丢包、重包、丢包重传、流量控制、拥塞控制
等问题,并在Internet网上达到近似TCP的传输速度。 实现要求: win32,C++ 封装成类
似CAsyncSocket 一样的调用和事件通知要求像TCP一样,完全按照顺序字节流发送和接收
数据,并将发送时的数据按最优大小分包或并包(即可以将短时间内几次调用发送的小数
量数据合并成一个UDP包发送) 支持多种线程模型,单一线程/每个Socket一个线程/运行
在调用线程支持多种事件模型,窗口消息/事件/线程消息
具体要求是:首先数据要正确、然后是速度达到差不多TCP的速度,时间大约半个月到一
个月。在win32环境下运行,用V C++编写。
做这个软件的目的是为了穿透防火墙/NAT,就是让不同的内网可以直接通讯。
有消息请联系:y*[email protected]
MSN: y*********[email protected] |
|
i*****o 发帖数: 1714 | 15 这个问题已经解决了, 就是改一下ip route default initcwnd, default是3,我改
成20就好了。
关于这个问题的根源我已经说过, 就是linux上对tcp slow start的实现没有按通常的
要求去做。tcp slow start是为了避免congestion,省的一个新的session来了以后,
一下子传太多造成没有必要的drop frame和retransmission。公认的实现是start with
3x mss。就是说ethernet上可以一下子送1500*3 = 4500字节。4500字节对我来说就
是90个voice packet(差不多两秒的通话)足够用的了。可linux上写这个程序的人偷
懒,把slow start定义为start with 3 packets,不管这个packet里有多少字节。这样
我的应用就被卡注了。想想3g network round trip delay差不多在60ms-200ms之间,
200ms就是10个voice packet,可linux只给3个packet,所以就不断的drop frame(
voic... 阅读全帖 |
|
f********a 发帖数: 1109 | 16 【 以下文字转载自 Linux 讨论区 】
发信人: fololunsia (我心飞扬), 信区: Linux
标 题: 关于tcp包头的一个小问题 [图]
发信站: BBS 未名空间站 (Thu Apr 24 18:45:10 2008)
我开一个窗口用tcpdump来看tcp包,
另一个窗口用telnet google.com 80,按照TCP的header定义,前16bit是source port, 然后16bit是dest port.如下图所是:
收到如下的TCP包:很奇怪的是我发现,收到的包里面0014 a9ec(16 bit)好像不是source port number,因为在google返回的包头中b16b 0014才是。是不是我哪里读错了?谢谢。
root# tcpdump host google.com -XX
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), captur |
|
b*******s 发帖数: 5216 | 17 tcp_rmem (since Linux 2.4)
This is a vector of 3 integers: [min, default, max]. These
parameters are used by TCP to regulate receive buffer sizes.
TCP dynamically adjusts the size of the receive buffer from
the defaults listed below, in the range of these values,
depending on memory available in the system.
min minimum size of the receive buffer used by each TCP
socket. The default... 阅读全帖 |
|
S*A 发帖数: 7142 | 18 哇,你是不是没有能力区分一个网络协议和一个网络协议的实现的区别啊?
你干嘛不把人家印用全呢,果然是我猜的断章取意。我把人家原文上文
的限定语补上,让大家看看人家原来意思和你说的是不是一样。
方括号的是你断章取意的故意隐去地方。
【But for something like a DNS server processing UDP, or an intrusion
prevention system, 】you don’t want a full TCP/IP stack anyway, but a
degenerate stack tuned to your application. It takes only 100 clock cycles
to parse a UDP packet without having a full stack.
人家说的是,对特殊的应用,例如 DNS 和 IPS, 可以不用做整个TCP/IP。
只需要分析 UDP 就可以了,这样可以用 100 个时钟周期分析一个 UDP 包。
你故意把对特殊应用去掉,然后推广到人家整个 TCP/IP 都没有实现。这个... 阅读全帖 |
|
b*******s 发帖数: 5216 | 19 tcp_rmem (since Linux 2.4)
This is a vector of 3 integers: [min, default, max]. These
parameters are used by TCP to regulate receive buffer sizes.
TCP dynamically adjusts the size of the receive buffer from
the defaults listed below, in the range of these values,
depending on memory available in the system.
min minimum size of the receive buffer used by each TCP
socket. The default... 阅读全帖 |
|
S*A 发帖数: 7142 | 20 哇,你是不是没有能力区分一个网络协议和一个网络协议的实现的区别啊?
你干嘛不把人家印用全呢,果然是我猜的断章取意。我把人家原文上文
的限定语补上,让大家看看人家原来意思和你说的是不是一样。
方括号的是你断章取意的故意隐去地方。
【But for something like a DNS server processing UDP, or an intrusion
prevention system, 】you don’t want a full TCP/IP stack anyway, but a
degenerate stack tuned to your application. It takes only 100 clock cycles
to parse a UDP packet without having a full stack.
人家说的是,对特殊的应用,例如 DNS 和 IPS, 可以不用做整个TCP/IP。
只需要分析 UDP 就可以了,这样可以用 100 个时钟周期分析一个 UDP 包。
你故意把对特殊应用去掉,然后推广到人家整个 TCP/IP 都没有实现。这个... 阅读全帖 |
|
b***i 发帖数: 3043 | 21 看你比较多的看法,给你个整体概念:
原来系统16MHz,16M内存能够对付,要求10M以太网,FAT16。现在新的系统为什么要改这
么多呢?一个是需求改成Gigabit Ethernet,无线,一个是要对未来的设备能够容易增
加功能,还要面向未来。
原来的系统用C,自己写没有OS的TCP/IP(库是买的),自己发明二进制的协议,和PC
控制软件(MFC)一起使用。PC上直接改变嵌入式的所有变量。就是一个struct,里面内
容全部被这个二进制协议改变。这样要写一个协议调试软件,解释这个二进制到底什么
意思,在开发阶段帮助解决bug。电路方面自己画包括RAM,Flash, Ethernet Phy在内的
所有电路。应该说,这个设备用了10年才完善起来。
现在的要求是1年内完成从电路到软件的要求。所以稳定,快速开发才是最重要的。所
以,我直接买板子,上面有了千兆以太网,有了SDIO接口(64G都可以用,属于SDXC),
内存1G。为什么1G呢? 因为1G DDR3内存比512M便宜,而Xilinx最多只能用1G。然后使
用Linux把TCP/IP, USB,Wi-Fi全都搞定。但是还剩下显... 阅读全帖 |
|
c****3 发帖数: 10787 | 22 还要改包的内容?
如果目标机器不关心源IP的话,你的程序也起码要两个TCP连接。一个是Labview到你的
程序的,一个是你的程序到目标机器的。你的程序把从Labview受到的数据,修改后转
发到另一个TCP连接上去。
这是TCP工作的方式,否则你的程序变成路由器了,而且不是严格的路由器,因为路由
器工作在IP层,你要修改包内容,是工作在TCP层,有点象load balancer |
|
s********k 发帖数: 6180 | 23 【 以下文字转载自 CS 讨论区 】
发信人: silverhawk (silverhawk), 信区: CS
标 题: 请教一个TCP的问题
发信站: BBS 未名空间站 (Thu Oct 2 20:56:19 2008)
TCP中,比如我的window size是10, 那么我传送seq:0-9的数据包,然后接收端会回
传ACK=10.表明下一个我准备接受的是10, 那么加入我0-9之间数据包5出错了。那么这
个时候ACK=5? 这样的话6-9会被重传吗?如果在无线环境中,重传非常消耗资源。TCP
是不是一般用select ACK?在无线中应用最多的是哪种TCP? |
|
z*****n 发帖数: 7639 | 24
IP layer has function of re-assembly function.
It is for that an IP packet may be fragemented when
being sent out or at a point in the network where
MTU is lower. Yes, you are right, the IP layer
reassembles an TCP packet for the upper layer.
TCP is designed to ACK every incoming packet for sure.
However, accumulative ACK is most seen (I guess) is
caused by that TCP daemon is called foreward only in
its own time slice in a multi-task OS. During its
backoff time several TCP packets may have alre |
|
h**0 发帖数: 37 | 25 TCP是不是一般用select ACK?在无线中应用最多的是哪种TCP?
这个问题有点复杂。
首先网络中的2台计算机是不知道之间通信链路的(光纤,以太or无线), 所以,
一般来说无线中应用的TCP和普通有线环境中的一样。
select ACK问题
windows和linux都是支持SACK的,但是windows很懒,虽然在握手的时候会声明自己支
持SACK,但是不会主动却不会主动发SACK的option。 linux则不同。
这个问题不是一般的复杂,建议点到为止。
除非,有人做TCP offload enginee的 |
|
l*****o 发帖数: 19235 | 26 计划在美国南部德克萨斯州建设高铁的“德克萨斯中央合伙人公司”(TCP)日前透露,
准备引进日本东海铁路公司(JR东海)的新干线技术,并由日本制造商负责车辆制造和运
营管理系统。
TCP首席执行官(CEO)蒂姆・基斯接受日媒电话采访时表示“百分之百承诺使用JR
东海新干线技术”,强调“希望在2021年投入运营”。
日本政府将新干线技术出口定位为经济增长战略的核心。本月印度决定首条高铁计划将
采用新干线模式,日本为在印尼高铁竞标中不敌中国扳回了一局。如果德州的计划步入
正轨,或将大大促进新干线出口。
据悉,这条高铁连接该州两大城市达拉斯和休斯顿,需筹措100亿至120亿美元工程费。
半官方性质的日本“海外交通与都市开发事业支援机构”决定向TCP提供4000万美元,
日本国土交通省今年11月予以批准。基斯对此表示欢迎,并期待获得更多资金。基斯还
表示,正在探讨接受日本国际协力银行(JBIC)的贷款。
为吸引商务旅客这一利用高铁的主要目标人群,基斯表示“将设定可与飞机竞争的票价
”,并预测到2026年有望实现每年400万人次乘坐 |
|
s********k 发帖数: 6180 | 27 一般也就是TCP,UDP区别,分别用在什么场合,详细点会问TCP header里面内容和意义
.socket基本用法之类 |
|
m******e 发帖数: 59 | 28 我面过不少网络职位。
TCP/UDP区别,这个问得超多,这里接下去可能会问ACK的机制,congestion control和
flow control的机制和细节,fast recovery,slow start.总之TCP这块是重点
可能会问一些常见的协议比如ARP,HTTP
socket programming
IPV4 VS IPV6
另外你是嵌入式最好准备一下OS的东西,比如deadlock |
|
s********k 发帖数: 6180 | 29 我见过还有变态问TCP Reno和TCP newreno的区别。 |
|
s********k 发帖数: 6180 | 30 TCP中,比如我的window size是10, 那么我传送seq:0-9的数据包,然后接收端会回
传ACK=10.表明下一个我准备接受的是10, 那么加入我0-9之间数据包5出错了。那么这
个时候ACK=5? 这样的话6-9会被重传吗?如果在无线环境中,重传非常消耗资源。TCP
是不是一般用select ACK?在无线中应用最多的是哪种TCP? |
|
s********k 发帖数: 6180 | 31 【 以下文字转载自 EE 讨论区 】
发信人: silverhawk (silverhawk), 信区: EE
标 题: 在线听歌一类的应用是用TCP吗?还是UDP?
发信站: BBS 未名空间站 (Sat Oct 11 10:11:43 2008)
感觉应该是TCP,不是很确定。另外比如文件传输,这个应该是标准的TCP应用,但是比
如我用QQ传输比用MSN传输快很多,难道是两者做了不同优化,还是什么其他原因? |
|
z*****n 发帖数: 7639 | 32 我认为你如果只要一个最简单的webserver,tcpip stack可以不用
OS,当然了,如果这个server没什么复杂的功能,只response几个
简单页面的话:
mac层接收frames,解析ip包,里面应该包括一个tcp syn。一般网页
请求的http get命令生成一个tcp包应该不成问题。解析http get
命令,根据get 地址发送webpage,发送完毕,向客户端发送FIN指令
直接关闭连接。这样相当于把tcp当成udp来对待,不需要多线程等
需要OS才能完成的东西。 |
|
s*******y 发帖数: 851 | 33 You can write a OS-less TCP/IP stack and web server. But it won't fit for
every hardware. You have to write different stack for different platform. I
had written an OS-less TCP/IP stack for PC using assembly. You can put a
simple socket program on a floppy disk and run it on a pc without a
harddrive. After I graduated they have written a web server and a mail
server on top of that TCP/IP stack. But it is specific for PC and a 3com nic
. I don't think they are published for free. So you have to |
|
z*****n 发帖数: 7639 | 34 you mixed MAC layer and transport layer.
If there are two processes, 1 tcp 1 udp, they are both sending
to the network layer with same rate. How come a "channel collision"
will affect only tcp?
If the udp process keeping pushing packets to the network layer,
it will blow the IP packet buffer, not the channel. But we are
not talking that the UDP process is greedy and the tcp is not,
right?
silverhawk (silverhawk) 的大作中提到: 】 |
|
s********k 发帖数: 6180 | 35 那这个unfairness应该准确的说是UDP相对TCP而言,那么实际系统中怎么使用UDP使得
UDP和TCP能够尽量公平?UDP是否也会做一些类似TCP的控制?一般来说怎么做的(UDP
一般没有接收端的反馈) |
|
s********k 发帖数: 6180 | 36 比如两个laptop共享一个PHY为1M的无线带宽,其中一个用UDP按照500K/s发送(buffer
无限大并且只有UDP一个session)。另外一个开TCPsession(同样buffer无限大并且只
有TCP一个session),没有RTS/CTS,其中TCP和UDP的包collision之后掉包,
congestion window 减半,或者超时之后congestion window重启,从TCP层面来看,
有效带宽(goodput)只有100K(去掉各种其他开销,比如包头的overhead)。这种情
况可能出现吗? |
|
n********e 发帖数: 30 | 37 According to my old knowledge:
When congestion occurs:
TCP vs TCP is fair.
TCP vs UDP is not fair because UDP doesn't have congestion control. The
degree of unfairness is decided by the process that generates the UDP
datagrams.
There are many reasons for congestion. It doesn't matter the physical
network is wifi or ethernet or PPP.Even if you have super fast wifi,
congestion can still happen. |
|
z**r 发帖数: 17771 | 38 normally it could be 5 times faster even just offload the tcp stuff to a NIC.
If tcp gets offloaded to an application gateway, it could be 10 times faster
depending on the application type. coz, not only the tcp itself gets speeded,
also the application protocols/payload get compressed, optimized, or whatever |
|
s********k 发帖数: 6180 | 39 【 以下文字转载自 EE 讨论区 】
发信人: silverhawk (silverhawk), 信区: EE
标 题: 在线听歌一类的应用是用TCP吗?还是UDP?
发信站: BBS 未名空间站 (Sat Oct 11 10:11:43 2008)
感觉应该是TCP,不是很确定。另外比如文件传输,这个应该是标准的TCP应用,但是比
如我用QQ传输比用MSN传输快很多,难道是两者做了不同优化,还是什么其他原因? |
|
b********n 发帖数: 609 | 40 【 以下文字转载自 CS 讨论区 】
发信人: bluedaemon (兰魔), 信区: CS
标 题: 请问有哪些high performance TCP statck on LINUX? (转载)
发信站: BBS 未名空间站 (Mon Jul 18 19:55:49 2005), 站内
发信人: bluedaemon (兰魔), 信区: Programming
标 题: 请问有哪些high performance TCP statck on LINUX?
发信站: BBS 未名空间站 (Mon Jul 18 19:55:15 2005), 站内
发信人: bluedaemon (兰魔), 信区: Linux
标 题: 请问有哪些high performance TCP statck on LINUX?
发信站: BBS 未名空间站 (Mon Jul 18 19:55:02 2005), 转信
perhaps a user space implementation. i am trying to avoid
copying data from kernel to user s |
|
a********n 发帖数: 134 | 41 我的Laptop在两天前从Windows98 升级到Windows XP以后就不能上网了. 既不能直接连
Road Runner 的宽带网 也不能无线上网. 打电话给Time Warner, 说是TCP/IP 安装有问
题, 每次连网后总不能找到IP地址.
我的Windows XP 是正版, 安装在Desktop上没问题, 怎么在Laptop上就会有问题呢? 今天
实在不行, 重装了XP, 可是过后虽说连接正常, 但无法分配IP地址. 又重装了TCP/IP几次
, 还是不能用Laptop上网. 即使手动设置IP地址也没用, Error message: can not query
IP setting. 看来就是TCP/IP设置和网路不能沟通.
各位遇到过类似问题吗? 还有什么其它方法我可以试一下吗? 多谢了! |
|
f**y 发帖数: 138 | 42 When you construct a TCP RST packet, you may have to match the seq, ack as
well as src/dst IP and port with the existing TCP session, otherwise the
server may ignore the packet.
Regarding the time out, the linux system default TCP keepalive is 2 hours.
The application can not rely on 'select' or 'recv' to determine if the other
end of the socket is closed. It is simply too long. On the other hand, the
application can send packets periodically and catch the SIG_PIPE signal to
forcefully determine |
|
o**f 发帖数: 76 | 43 【 以下文字转载自 DotNet 讨论区 】
发信人: ospf (我是帅哥我怕谁), 信区: DotNet
标 题: Help: DotNet Tcp Client/Server
发信站: BBS 未名空间站 (Mon Nov 14 18:33:52 2005)
Hi All,
I am using a TCP server to be a non-blocking
server for n TCP clients (with Socket.Select()).
My problem is the number of n is limited to be < 65
when I bring up those clients one at a time with
10 seconds interval time between two adjacent
clients. Otherwise, the Socket.Select
will throw an "Index was outside the bounds of the
array" exception.
I tried S |
|
c****3 发帖数: 10787 | 44 不用发数据,这两个buffer是在TCP连接建立好之前设置的,建立之后就不能改了。对
应就TCP协议里的用于流控的TCP Windows size。
如果默认值是2K,发送接收4K,1M连接,光这两个buffer,就需要4G内存 |
|
c****3 发帖数: 10787 | 45 不用发数据,这两个buffer是在TCP连接建立好之前设置的,建立之后就不能改了。对
应就TCP协议里的用于流控的TCP Windows size。
如果默认值是2K,发送接收4K,1M连接,光这两个buffer,就需要4G内存 |
|
|
L***s 发帖数: 1148 | 47 多谢指点,豁然开朗!我还是没有系统设计经验,思维局限在单机。
有备份机memcache的话,可以对每个手机终端(IMEI)缓存ssthresh和cwnd,
理论上重启、TCP握手后,貌似server可以恢复到断之前的congestion windows size。
但client端TCP貌似还是要slow start?除非hack TCP协议。 |
|
c*********e 发帖数: 16335 | 48 tcp既然连上了,断开干什么?至少说个原因?一般的tcp server,是一个无限循环的
while loop,对于新的请求,会新开一个process,or thread.不会断开的。你看看一些c
写的简单的multi-threading tcp server就知道了。 |
|
b***i 发帖数: 3043 | 49 最近我们组有一个项目是LabView做的,是用TCP给一个设备通信,已经做好了。现在客
户需要改变所有信息的地址,就是说,原来设备存到0000的地方,他们可能要改在2222
。反正他们看我们的地址分配不爽,要改变。大概有不到100个地址需要改写吧。
面临的问题是改地址这个在Labview里面没有好的对策,就是体力活,估计2-4个星期。
我提出一个方案:新建一个程序,成为TCP服务器,监听LabView程序发出的信息(这里
在用户使用的时候,把设备地址改成本机地址),然后改变目标地址为用户设备需要的
地址。这个程序要用Java写,应该很简单。以后其他用户要换地址,也可以这样做,从
文件里读映射就行了。
一般的TCP通讯是这样的,在一个connectionHandler里面有一个函数run(),它应该是
在一个线程里面一直运行的。run里面读入一个包,是阻赛的。读到后,立刻发回一个
包。
下面是我的修改:
我在run里面收到了包,我应该修改后转发给设备(修改后)。然后我这个run里面怎么
等待设备的包呢?类似这样行吗?
run(){
do{
request = s_Transp... 阅读全帖 |
|
c****3 发帖数: 10787 | 50 你的需求没看懂,反正要改TCP地址,象你这样要两个TCP连接,一个是源设备和你程序
的,一个是你的程序和目标设备的。而且目标设备看到的连接,是来自你程序的IP.
你想要目标设备看到的连接IP还是来自源设备,就得像路由器那样工作,到raw socket
上更改IP然后转发。反正挺麻烦的,还不如用网络结构,做TCP的端口映射简单。是个
路由器都能做端口映射。 |
|