首页 > 其他 > 详细

TCP/IP: 插口I/O

时间:2019-05-20 10:33:34      阅读:113      评论:0      收藏:0      [点我收藏+]

插口层对应的O/I,主要是用于发送数据,接收数据,数据的select选择。

 

  • 插口缓存:

缓存的概念是很明白的,每个插口都有一个发送缓存和一个接收缓存。设置缓存是为了加快读取和输出速度。

 

  • 插口宏和函数

不一一列举,无聊的函数。

 

  • write,witev,sendto,sendmsg的系统调用

这四个函数的作用是往网络连接上发送数据。

作为内核函数,进程通过内核函数调用,传输到相关协议,如TCP,UDP,ICMP,TP4等。就是一个目的要将进程的数据传输到网络连接的协议栈上。

然后就是无聊的数据结构和包结构。

 

  • sendmsg系统调用

通过这函数可以访问到插口API相关的所有功能。

这个函数有三个参数:插口描述符:指向msghdr结构的指针;几个控制标志。

 

  • sendit函数

无聊的函数。

 

  • sosend函数

复杂的函数,但是很重要。sosend函数根据协议支持的语义和缓存限制,将数据和控制信息传送给pr_usrreq函数。sosend从不将数据放在发送缓存中。

 

  • read,readv,recvfrom,recvmsg系统调用

所有的插口输入都是由soreceive处理

从recv,recvmsg,recvit,soreceivr最后到TCP.UDP,ICMP,TP4.这是个连环的过程。

 

  • recvmsg系统调用

1复制IOV函数

2recvit收集数据,并且释放缓存。

无聊的函数调用

 

  • recvit函数

recvit函数,无聊的函数,中转站。。。

 

  • soreceive函数

主要作用是从插口的接受缓存传送到进程制定的缓存。

带外数据OOB

报文边界

控制信息和带外数据

OOB的主要作用是标记和同步。

 

  • Select系统调用

selscan函数

soo_select函数

selrecord函数

selwakeup函数

 

  • 小结:

本节主要介绍了读写和选择系统调用。

具体的机制和实现手段细节要具体看。分层的增加和减少未来会动态的变化。

但是没有什么计算机技术的问题是分层解决不了的。

 

TCP/IP: 插口I/O

原文:https://www.cnblogs.com/lordwind/p/10892094.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!