- 博客(10)
- 收藏
- 关注
原创 MPTCP skb路径
meta_sk->reinject_queue 跟 meta_sk->sk_write_queue 差不多,目前的pm中reinject_queue的发送优先级高于sk_write_queue。相同的[seq, endseq]会同时存在meta_sk->sk_write_queue, meta_sk->reinject_queue, subsk->sk_write_queue。
2023-07-28 19:22:22
44
1
原创 MPTCP 64bit seq
接收端只有在 MPTCPHDR_SEQ64_SET 启用时 MPTCPHDR_SEQ64_INDEX, MPTCPHDR_SEQ64_OFO 才有用, 见 mptcp_get_64_bit。在 mptcp_check_sndseq_wrap 中 snd_hiseq_index ^= 1, 然后 snd_high_order[i] += 2;所以 rcv_high_order 使用 rcv_high_order[i] 和 rcv_high_order[i+1]。
2023-07-24 21:37:01
50
原创 MPTCP DSS && MPTCPHDR_INF
处理完一个或多个接收包(=一个发送包)后调mptcp_reset_mapping,重置 map_data_len,map_data_seq,map_subseq,map_data_fin,mapping_present。三次握手后 maskter_sk = meta_sk, 然后 meta_sk 会重新分配seq, snd_nxt, rcv_nxt, write_seq, copied_seq 等。= 0 并且没有established连接,见 mptcp_verif_dss_csum()
2023-07-23 17:08:21
57
原创 MPTCP pre_established fully_established
如果多个包全不是mptcp包,则mapping_present=0,那么mptcp_queue_skb() 会直接return,然后 tp->rcv_nxt - tp->copied_seq > 65536, 然后被reset。如果前一部分是mptcp的包,后一部分不是mptcp包,则mapping_present=1,然后会被mptcp_verif_dss_csum() reset。所以客户端需要 mptcp_ack_timer,不停的发送第三个ack,直到收到第四个ack。
2023-07-22 14:42:46
48
原创 mptcp_version
v1: 在option=MPTCP_SUB_ADD_ADDR 时需要加密,收包时在 mptcp_handle_add_addr 验证。mptcp_version 只有两个版本 v0、v1。
2023-07-19 19:07:10
54
原创 64位汇编参数传递
当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。当参数为7个以上时, 前 6 个与前面一样, 但后面的依次从 “右向左” 放入栈中,即和32位汇编一样。
2023-07-16 08:44:07
258
空空如也
发送邮件时如何在服务器保存邮件
2023-07-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人