上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 30 下一页
摘要: send系统调用只是对sendto系统调用进行了封装,传递的参数不包含目的地址信息,数据会发送到已经建立连接的另一端的地址; 1 /* 2 * Send a datagram down a socket. 3 */ 4 5 SYSCALL_DEFINE4(send, int, fd, void __ 阅读全文
posted @ 2019-10-27 21:52 AlexAlex 阅读(602) 评论(0) 推荐(0) 编辑
摘要: sendto系统调用用于向指定的目的地址发送数据,其系统调用的流程比较容易理解,如下面所示,其主要完成 (1)将用户数据组织成msghdr,(2)而后调用socket操作的sendmsg;ipv4对应的sendmsg实现为inet_sendmsg,该函数进行端口自动绑定检查和绑定后,调用传输层的se 阅读全文
posted @ 2019-10-27 21:51 AlexAlex 阅读(1408) 评论(0) 推荐(1) 编辑
摘要: 用户端在使用sendmsg/recvmsg发送或者接收数据时,会使用msghdr来构造消息,其对应的内核结构为user_msghdr;其中msg_iov向量指向了多个数据区,msg_iovlen标识了数据区个数;在通过系统调用进入内核后,该结构中的信息会拷贝给内核的msghdr结构; 1 /* 用户 阅读全文
posted @ 2019-10-27 21:50 AlexAlex 阅读(5683) 评论(0) 推荐(0) 编辑
摘要: select是IO多路复用的一种方式,用来等待一个列表中的多个描述符的可读可写状态; 1 SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_set __user *, outp, 2 fd_set __user *, exp, stru 阅读全文
posted @ 2019-10-27 21:48 AlexAlex 阅读(607) 评论(0) 推荐(0) 编辑
摘要: close系统调用用于关闭文件描述符,其系统调用实现如下所示; 1 / 2 * Careful here! We test whether the file pointer is NULL before 3 * releasing the fd. This ensures that one clon 阅读全文
posted @ 2019-10-27 21:47 AlexAlex 阅读(902) 评论(0) 推荐(0) 编辑
摘要: listen函数 1 #include <sys/socket.h> 2 3 int listen(int sockfd, int backlog); 4 5 //ret-成功返回0 失败返回-1 listen仅由服务器调用,它做两件事情: (1) 当socket创建一个套接字的时候,它被假设为一个 阅读全文
posted @ 2019-10-27 20:57 AlexAlex 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 最近一直在读内核网络协议栈源码,这里以ipv4/tcp为例对socket相关系统调用的流程做一个简要整理,这些相关系统调用的内部细节虽然各有不同,但其调用流程则基本一致; 调用流程: (1)系统调用 –> (2)查找socket –> (3)执行socket的对应操作函数 –> (4)执行传输层协议 阅读全文
posted @ 2017-10-03 01:51 AlexAlex 阅读(2490) 评论(0) 推荐(0) 编辑
摘要: shutdown用来关闭一个全双工连接的部分或者全部,比如关闭读,关闭写,或者读写全部关闭; 1 /* 2 * Shutdown a socket. 3 */ 4 5 SYSCALL_DEFINE2(shutdown, int, fd, int, how) 6 { 7 int err, fput_n 阅读全文
posted @ 2017-10-03 00:59 AlexAlex 阅读(753) 评论(0) 推荐(0) 编辑
摘要: 当connect作用于流套接字的时候,是地址指明的对端建立连接,对于TCP来讲,connect会完成与对端的三次握手建立连接的过程;当connect作用于数据报套接字的时候,用于指明发送的对端地址,并且只能向该地址发送数据,指明之后,可以使用send等发送数据,无需使用sendto的参数再次指明发送 阅读全文
posted @ 2017-10-02 23:43 AlexAlex 阅读(1456) 评论(0) 推荐(0) 编辑
摘要: accept系统调用完成的工作是,从已经完成三次握手的连接队列中取一个连接,进行后续服务; 调用过程中,会重新分配一个socket,以及关联文件和传输控制块,如果应用层需要获取对端信息,则将对端信息拷贝到用户空间; 1 /* 2 * For accept, we attempt to create 阅读全文
posted @ 2017-10-02 21:57 AlexAlex 阅读(1124) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 30 下一页