这里人多,大伙给我看看怎么回事。
两台机器都为win2000 advance server, 其中一台(A)运行一Socket Server程序,另一台(B)作为客户机。1、构造了一SYN包,由B发向A的socket server
2、A发回一“SYN+ACK”包 -> B这时,本来应该是B要构造一个ACK包发给A。但现在是B系统自已的TCP马上发了一个RST包给A。剩余的工作就没法进行了。不知道有那个大哥知道如何避免TCP对SYN+ACK作响应?用Raw Socket实现自个的TCP是否可行?
两台机器都为win2000 advance server, 其中一台(A)运行一Socket Server程序,另一台(B)作为客户机。1、构造了一SYN包,由B发向A的socket server
2、A发回一“SYN+ACK”包 -> B这时,本来应该是B要构造一个ACK包发给A。但现在是B系统自已的TCP马上发了一个RST包给A。剩余的工作就没法进行了。不知道有那个大哥知道如何避免TCP对SYN+ACK作响应?用Raw Socket实现自个的TCP是否可行?
首先你要清楚自己在那层上面定的协议!根据你的描述我的理解是:
你想定义一些协议,利用tcp协议发送,但是你在发送的过程中,一方接受到数据后,还没以发送返回,由于tcp本身的机制立刻给发送方返回数据,导致你的流程无法做任何的事情,我的理解可能是因为分析协议字的错误,因为你的协议是syn +ack,而不是tcp 机制的ack,因为你是在应用层上面定义的协议,就应该在应用层上分析协议,所以你分析的时候如果是tcp的ack你不做处理,只要分析到Sys+ack才做处理,这样流程就可以继续下去。不过我不知道你这样做有没有意义。
B(Syn应用层的协议) A(Syn +ack)应用层的协议
| |
tcp(tcp syn) tcp(tcp syn ack)
| |
ip ip
| |
------ 链路-------------
B机 A机
↓ ↑
↓ ↑
TCP SYN Packet ↑
↓ ↑
↓ ↑
-------------------------------------
↓ (System TCP) ↑(System TCP)
↓ ↑
ip ip
--------------------->
链路 B机 A机
↑ ↓
↑ ↓
↑ ↓
↑ ↓
↑ ↓
-------------------------------------
↑ (System TCP) SYN+ACK (System TCP)
↑ ↓
ip ip
<---------------------
链路
B机 A机
↓ ↑
↓ ↑
ACK ↑
↓ ↑
↓ ↑
-------------------------------------
RST (System TCP)* ↑(System TCP)
↓ ↑
ip ip
--------------------->
链路我不想让系统发注有*号那个RST包
B (client) ip层;(不能socket,因为在创建socket的时候要指定是tcp,udp协议,除组播是ip层,不过可以socket,因为指定udp),
我好像是看过csdn上以前有人有过ip层编程的代码,找找看!),客户端接受到服务器端的数据包,首先分析ip头,接着是tcp头,一直往上!没有接触过ip层的编程,不了解那些api可以提供!关注你的问题!goog luck!