在调试器下观察Linux内核是如何发送数据包的

本文通过使用GDK7调试套件在Linux内核下观察数据包发送过程

1.  TCP/IP参考模型与OSI参考模型

        TCP/IP参考模型与OSI参考模型的关系,如图1.1所示。 

图1.1 TCP/IP参考模型与OSI参考模型的关系

2. 观察信息发送的过程

2.1 应用程序层

        断下函数sock_sendmsg,并查看栈回溯,如图2.1所示。

图2.1 查看栈回溯

有信息发送时的栈回溯                       无信息发送时的栈回溯

lk!sock_sendmsg                                lk!sock_sendmsg

lk!sock_write_iter+0x8c                      lk!__sys_sendto+0x13f

lk!do_iter_readv_writev+0x14c          lk!__x64_sys_sendto+0x28

lk!do_iter_write+0x86                         lk!do_syscall_64+0x5a

lk!vfs_writev+0x98                             lk!entry_SYSCALL_64+0x7c

//通过观察图2.1中的栈回溯,我们可看到应用程序层内调用的函数信息及过程。

//在应用程序层内,进程通过使用套接字,将信息写入套接字内。

        使用套接字发送信息时,信息会到达系统调用的函数sock_sendmsg,与此同时也会检查用户缓冲区是否可读,如果可读,则通过套接字描述符(由发出调用的进程提供)获取结构体sock;然后它会根据所传输的信息创建消息头,并创建1个套接字控制

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值