现在位置: 首页 > TCP
   在TCP网络应用开发中,作为客户端的程序经常需要主动连接服务器,这时你就需要建立一个Socket,然后调用connect函数连接到服务器地址。正常情况下,这并没有什么问题,但当服务器主机不存在的时候,connect函数可能会等待一分多钟才能返回。如果在主线程中调用connect函数,就会产生长时间无法响应的状况。    在现代的互联网硬件环境中,一分钟的等待有点太长了,我们需要缩短等待时间。 在Linux环境下...
阅读全文

2013-07-22 23:59 工业·编程 ⁄ 共 2985字 暂无评论
1、建立连接协议(三次握手) (1)客户 端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。 (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标 志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通 讯。 (3) 客户必须再次回应服务段一个ACK报文,这是报文段3。 2、连接终止协议(四次握手) 由于TCP连 接是全双...
阅读全文
2013-07-22 23:40 工业·编程 ⁄ 共 2174字 暂无评论
1、BSD TCP/IP协议栈      BSD栈历史上是其他商业栈的起点,大多数专业TCP/IP栈(VxWorks内嵌的TCP/IP栈)是BSD栈派生的。这是因为BSD栈在BSD许可协 议下提供了这些专业栈的雏形,BSD许用证允许BSD栈以修改或未修改的形式结合这些专业栈的代码而无须向创建者付版税。同时,BSD也是许多 TCP/IP协议中的创新(如广域网中饿拥塞控制和避免)的开始点。 2、uC/IP     uC/IP是由Guy Lancaster编...
阅读全文
TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不 会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得 注意的状态有两个:CLOSE_WAIT和TIME_WAIT。  1、LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态。...
阅读全文
2012-12-07 07:30 工业·编程 ⁄ 共 3958字 暂无评论
TCP编程的服务器端一般步骤是 1、 创建一个socket,用函数socket(); 2、 设置socket属性,用函数setsockopt(); * 可选 3、 绑定IP地址、端口等信息到socket上,用函数bind(); 4、 开启监听,用函数listen(); 5、 接收客户端上来的连接,用函数accept(); 6、 收发数据,用函数send()和recv(),者read()和write(); 7、 关闭网络连接; 8、 关闭监听; TCP编程的客户端一般步骤是: 1、 创建一个socket,用函数socket(); 2、 ...
阅读全文
2012-12-04 22:38 工业·编程 ⁄ 共 2835字 暂无评论
TCP/IP协议同ISO/OSI模型一样,也可以安排成栈形式。但这个栈不同于ISO/OSI版本,比ISO/OSI栈少,所以又称之为短栈。另外,需要知道的是:TCP/IP协议栈只是许多支持ISO/OSI分层模型协议栈的一种,是一个具体的协议栈。 对于TCP/IP协议栈划分为几层更合适,多年来专家们一直未达成共识,大部分对TCP/IP协议栈的描述都假定它占据了协议结构的4到5个功能层。下面我们对这两种主流的分层方法分别进行描述。 1 基于4层的TCP/IP协议栈...
阅读全文
2012-12-01 21:29 工业·编程 ⁄ 共 1330字 暂无评论
首先解释一段截取的网络数据认识一下。(由a_la_lei解释) 1、-> syn(这一步是初始化发送端的ISN。理论上,它的数据字段没有任何值,消耗的是一个虚字节) TCP: Sequence number = 4071231308 TCP: Acknowledgement number = 0 2、<- ack syn(初始化接收端的ISN,并对收到的包进行确认。因为确认的方式是累计确认,所以尽管第1步传输了一个虚字节,但ACK仍旧是4071231308+1=4071231309) TCP: Sequence number...
阅读全文
2012-11-13 21:54 工业·编程 ⁄ 共 2483字 暂无评论
    TCP协议提供的是可靠的、面向连接的传输控制协议,即在传输数据前要先建立逻辑连接,然后再传输数据,最后释放连接3个过程。 尽管TCP和UDP都使用相同的网络层(IP),TCP却向应用层提供与UDP完全不同的服务。 TCP提供一种面向连接的、可靠的字节流服务。 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨...
阅读全文
2012-08-22 23:37 工业·编程 ⁄ 共 2418字 评论 1 条
本文旨在分析使用抓包工具抓取到的数据包。 (一)抓包工具 tcpdump:linux下的抓包利器 wireshark:带GUI的抓包工具,其前身是大名鼎鼎的Ethereal (二)抓包 这里只简述tcpdump的一般用法,详细资料可参考tcpdump使用手册。 wireshark带有GUI,操作比较简单,暂不赘述。 tcpdump -i eth1 tcp -Xnlps0 port 16815 src host 192.168.0.0 and dst net 192.168.0.1 tcpdump -i eth1 -Xnlps0 dst net 172.23.9.155 and port 37861 ...
阅读全文
2012-08-13 05:50 工业·编程 ⁄ 共 7876字 暂无评论
    本文是我在进行MS-Windows、HP-Unix网络编程的实践过程中总结出来的一些经验,仅供大家参考。本文所谈到的Socket函数如果没有特别说明,都是指的Windows Socket API。 一、WSAStartup函数 int WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData ); 使用Socket的程序在使用Socket之前必须调用WSAStartup函数。该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副...
阅读全文