WSASocket的参数IPPROTO_IP和IPPROTO_TCP

zxcdewq 2011-09-12 02:19:23
WSASocket(AF_INET,SOCK_STREAM,IPPROTO_IP,NULL,0,SOCK_STREAM);

WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP,NULL,0,SOCK_STREAM);

为什么客户端和服务器端分别指定IPPROTO_IP和IPPROTO_TCP程序能正常运行?

客户端和服务器端不需要指定相同的参数吗?
...全文
380 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-09-14
  • 打赏
  • 举报
回复
请看下面这幅图

HTTP等(应用层)
|
TCP/UDP (运输层)
|
IP(链路层)
|
接口层

一个由网卡传送过来的帧,如果是一个HTTP等应用协议的,那么它必然在下面三层都有对应的结构,再比如,一个纯粹的IP包(比如,一个ICMP诊断包),就只有下面两层的结构。

你可以设想,当某个客户端发给服务器一个TCP包(流的一个单元),那么,如果服务器在IP设置了原始套接字的接受,也可以收到这个TCP的IP层结构。


zxcdewq 2011-09-14
  • 打赏
  • 举报
回复
谢谢回答。

如果客户端使用IPPROTO_TCP发送,服务器端使用IPPROTO_IP接收呢?

客户端自动加上了IP层的处理?
「已注销」 2011-09-13
  • 打赏
  • 举报
回复
数据的级别不一样,客户端在IP层发送,服务端以TCP层接受,这当然可以。

就像你写一个原始套接字的嗅探器,可以抓取UDP和TCP的包一样。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧