原始套接字的问题!

smartlife 2003-11-18 07:09:39
那位给说说为什么, 会出现原始套接字这种方式, windows网络编程中有句话“利用原始套接字,可以访问位于基层的传输协议” 这一句怎么理解!访问基层的传输协议是指什么协议!

int sockfd(AF_INET,SOCK_RAW,protocol)
可以创建一个原始套接字.根据协议的类型不同我们可以创建不同类型的原始套接字 比如:IPPROTO_ICMP,IPPROTO_TCP,IPPROTO_UDP等等

是不是用原始套接字要自己填充包头等等工作!
使用sendto的时候
int sendto (
SOCKET s,
const char FAR * buf,
int len,
int flags,
const struct sockaddr FAR * to,
int tolen
);
其中buf是包括ip包头+(udp |tcp | icmp包头)的数据指针!

...全文
57 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
raphyer 2003-11-20
  • 打赏
  • 举报
回复
可以自己填IP包 如 TCP UDP ICMP IGMP

但是和IP同层的其他协议:ARP RARP等不可以
smartlife 2003-11-20
  • 打赏
  • 举报
回复
u
ipangth 2003-11-19
  • 打赏
  • 举报
回复
似的。ip头部、tcp头部等都要自己填写。
并且修改其中感兴趣的部分。
feeboby 2003-11-19
  • 打赏
  • 举报
回复
那位给说说为什么, 会出现原始套接字这种方式, windows网络编程中有句话“利用原始套接字,可以访问位于基层的传输协议” 这一句怎么理解!访问基层的传输协议是指什么协议!
------------------------
可以自己开发类似于tcp,Udp等等的协议。

设置套接字IP_HDRINCL后,就可以自己打ip包,icmp,tcp,udp或自创的都可以
mailxt 2003-11-19
  • 打赏
  • 举报
回复
就是可以直接访问IP层,要自己填充包头需要设置IP_HDRINCL标志
smartlife 2003-11-19
  • 打赏
  • 举报
回复
up
smartlife 2003-11-19
  • 打赏
  • 举报
回复
int sockfd(AF_INET,SOCK_RAW,protocol)
其中protocol用IPPROTO_ICMP, 发送数据只要包括icmp包头+data
protocol用 IPPROTO_TCP,IPPROTO_UDP 必须设置IP_HDRINCL 那么在发送的数据前包括自己的ip头+(tcp|udp 头)!

18,363

社区成员

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

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