网络包流程
来源:互联网 发布:服装批发用什么软件 编辑:程序博客网 时间:2024/05/22 00:20
发送:
应用程序调用系统调用,将数据发送给socket
socket检查数据类型,调用相应的send函数
send函数检查socket状态、协议类型,传给传输层
tcp/udp(传输层协议)为这些数据创建数据结构,加入协议头部,比如端口号、检验和,传给下层(网络层)
ip(网络层协议)添加ip头,比如ip地址、检验和
如果数据包大小超过了mtu(最大数据包大小),则分片;ip将这些数据包传给链路层
链路层写到网卡队列
网卡调用响应中断驱动程序,发送到网络
接收:
数据包从网络到达网卡,网卡接收帧,放入网卡buffer,在向系统发送中断请求
cpu调用相应中断函数,这些中断处理程序在网卡驱动中
中断处理函数从网卡读入内存,交给链路层
链路层将包放入自己的队列,置软中断标志位
进程调度器看到了标志位,调度相应进程
该进程将包从队列取出,与相应协议匹配,一般为ip协议,再将包传递给该协议接收函数
ip层对包进行错误检测,无错,路由
路由结果,packet被转发或者继续向上层传递
如果发往本机,进入链路层
链路层再进行错误侦测,查找相应端口关联socket,包被放入相应socket接收队列
socket唤醒拥有该socket的进程,进程从系统调用read中返回,将数据拷贝到自己的buffer,返回用户态。
0 0
- 网络包流程
- BitTorrent通信流程与网络包结构
- 网络包的转发流程详解实例说明
- 网络流程
- Go网络编程之net/http包执行流程源码分析
- Shark包、流程管理
- browser抓包流程
- caret包处理流程
- caret包处理流程
- isis_receive:收包流程
- 网络驱动程序--数据传输流程
- 网络接收流程描述
- Unity网络相关流程
- 网络收发流程摘抄
- Unity网络相关流程
- 网络数据的流程
- 网络传输流程小结
- 网络访问流程
- ASP.NET 5 and AngularJS Part 1, Configuring Grunt, Uglify, and AngularJS
- The Performance Monitor in the DBA Cockpit
- sgu191:Exhibition(模拟)
- 数据结构第二章思维导图
- 解决Android 5.0网络信号出现感叹号的解决方法
- 网络包流程
- 正则表达式 for python
- iOS集合之NSDictionary与NSMutableDictionary
- UVa 12108 Extraordinarily Tired Students(特别困的学生)
- 修改程序名
- 进程同步之临界区域问题及Peterson算法
- WDK译文——Windows文件过滤驱动开发(持续更新中...)
- 数据结构第四章
- sprintf_s 在release下仍然会崩溃