刚才看Linux下connect()函数的时候,其返回值会代表一些错误信息,既然是网络连接过程中的错误信息,当然跟跟三次握手协议有很大的关系,这下把三次握手协议从百度拿了过来。重新理解了一下。
TCP握手协议
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN: 同步序列编号(Synchronize Sequence Numbers)
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于 Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。
Backlog参数:表示未连接队列的最大容纳数目。
SYN-ACK 重传次数服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。
半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
分享到:
相关推荐
Wireshark入门 tcp三次握手
多学学tcp吧,以后看抓包的时候非常有用,不然是看不懂的哦。
TCP协议三次握手过程分析
flash作品:tcp三次握手动画演示 计算机网络、多媒体通信课堂大作业、课程设计等。
捕获TCP连接的过程的数据包。 2)分析三次握手建立TCP连接的过程,描述数据包序列图。(包括 SYN标志和SEQ值) 1)检查FTP交互数据报文中用户名和密码是否用明文传送
三次握手,TCP/IP协议三次握手,TCP/IP协议三次握手
tcp三次握手过程详细解释
传输控制协议,TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接,文档介绍TCP三次握手和4次挥手过程以及详细实例介绍,
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
在TCP/IP协议中,建立连接协议是三次握手,关闭连接是四次握手。
计算机通信网中的传输协议TCP所采用的三次握手协议有关的指导,希望有所帮助。
通过图解,简单明了的介绍了tcp三次握手/四次挥手的全过程,解释为什么建立连接协议是三次握手,而关闭连接却是四次握手
tcp三次握手四次挥手 TCP(传输控制协议)的三次握手和四次挥手是用于建立连接和释放连接的重要过程。 三次握手的过程如下: 1. 客户端向服务器发送SYN包(同步序列编号),请求建立连接,并包含自身的数据序列号...
主要描述TCP协议三次握手四次挥手过程,很详细,非常值得拥有
tcp三次握手四次挥手
对于从事网络编程的人来说,此书必不可少,因为它给你讲解一些TCP的内部机制和原理......好书不用多说
自己动手用viso画了个图
ubuntu下自己写tcp协议(server.c,client.c,Makefile),通过tcpdump生成 .cap文件后,利用wireshark分析tcp三次握手的整个过程
TCP/IP协议中TCP面向连接的可靠传输,以及三次握手确认连接 UDP面向数据报无连接的不可靠传输