社区
网络编程
帖子详情
怎样接收发出SYN数据报后,返回的SYN-ACK应答
nbczhouyi
2004-12-22 08:53:21
自己填写了TCP/IP数据包用来扫描端口,那么发出一个SYN 包后应该会有SYN-ACK应答,那么我怎么才能接收呢?
只有20分了,不好意思.在这里小弟先谢谢各位大哥了
...全文
245
8
打赏
收藏
怎样接收发出SYN数据报后,返回的SYN-ACK应答
自己填写了TCP/IP数据包用来扫描端口,那么发出一个SYN 包后应该会有SYN-ACK应答,那么我怎么才能接收呢? 只有20分了,不好意思.在这里小弟先谢谢各位大哥了
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
nb_zhouyi
2005-01-20
打赏
举报
回复
顶
nbczhouyi
2004-12-22
打赏
举报
回复
现在知道了,他改了AfxSock.h中的winsock.h变成winsock2.h了,嘿嘿,刚才没看他的说明
nbczhouyi
2004-12-22
打赏
举报
回复
如果不把winsock2.h中的
#define WSAAPI FAR PASCAL
typedef struct _OVERLAPPED* LPWSAOVERLAPPED;
typedef void
(CALLBACK * LPWSAOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwError,
DWORD cbTransferred,
LPWSAOVERLAPPED lpOverlapped,
DWORD dwFlags);
int
WSAAPI
WSAIoctl(SOCKET s,
DWORD dwIoControlCode,
LPVOID lpvInBuffer,
DWORD cbInBuffer,
LPVOID lpvOutBuffer,
DWORD cbOutBuffer,
LPDWORD lpcbBytesReturned,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
拷过来的话,WSAIoctl函数提示为error C2065: 'WSAIoctl' : undeclared identifier
想问一下你是怎么用的,还有你介绍的下载源码
#include "mstcpip.h"
#include "iphlpapi.h"
两个头文件找不到,你是怎么编译成功的阿?
还有SIO_RCVALL,在那些头文件里找不到,在MSDN里也找不到,你是怎么定义的阿?
nbczhouyi
2004-12-22
打赏
举报
回复
SIO_RCVALL,你是怎么定义的阿?
iq199
2004-12-22
打赏
举报
回复
这是我以前写的一段代码
SOCKET Socket = socket(AF_INET, SOCK_RAW, IPPROTO_IP);
if(INVALID_SOCKET == Socket)
{
m_pReceiver->OnError(m_dwIP, RSST_ERROR_CREATESOCKETFAIL, WSAGetLastError());
return -1;
}
int rcvtimeo = 100;
if(setsockopt(Socket, SOL_SOCKET, SO_RCVTIMEO, (const char *)&rcvtimeo, sizeof(rcvtimeo)) == SOCKET_ERROR)
{
m_pReceiver->OnError(m_dwIP, RSST_ERROR_SETTIMEOUTFAIL, WSAGetLastError());
closesocket(Socket);
return -1;
}
SOCKADDR_IN sa;
sa.sin_family = AF_INET;
sa.sin_addr.s_addr = m_dwIP;
if (bind(Socket, (PSOCKADDR)&sa, sizeof(sa)) == SOCKET_ERROR)
{
m_pReceiver->OnError(m_dwIP, RSST_ERROR_BINDIPFAIL, WSAGetLastError());
closesocket(Socket);
return -1;
}
DWORD dwInBuffer = 1;
DWORD dwBytesReturned;
if (SOCKET_ERROR == WSAIoctl(Socket, SIO_RCVALL, &dwInBuffer, sizeof(dwInBuffer), NULL, 0, &dwBytesReturned , NULL, NULL))
{
m_pReceiver->OnError(m_dwIP, RSST_ERROR_SETRCVALLFAIL, WSAGetLastError());
closesocket(Socket);
return -1;
}
char ReceiveBuffer[0xFFFF];
int nTotalLen = 0;
while (WaitForSingleObject(m_hStopEvent, 0) == WAIT_TIMEOUT)
{
int nReceivedBytes = recv(Socket, ReceiveBuffer, sizeof(ReceiveBuffer), 0);
if (SOCKET_ERROR == nReceivedBytes)
{
int nError = WSAGetLastError();
if (WSAETIMEDOUT == nError)
continue;
else
{
m_pReceiver->OnError(m_dwIP, RSST_ERROR_RECEIVEFAIL, WSAGetLastError());
closesocket(Socket);
return -1;
}
}
if (nReceivedBytes < 20)
{
m_pReceiver->OnError(m_dwIP, RSST_ERROR_RCVLENLESSTHEN20, nReceivedBytes);
closesocket(Socket);
return -1;
}
if (nReceivedBytes != ntohs(*(WORD*)(ReceiveBuffer+2)))
{
m_pReceiver->OnError(m_dwIP, RSST_ERROR_RCVLENUNEQUALTOPKLEN, nReceivedBytes<<16 | ntohs(*(WORD*)(ReceiveBuffer+2)));
closesocket(Socket);
return -1;
}
m_pReceiver->OnReceived(ReceiveBuffer, nReceivedBytes);
}
closesocket(Socket);
iq199
2004-12-22
打赏
举报
回复
用rawsoacket,接收所有ip包,然后自己过滤一下
源代码可以参考这个
http://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5413
很容易实现
nbczhouyi
2004-12-22
打赏
举报
回复
我创建了原始套接字,自己写IP首部和TCP首部,自己校验,然后发出去,那么目标地址收到我这个数据包之后会应答的,我怎么来接收这个应答呢?
shoooo
2004-12-22
打赏
举报
回复
connect 就是syn包
返回成功就是收到了syn-ack
默认connect是尝试3次syn
CCNA_CCNP 思科网络认证 网络层安全(通过 ACL 访问控制列
举例: 整栋楼统一装修后部分楼层因故出租,导致物理层(布线)安全隐患...!解决之道:物理隔离 通过网络设备进行攻击: 例如:Hub集线器(广播到所有端口被捕获)和无线AP(可见AP...
服务器收到
syn
包不回消息,TCP:
SYN
请求
接收
SYN
响应代替
SYN
-
ACK
如果
SYN
发送,另一个
SYN
被收到没有
ACK
通常只是
ACK
过线(特别是在你的情况下)的损失:您可以查看这个帖子/答案。无论何时从A(客户端)到B(服务器)的路由很短,并且从服务器到客户端的
数据
包路径特别长,并且遍历网络...
Linux默认开启TCP时间戳导致
syn
-
ack
不能
返回
(不能
返回
响应
数据
)
Linux默认开启TCP时间戳导致
syn
-
ack
不能
返回
(不能
返回
响应
数据
)
终于搞清楚了:TCP的
SYN
和
ACK
是什么意思
SYN
(
syn
chronize)是请求同步的意思,
ACK
是确认同步的意思。...在客户机和服务器之间建立正常的TCP网络连接时,客户机首先
发出
一个
SYN
消息,服务器使用
SYN
-
ACK
应答
表示
接收
到了这个消息,最后客户机再以
ACK
确认。 ...
TCP—-
SYN
、
ACK
-、FIN、RST、PSH、URG-详解
三次握手图 四次握手图 三次握手Three-way Handshake 一个虚拟连接的建立是通过三次握手来实现的 ... [
SYN
] -->...假如服务器A和客户机B通讯....注意: 一个
SYN
包就是仅
SYN
标记设为1的TCP包(参见TCP包头R...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章