- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP/IP在linux下的具体实现(初稿,未整理)
Liuxs28@163.com 2005-2-25
目录 TOC \o 1-3 \h \z
HYPERLINK \l _ToTCP/IP在linux下的具体实现(初稿,未整理) PAGEREF _To\h 1
HYPERLINK \l _To目录 PAGEREF _To\h 1
HYPERLINK \l _To1 通用TCP/IP逻辑结构; PAGEREF _To\h 1
HYPERLINK \l _To2 .TCP/IP协议栈在linux下的层次 PAGEREF _To\h 2
HYPERLINK \l _To2.2跟实现tcp/ip有关的linux基础知识: PAGEREF _To\h 2
HYPERLINK \l _To2.3 各层之间的关系; PAGEREF _To\h 5
HYPERLINK \l _To3基本数据结构 PAGEREF _To\h 6
HYPERLINK \l _To3.1 msghdr结构 PAGEREF _To\h 6
HYPERLINK \l _To3.2.sk_buff_head{}结构 PAGEREF _To\h 6
HYPERLINK \l _To3 .3socket{}类型; PAGEREF _To\h 9
HYPERLINK \l _To3.4.INET Socket: sock{} PAGEREF _To\h 10
HYPERLINK \l _To3.5以上个结构的跳转及函数指针集合. PAGEREF _To\h 14
HYPERLINK \l _To3.6 struct net_device{ PAGEREF _To\h 14
HYPERLINK \l _To4实例:收发数据包流程图 PAGEREF _To\h 14
HYPERLINK \l _To4.2数据接收过程:以下以图表说明(大致原理类似接受过程): PAGEREF _To\h 16
1 通用TCP/IP逻辑结构;
与ISO提出的OSI定义网络层次(7层)不同,tcp/ip就定义了五层.
应用层
传输层
网络层
数据链路层
物理层
应用层
BSD Socket
Inet socket(tcp/udp)
IP 层
数据链路层
物理层
各层的主要功能及对应的硬件:
物理层:定义传输的电平及硬件接口标准..
数据链路层:对应的是网卡芯片内部程序,用于在ip包前加上相应的frame信息.
可想想成在网卡芯片里有一个进程在干这件事情.直接跟网卡驱动打交道.
网络层:用来路由,数据包分片,负责把一个包发到指定的网络号.;
传输层:把收到的包传给具体的进程(根据端口号)等,及数据包传输控制,重发,检测功能;
应用层:把有用的数据进行重新组装,定义要传输的端口等等;
2 .TCP/IP协议栈在linux下的层次
LINUX下tcp/ip协议栈是以4.4 BSD为模板,估计目前大多数操作系统以此为模板,稍加改动,支持BSD Socket 编程模型;
在服务器端:
调用socket()创建一个socket;
bind()
listen()
accept();
read/write()
在客户端
socket();
connect();
read/write();
2.2跟实现tcp/ip有关的linux基础知识:
在linux下,所有的设备都当作文件节点来管理,网络设备也不例外,即对一个进程中的socket进行读写就相当于对进程中的已打开的文件读写,具体的不同体现在读写函数的不同;
一下简单介绍一下看看进程,文件系统及socket之间的关系;
进程数据
原创力文档


文档评论(0)