摘要:        
创建socket时会创建传输控制块,之后调用初始化函数对控制块进行初始化,其中包括对定时器的初始化,tcp会调用tcp_init_xmit_timers函数来初始化这些定时器,本文将详细分析tcp_init_xmit_timers函数; 下面为这种情况的函数调用关系: 1 /** 2 * inet_    阅读全文
posted @ 2019-10-27 22:10
AlexAlex
阅读(660)
评论(0)
推荐(0)
        
            
        
        
摘要:        
TCP首部图 TCP首部说明 源端口,目的端口 用于寻找发送端和接收端应用进程。(源IP,源端口,目的IP,目的端口) 四元组确定唯一一个TCP连接;(IP,端口)也称为一个插口(socket); 序号 标识从TCP发送端向TCP接收端发送的数据字节流,它标识在当前传输报文段中的第一个数据字节;需要    阅读全文
posted @ 2019-10-27 22:08
AlexAlex
阅读(1455)
评论(0)
推荐(0)
        
            
        
        
摘要:        
前提: A:主动关闭; B:被动关闭; A执行主动关闭,发送FIN,B收到FIN,发送ACK,进入CLOSE_WAIT,B发送FIN,进入LAST_ACK等待最后一个ACK到来; 关闭方式: (1) 收到A发送回来的ACK进入CLOSED状态; (2) 未收到A发送回来的ACK,重传FIN,此时A处    阅读全文
posted @ 2019-10-27 22:06
AlexAlex
阅读(6848)
评论(0)
推荐(0)
        
            
        
        
摘要:        
传输控制块是一个分层的填充结构,每一个层次都增加一些字段,来表示一个通用的控制,它们都是结构中的第一个结构,可以直接从头部直接转换成对应的控制块;如:tcp控制块的tcp_sock的使用slab分配,其大小为整个tcp_sock结构的大小,在下层用不到上层tcp相关属性的时候,只取其中的某个部分即可    阅读全文
posted @ 2019-10-27 22:05
AlexAlex
阅读(552)
评论(0)
推荐(0)
        
            
        
        
摘要:        
getsockname-获取本地地址;比如,在绑定的时候设置端口号为0由系统自动选择端口绑定,或者使用了INADDR_ANY通配所有地址的情况下,后面需要用到具体的地址和端口,就可以用getsockname获取地址信息; getpeername-获取建立连接的对端的地址和端口; 下面为源码分析: 1    阅读全文
posted @ 2019-10-27 22:04
AlexAlex
阅读(1197)
评论(0)
推荐(0)
        
            
        
        
摘要:        
函数原型 read/write系原型 1 #include <unistd.h> 2 3 ssize_t read(int fd, void *buf, size_t count); 1 #include <unistd.h> 2 3 ssize_t write(int fd, const void    阅读全文
posted @ 2019-10-27 22:03
AlexAlex
阅读(1225)
评论(0)
推荐(0)
        
            
        
        
摘要:        
recvmsg系统调用允许用户指定msghdr结构来接收数据,可以将数据接收到多个缓冲区中,并且可以接收控制信息;接收信息过程与其他接收系统调用核心一致,都是调用传输层的接收函数进行数据接收; 1 SYSCALL_DEFINE3(recvmsg, int, fd, struct user_msghd    阅读全文
posted @ 2019-10-27 21:57
AlexAlex
阅读(3184)
评论(0)
推荐(0)
        
            
        
        
摘要:        
recv系统调用对sys_recvfrom进行了简单的封装,只是其中不包含地址信息,其只需要从建立连接的另一端接收信息; 1 /* 2 * Receive a datagram from a socket. 3 */ 4 5 SYSCALL_DEFINE4(recv, int, fd, void _    阅读全文
posted @ 2019-10-27 21:56
AlexAlex
阅读(730)
评论(0)
推荐(1)
        
            
        
        
摘要:        
recvfrom系统调用通过用户传入的接收空间构造msghdr,并且调用sock_recvmsg,该函数调用socket操作的recvmsg函数sock->ops->recvmsg,ipv4对应的是inet_recvmsg,该函数调用传输层的sk->sk_prot->recvmsg来接收数据,如tc    阅读全文
posted @ 2019-10-27 21:55
AlexAlex
阅读(1274)
评论(0)
推荐(0)
        
            
        
        
摘要:        
sendmsg系统调用允许在用户空间构造消息头和控制信息,用此函数可以发送多个数据缓冲区的数据,并支持控制信息;当调用进入内核后,会将用户端的user_msghdr对应拷贝到内核的msghdr中,然后进行数据发送; 1 SYSCALL_DEFINE3(sendmsg, int, fd, struct    阅读全文
posted @ 2019-10-27 21:54
AlexAlex
阅读(3534)
评论(0)
推荐(0)
        
                    
                
浙公网安备 33010602011771号