深入浅出linux tcp ip,深入浅出linux,tcp_ip协议栈.doc

深入浅出linux,tcp_ip协议栈

篇一:linux-Tcp IP协议栈源码阅读笔记

linux-Tcp IP协议栈源码阅读笔记

一.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/ipv4/ip_forward.c

irecvmsgnet/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,protocol三个参数,创建socket其实

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值