TCP主动打开 之 第一次握手-发送SYN

tcp客户端与服务器端建立连接需要经过三次握手过程,本文主要分析客户端主动打开中的第一次握手部分,即客户端发送syn段到服务器端;

 

tcp_v4_connect为发起连接主流程,首先对必要参数进行检查,获取路由信息,改变连接状态成SYN_SENT,再调用inet_hash_connect将控制块加入到ehash,最后调用tcp_connect发送syn;

 

__inet_hash_connect将端口检查通过的控制块加入到ehash;函数对是否设置端口进行了不同处理,若未设置端口,则需要查找一个端口;函数还调用check_established检查是否可以复用处在TIME_WAIT的控制块,以及调用inet_ehash_nolisten将端口对应的控制块加入的ehash;

 

__inet_check_established用于检查与相同端口中处于TIME_WAIT状态的控制块是否可以复用;

 

inet_ehash_nolisten用于将控制块加入ehash,并根据结果做不同处理;

 

tcp_connect用于构造syn包并发送之,发送之后需要设置syn包的重传定时器;

 

本文链接:TCP主动打开 之 第一次握手-发送SYN

转载声明:转载请注明来源:Linux TCP/IP Stack,谢谢!


发表评论

电子邮件地址不会被公开。 必填项已用*标注