TCP-三次握手

 该枚举类型列出tcp socket的所有可能的状态

typedef enum
{
  TCP_CLOSED,//0
  TCP_LISTEN,//1
  TCP_SYN_SENT,//2
  TCP_SYN_RECEIVED,//3
  TCP_ESTABLISHED,//4
  TCP_FINWAIT1,//5
  TCP_FINWAIT2,//6
  TCP_CLOSE_WAIT,//7
  TCP_LAST_ACK,//8
  TCP_CLOSING,//9
  TCP_TIME_WAIT//10
}tcp_state_enum_type ;

如下log是通过高通芯片进行TCP相关操作时抓取到的其TCP/IP协议栈的log,下面的wireshark的数据包也是由该log解析而得到:

log中的SEQ和ACK均为16进制表示,wireshark数据包中的是以十进制表示,它们是完全对应的

从log中可以看到,第一次client端SYN报文发出后,收到了server的SYN+ACK,可是client端认为没收到,又进行重传(对应TCP Retransmission报文),服务器也做了应答,不过这次应答是重复的(Dup ACK),最后收到ACK,三次握手成功


 

 

如下过程是一次标准的三次握手过程:

用于抓取log的模块作为TCP server,从log可以看出,

1.(ps_tcpin.c)当服务器收到SYN(seq=aa86d000,ack=0)报文后,

socket state:1 -> 3(TCP_LISTEN -> TCP_SYN_RECEIVED

2.(ps_tcpout.c)紧接着服务器发出确认报文SYN+ACK(seq=9dc30000,ack=aa86d001)

3.(ps_tcpin.c)收到最后一个ACK(seq=aa86d001,ack=9dc30001),至此,三次握手结束

socket state: 3 -> 4(TCP_SYN_RECEIVED -> TCP_ESTABLISHED

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值