TCP/IP Illustrated
ctthuangcheng
这个作者很懒,什么都没留下…
展开
-
Linux-2.6.25 TCPIP函数调用大致流程
插口层系统调用send sys_send sys_sendtosendto sys_sendto sock_sendmsgsendmsg sys_sendmsg sock_sendmsgwrite sys_write vfs_write file->f_op->write = do_sync_wr转载 2014-12-27 23:05:26 · 1379 阅读 · 0 评论 -
关于 linux中TCP数据包(SKB)序列号的小笔记
关于 SKB序列号的小笔记为了修改TCP协议,现在遇到了要改动tcp分组的序列号,但是只是在tcp_sendmsg函数中找到了SKB的end_seq 一直没有找到seq 不清楚在那里初始化了,就跟踪了分配SKB的函数 sk_stream_alloc_skb()还是没有找到,最后在函数skb_entail中找到:static inline void skb_entail(struct转载 2014-12-27 23:33:30 · 3353 阅读 · 0 评论 -
TCP发送源码学习(2)--tcp_write_xmit
一、tcp_write_xmit()将发送队列上的SBK发送出去,返回值为0表示发送成功。函数执行过程如下:1、检测拥塞窗口的大小。2、检测当前报文是否完全处在发送窗口内。3、检测报文是否使用nagle算法进行发送。4、通过以上检测后将该SKB发送出去。5、循环检测发送队列上所有未发送的SKB。static int tcp_write_xmit(struct sock *sk, unsigned转载 2014-12-28 00:15:41 · 3669 阅读 · 0 评论 -
linux TCP数据包封装在SKB的过程分析
在linux中 tcp的数据包的封装是在函数tcp_sendmsg开始的,在函数tcp_sendmsg中用到skb = sk_stream_alloc_skb(sk, select_size(sk, sg),sk->sk_allocation);分配了一个SKB(暂且称之为old_skb)而真正的发送的SKB并不是old_skb,而是在函数tcp_transmit_skb中新分配了一个skb(暂且转载 2014-12-27 23:38:53 · 1441 阅读 · 0 评论 -
linux TCP数据包重传过程----小结
于TCP/IP协议栈的TCP协议的重传功能是由在linux内核源码(net/ipv4/tcp_output.c)中的函数tcp_retransmit_skb()实现的代码如下:/* This retransmits one SKB. Policy decisions and retransmit queue * state updates are done by the caller. Re转载 2014-12-27 23:50:49 · 2119 阅读 · 0 评论 -
linux TCP头部的构造的简单分析
TCP的头部的构造是在函数tcp_transmit_skb()中进行的函数片段如下:/* Build TCP header and checksum it. */ th = tcp_hdr(skb); th->source = inet->inet_sport; th->dest = inet->inet_dport; th->seq = htonl(tcb->seq); th-转载 2014-12-27 23:45:39 · 1322 阅读 · 0 评论 -
TCP发送源码学习(1)--tcp_sendmsg
一、tcp_sendmsg()函数分析:int tcp_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, size_t size) { struct iovec *iov; /*从通用的struct sock *sk得到struct tcp_sock *tp,其实只是一个强制类型转换,因转载 2014-12-28 00:07:48 · 1540 阅读 · 0 评论 -
TCP发送源码学习(3)--tcp_transmit_skb
一、tcp_transmit_skbstatic int tcp_transmit_skb(struct sock *sk, struct sk_buff *skb, int clone_it, gfp_t gfp_mask) { const struct inet_connection_sock *icsk = inet_csk(sk); struct转载 2014-12-28 00:18:17 · 2196 阅读 · 0 评论 -
linux:关于Linux系统中 CPU Memory IO Network的性能监测
我们知道:系统优化是一项复杂、繁琐、长期的工作.通常监测的子系统有以下这些:CPUMemoryIONetwork下面是常用的监测工具Linux 系统包括很多子系统(包括刚刚介绍的CPU,Memory,IO,Network,等),下面这张图片很好的总结了 Linux 各个子系统以及监控这些子系统所需要的工具 上面的一点终结有助于自己全面学转载 2014-12-27 23:57:20 · 1603 阅读 · 0 评论