- 0
- 0
- 约3.28千字
- 约 56页
- 2017-07-26 发布于河南
- 举报
TCPIP和socket编程
第3讲 TCP/IP实现
与Socket编程;3.1.1 Linux下TCP/IP框架 ; BSD套接字是UNIX为网络编程提供的传输层编程接口,该接口并不考虑底层的网络通信协议,而是在所有的通信协议之上提供统一的接口函数。因此,不管编程用户使用何种底层网络协议,所使用的BSD套接字函数都是一致的。;3.1.1.2 BSD Socket接口 ;套接字类型 ; 在不同的协议族中,具有各种不同性能、特色的传输层、网络层协议。在进行网络编程中,用户无需考虑具体的协议细节,仅仅知道该协议可以提供何种类型的服务。;Raw类型套接字 —— TCP/IP协议族中的网络层协议以及底层协议;套接字文件系统;;3.1.2 Linux下TCP/IP启动 ;3.1.3 各种数据结构 ;;3.1.3.2 核心数据结构sk_buff; 在IP Over Ethernet中,TCP/IP协议族各层的协议数据单元之间的关系如下。; Linux没有采用在各层之间通过数据包复制的方法实现各层次之间的数据传递,而是通过直接将数据包加入层次队列的方法实现,保证了协议数据包处理的快捷和高效。
Linux采用一种数据结构sk_buff在不同协议层及网络设备驱动程序之间传送数据,也就是说,网络设备发送与接收数据包所用的缓冲区是一个统一的数据结构sk_buff,并且这些结构一旦在内核中产生,无论在任何层次间传递,都始终保持有效,直至消亡。(注:sk_buff只在操作系统的内核空间中出现)
在使用sk_buff结构时,该结构链接到一个双向循环链表中,双向循环链表的作用在于很方便地实现插入与删除,这是Linux实现网络数据缓冲区的主要方式。 ;sk_buff结构;union
{
struct tcphdr *th;
struct udphdr *uh;
struct icmphdr *icmph;
struct igmphdr *igmph;
struct iphdr *ipiph;
struct spxhdr *spxh;
unsigned char *raw;
} h;
union
{
struct iphdr *iph;
struct ipv6hdr *ipv6h;
struct arphdr *arph;
struct ipxhdr *ipxh;
unsigned char *raw;
} nh;
union
{
struct ethhdr *ethernet;
unsigned char *raw;
} mac;;unsigned int len;
/*此报文的长度,这是指网络报文在不同协议层中的长度,包括头部和数据。在协议栈的不同层,这个长度是不同的。*/
unsigned int data_len;
/*这个变量记录的是在frags和frag_list里面存储的报文的长度。*/
unsighed int true_size;
/*truesize是sk_buff{}用来存放数据的缓冲区的长度,并不是指有效数据的长度。*/
unsigned char *head; //指向被分配的内存空间的首地址
unsigned char *data; //指向当前数据包的首地址
unsigned char *tail; //指向当前数据包的末地址
unsigned char *end; //指向被分配的内存空间的末地址
/*以上四个变量指向此报文存储区。*/
;四个指针变量; frags是一个数组,frag_list是一个单向链表,它们所指向的存储空间是一个页的大小(即4k)。这些额外的存储空间并不是一开始就使用的,只有在data所指的存储空间不够用的情况下才使用这些存储空间。
在sk_buff里增加了一个变量data_len。这个变量记录的是在frags和frag_list里面存储的报文的长度。
在较早的版本中:
skb-len = skb-tail – skb-data
skb-turesize =skb-end – skb-head
在2.4.X内核中:
skb-len = skb-tail – skb-data + skb-data_len
skb-turesize =skb-end – skb-head + skb-data_len;sk_buff_head的定义;在Linux中,所有的外围设备被归结为三类:字符设备、块设备和网络设备;
Linux对所有的物理网络设备进行抽象并定义了统一的概念——接口;
一个网络接口被看作是一个发送和接收数据包的实体;
对于每个网络接口,都用一个net_device的数据结构表示。 ; Linux网
您可能关注的文档
最近下载
- 医院实习心得版5篇.docx VIP
- 《电力设备典型消防规程》(DL-5027—2025).docx VIP
- 新课标高考75篇必背古诗文(全篇).pdf VIP
- 201302产业生态学第八讲.pdf VIP
- 产品质量监督抽查复查抽样单.pdf VIP
- 利用产线大数据进行电池内阻预测与快速分选的方法.docx VIP
- 大副实习报告附页.doc VIP
- 201503产业生态学第七章生态工业园.pdf VIP
- 人教版2019必修第一册Unit 2 Travelling around Reading for Writing & Other Parts—Language Points课件.pptx VIP
- 2022-2023学年河北省沧州市七年级(上)期末数学试卷(附答案详解).docx VIP
原创力文档

文档评论(0)