Linux网络编程
HappyMrSpring
这个作者很懒,什么都没留下…
展开
-
tcp序列号回绕与解决
问题描述tcp协议头中有seq和ack_seq两个字段,分别代表序列号和确认号。tcp协议通过序列号标识发送的报文段。seq的类型是__u32,当超过__u32的最大值时,会回绕到0。 一个tcp流的初始序列号(ISN)并不是从0开始的,而是采用一定的随机算法产生的,因此ISN可能很大(比如(2^32-10)),因此同一个tcp流的seq号可能会回绕到0。而我们tcp对于丢包和乱序等问...转载 2019-01-11 16:01:44 · 4922 阅读 · 0 评论 -
TCP 半连接队列和全连接队列
本篇文章介绍了TCP建连流程中,半连接队列和全连接队列的区别。 1. 简单的 TCP 建连流程先来张图,如下: 1)client 端使用 connect() 向 server 端发起连接请求(发送 syn 包),此时 client 端的 TCP 的状态为 SYN_SENT。2)server 端在收到 SYN 包后,将 TCP 相关信息放到 syn queue(半连接队列...转载 2019-01-11 15:57:03 · 2460 阅读 · 0 评论 -
ss命令详解
ss 是 socket statistics 的缩写。顾名思义,ss 命令可以用来获取socket 统计信息,它可以显示和netstat 类似的内容。但 ss 的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。 当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是 cat /proc/net/tcp,执行速度都会很慢。可能...转载 2019-01-11 17:06:18 · 2517 阅读 · 0 评论 -
netstat -s 各项参数意义
最近在总结2.6.32与2.6.18的差异,我特别有兴趣的是网络部分,但猛然发现其实SNMP counters我也并不能准确解释它们的含义,于是就有了以下总结,还不完整,持续总结中:加粗的项代表TODO,还有一些counters没有列出来。难免有错误,请大家指正吧,我的codebase是linux2.6.git~ TCP Basic类别 名称 描述 Tcp ...转载 2019-01-11 18:28:29 · 13651 阅读 · 0 评论 -
netstat -s TCP连接失败 相关统计 解释
针对问题:TCP连接失败分析:netstat -s输出中和连接失败相关的参数202270382 invalid SYN cookies received 解释:三次握手ack包,syncookies校验没通过; 13700572 resets received for embryonic SYN_RECV sockets 解释:syn_recv状态下,收到非重传的syn包,则返回...转载 2019-01-11 18:34:11 · 3224 阅读 · 0 评论 -
“三次握手,四次挥手”你真的懂吗?
https://mp.weixin.qq.com/s?__biz=MzAxODI5ODMwOA==&mid=2666543559&idx=1&sn=83cf0e9367511d6b311909a5b3dfc81e&chksm=80dcfd6cb7ab747af19259cce70621b269c5fae25582af7c57f5be904bc18e216625cf6...转载 2019-01-11 18:35:53 · 309 阅读 · 0 评论 -
关于udp套接字
setsockopt(SO_REUSEADDR) 同一终端先后两次运行udp server,该选项无影响。 两个(或多个)终端同时运行udp server,配置该选项时,仅第一个终端运行成功;不配置时,所有终端均可成功运行udp server。 udp客户端调用connect() 实现:不发起三次握手;仅将服务端的ip和port信息保存在本地...原创 2019-03-15 10:31:45 · 192 阅读 · 0 评论