- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux,tcp/ip协议栈之socket的实现分析
篇一:linux的tcp ip协议源码分析
?
?
?
?
?
?
?
? 博客园 联系
随笔-20 文章-6 评论-0
一.linux内核网络栈代码的准备知识
1. linux内核ipv4网络部分分层结构:
BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结构体现。这一部分的文件
主要有:/net/socket.c /net/protocols.c etc
INET socket层:BSD socket是个可以用于各种网络协议的接口,而当用于tcp/ip,即建立了AF_INET形式的socket时,
还需要保留些额外的参数,于是就有了struct sock结构。文件主要
有:/net/ipv4/protocol.c /net/ipv4/af_inet.c /net/core/sock.c etc
TCP/UDP层:处理传输层的操作,传输层用struct inet_protocol和struct proto两个结构表示。文件主要
有:/net/ipv4/udp.c /net/ipv4/datagram.c /net/ipv4/tcp.c /net/ipv4/tcp_input.c /net/ipv4//tcp_output.c /net/ipv4/tcp_minisocks.c /net/ipv4/tcp_output.c /net/ipv4/tcp_timer.c
etc
IP层:处理网络层的操作,网络层用struct packet_type结构表示。文件主要有:/net/socket.c
| inet_recvmsgnet/ipv4/af_inet.c
| udp_recvmsg net/ipv4/udp.c
| skb_recv_datagram net/core/datagram.c
| -------------------------------------------
| sock_queue_rcv_skbinclude/net/sock.h
| udp_queue_rcv_skb net/ipv4/udp.c
| udp_rcv net/ipv4/udp.c
| ip_local_deliver_finish net/ipv4/ip_input.c
| ip_local_deliver net/ipv4/ip_input.c
| ip_recv net/ipv4/ip_input.c
| net_rx_action net/dev.c
| -------------------------------------------
| netif_rx net/dev.c
| el3_rxdriver/net/3c309.c
| el3_interrupt driver/net/3c309.c
==========================
| sys_writefs/read_write.c
| sock_writev net/socket.c
| sock_sendmsgnet/socket.c
| inet_sendmsgnet/ipv4/af_inet.c
| udp_sendmsg net/ipv4/udp.c
| ip_build_xmit net/ipv4/ip_output.c
| output_maybe_reroute net/ipv4/ip_output.c
| ip_outputnet/ipv4/ip_output.c
| ip_finish_output net/ipv4/ip_output.c
| dev_queue_xmit net/dev.c
| --------------------------------------------
| el3_start_xmit driver/net/3c309.c
V
3. 网络路径图、重要数据结构sk_buffer及路由介绍
linux-net.pdf 第2.1章 第2.3章 第2.4章
4. 从连接、发送、到接收数据包的过程
linux-net.pdf 第4、5、6章详细阐述
二.linux的tcp-ip栈代码的详细分析
1.数据结构(msghdr,sk_buff,socket,sock,proto_ops,proto)
bsd套接字层,操作的对象是socket,数据存放在msghdr这样的数据结构:
创建socket需要传递family,type,protoco
您可能关注的文档
- 31个大城市城镇调查失业率.doc
- 51个少儿英语小故事.doc
- 90后员工调查统计.doc
- 5年中考3年模拟7年.doc
- 2016高三语文寒假社会调查答案.doc
- abcdexyz都是初中化学.doc
- a,b,c,d都是初中化学中.doc
- 21世纪杯高中英语演讲.doc
- ae相片展示模板.doc
- api,6d,阀门堆焊和补焊作业规范.doc
- 寒假自习课 2025年春初中英语八年级下册冀教版上课课件 Lesson 33.ppt
- 寒假自习课 2025年春初中英语八年级下册冀教版上课课件 Lesson 39.ppt
- 寒假自习课 2025年春初中英语八年级下册冀教版上课课件 Lesson 47.ppt
- 寒假自习课 2025春初中英语八年级下册沪教版上课课件 2.3 Listening and Speaking.pptx
- 寒假自习课 2025春初中英语八年级下册沪教版上课课件 3.5 More practice.pptx
- 生猪期货理赔案例分析题单选题100道及答案.docx
- 《中汇税务师事务所》课件.ppt
- 寒假自习课 2025春初中英语八年级下册沪教版上课课件 3.2 Grammar.pptx
- 寒假自习课 2025年春初中英语八年级下册冀教版上课课件 Lesson 37.ppt
- 寒假自习课 2025年春初中英语八年级下册冀教版上课课件 unit 4 Review.ppt
文档评论(0)