Socket
zhangskd
一路风雨,一路奔跑
展开
-
Socket层实现系列 — bind()的实现(一)
bind()函数的使用方法很简单,但是它是怎么实现的呢?笔者从应用层出发,沿着网络协议栈,分析了bind()的系统调用、Socket层实现,以及它的TCP层实现。本文主要内容:bind()的系统调用、bind()的Socket层实现。内核版本:3.6Author:zhangskd @ csdn原创 2013-11-11 16:50:47 · 19241 阅读 · 1 评论 -
Socket层实现系列 — I/O事件及其处理函数
主要内容:Socket I/O事件的定义、I/O处理函数的实现。内核版本:3.15.2我的博客:http://blog.csdn.net/zhangskd I/O事件定义 sock中定义了几个I/O事件,当协议栈遇到这些事件时,会调用它们的处理函数。struct sock { ... struct socket_wq __rcu *sk_wq; /*原创 2015-05-23 22:25:25 · 10153 阅读 · 0 评论 -
Socket层实现系列 — 信号驱动的异步等待
主要内容:Socket的异步通知机制。内核版本:3.15.2我的博客:http://blog.csdn.net/zhangskd 概述 socket上定义了几个IO事件:状态改变事件、有数据可读事件、有发送缓存可写事件、有IO错误事件。对于这些事件,socket中分别定义了相应的事件处理函数,也称回调函数。 Socket I/O事件的处理过程中,要使用到sock原创 2015-05-23 22:24:51 · 7489 阅读 · 0 评论 -
Socket层实现系列 — accept()的实现(二)
本文主要分析accept()的阻塞等待和唤醒。内核版本:3.6Author:zhangskd @ csdn blog 等待队列 (1)socket的等待队列/* * @sk_wq: sock wait queue head and async head */struct sock { ... struct socket_wq __rcu原创 2013-11-18 18:18:16 · 5623 阅读 · 1 评论 -
Socket层实现系列 — accept()的实现(一)
本文主要介绍了accept()的系统调用、Socket层实现,以及TCP层实现。内核版本:3.6Author:zhangskd @ csdn blog应用层int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);原创 2013-11-18 18:15:44 · 12856 阅读 · 0 评论 -
Socket层实现系列 — listen()的实现
本文主要分析listen()的内核实现,包括它的系统调用、Socket层实现、半连接队列,以及监听哈希表。内核版本:3.6Author:zhangskd @ csdn blog原创 2013-11-11 16:54:38 · 13436 阅读 · 3 评论 -
Socket层实现系列 — connect()的实现
主要内容:connect()的Socket层实现、期间进程的睡眠和唤醒。内核版本:3.15.2我的博客:http://blog.csdn.net/zhangskd 应用层 int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);Connects the socket ref原创 2015-05-23 22:29:12 · 13222 阅读 · 0 评论 -
Socket层实现系列 — bind()的实现(二)
本文主要内容:bind()的TCP层实现、端口的冲突处理,以及不同内核版本的实现差异。内核版本:3.6Author:zhangskd @ csdn原创 2013-11-11 16:52:57 · 6833 阅读 · 1 评论 -
Socket层实现系列 — 睡眠驱动的同步等待
主要内容:Socket的几个I/O事件、Socket的同步等待机制。内核版本:3.15.2我的博客:http://blog.csdn.net/zhangskd 概述 socket上定义了几个IO事件:状态改变事件、有数据可读事件、有发送缓存可写事件、有IO错误事件。对于这些事件,socket中分别定义了相应的事件处理函数,也称回调函数。 Socket I/O事件原创 2015-05-23 22:24:35 · 6362 阅读 · 0 评论 -
Socket层实现系列 — getsockname()和getpeername()的实现
本文主要介绍了getsockname()和getpeername()的内核实现。内核版本:3.6Author:zhangskd @ csdn blog 应用层 int getsockname(int s, struct sockaddr *name, socklen_t *namelen);原创 2013-11-18 18:12:45 · 15768 阅读 · 0 评论 -
Socket层实现系列 — send()类发送函数的实现
主要内容:socket发送函数的系统调用、Socket层实现。内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd以下是send()、sendto()、sendmsg()和sendmmsg()的发送流程图,这四个函数除了在系统调用层面上有些差别,在Socket层和TCP层的实现都是相同的。原创 2015-09-06 22:23:56 · 19595 阅读 · 1 评论