ip包的接收过程概要

接收过程:
        从网络上到来的数据,通过网卡接收,此时网卡会向系统发出中断,告诉系统处理。系统得知数据到来时,在中断处理中把数据从网卡的缓存中读到内存中交由链路层处理,链路层把数据放到自己的backlog对列中,然后把bh_base中的network flag置位,就是利用bottom half机制。
        当进程调度器(process schduler)看到network flag被置位时,它会运行相应的例程,例程会把packet从backlog对列中弹出,与相应的协议(通常是ip协议)来进行匹配,然后把packet传递给相应协议的接受函数进行处理。ip层对packet进行错误检测,然后进行路由,packet或者进入outgoing queue(转发)或者交由传输层进行处理(发往本机)。传输层会进行错误检测,查找与端口相关联的socket,然后把packet放到相应的socket的接收对列中。
        一旦packet进入到socket的对列中,socket会唤醒拥有此socket的进程。此进程也许会从read系统调用中返回,把数据从对列中拷贝到自己的buffer中。




receive data figure
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值