TCP建立连接和断开连接

之前编写网络编程,都是按照TCP/IP编程模式下,少量连接正常,但是当连接达到1000000个之后就会出异常,但是代码都采取socket.close()了.

其实,即使一个连接,两端都close,还是显示TIME_WAIT

netstat -an :查看端口

=========================================================================================

TCP:

三次握手建立连接:

  SYN:建立连接

  ACK:确认

  PSH:传送

  FIN:结束

  RST:重置

  URG:紧急

  Sequencenumber:顺序号码

  Acknowledge number:确认号码

主要来下面博文:

http://blog.csdn.net/whuslei/article/details/6667471

http://blog.csdn.net/gukesdo/article/details/7578133

时间: 2024-08-08 12:38:11

TCP建立连接和断开连接的相关文章

TCP协议详解(TCP建立连接与断开连接)

TCP是面向连接的.可靠的进程到进程通信的协议.它提供的是全双工(双向可传输)的服务,每个TCP都有发送缓存和接受缓存,用来临时存储数据. 1.TCP报文段:TCP把若干个字节构成一个分组,称为报文段(segment).TCP报文段封装在IP数据报中,TCP报文段的首部格式如下图所示: 首部长度为20~60个字节,一下是各个字段的含义:①:源端口号:它是16位字段,为发送发进程对应的端口号:②:目标端口号:它是16位字段,对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给哪

TCP保证可靠性、建立连接和断开连接的过程

TCP保证可靠性: (1)序列号.确认应答.超时重传 数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接收的数据序列号.如果发送方迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传.这个时间一般是2*RTT(报文段往返时间)+一个偏差值. (2)窗口控制与高速重发控制/快速重传(重复确认应答) TCP会利用窗口控制来提高传输速度,意思是在一个窗口大小内,不用一定要等到应答才能发送下一段数据,窗

TCP四次挥手断开连接详解

TCP四次挥手. 数据传输结束后,通信的双方都可释放连接.现在A和B都处于ESTABLISHED状态.A的应用程序先向TCP发出连接释放报文段,主动关闭TCP连接.A把连接释放报文段的首部FIN置为1,序号seq=u,它等于前面已传送过的数据的最后一个字节的序号加1.这时A进入FIN-WAIT-1状态,等待B的确认. B收到连接释放报文段后即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号加1.然后B就进入CLOSE-WAIT状态.TCP

TCP建立连接和断开连接过程

假设Client端发起中断连接请求,也就是发送FIN报文.Server端接到FIN报文后,意思是说"我Client端没有数据要发给你了",但是如果你还有数据没有发送完成,则不必急着关闭Socket,可以继续发送数据.所以你先发送ACK,"告诉Client端,你的请求我收到了,但是我还没准备好,请继续你等我的消息".这个时候Client端就进入FIN_WAIT状态,继续等待Server端的FIN报文.当Server端确定数据已发送完成,则向Client端发送FIN报文

TCP连接如何断开连接

我们知道,一个基于TCP/IP的客户端-服务器的程序中,正常情况下,我会是启动服务器使其在一个端口上监听请求,等待客户端的连接:通过TCP的三次握手,客户端能够通过socket建立一个到服务器的连接:然后,两者就可以基于这个socket连接通信了.连接结束后,客户端(进程)会退出:在不需要继续处理客户请求的情况下,服务器(进程)也将退出.而且,当一个进程退出的时候,内核会关闭所有由这个进程打开的套接字,这里将触发TCP的四次挥手进而关闭一个socket连接.但是,在一些异常的情况下,譬如:服务器

TCP建立连接/断开连接之三次握手/四次挥手图解

建立TCP需要三次握手才能建立,而断开连接则需要四次握手.整个过程如下图所示: 先来看看如何建立连接的. 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了. 那如何断开连接呢?简单的过程如下: [注意]中断连接端可以是Client端,也可以是Server端. 假设Client端发起中断连接请求,也就是发送FIN报文.Server端接到FIN报文后,

浅谈TCP协议(建立与断开连接)

TCP是面向连接的,可靠的进程到进程通信的协议.TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存,用来临时存储数据.TCP将若干个字节构成一个分组,成为报文段(segment)TCP报文段封装在IP数据报中:TCP报文段的首部格式如图:首部长度为20--60字节,源端口号:他是16位字段,为发送方进程对应的端口号.目标端口号:他是16位字段,对应的是接收端的进程,接收端收到数据段后,根据这个端口号来确定把数据送给那个应用程序的进程.序号:当TCP从进程接收数据字节时,就

学习TCP/IP - TCP三次握手连接和四次握手断开连接

TCP连接 一.为什么需要TCP 链路层将位流封装成数据帧,同时屏蔽了底层物理层的复杂性; 网络层定义了IP地址,划分了网段,使得源计算机可以快速找到目标计算机,但它无法保证数据准确到达. 所以在传输层定义了TCP协议,它是面向连接的可靠传输协议, 二.TCP如何建立连接 2.1) TCP三次握手建立连接 TCP三次握手创建连接 a. 由于TCP是面向连接的,所以有服务端和客户端之分.服务端先在对应的端口监听(LISTENING), 等待客户端发送的tcp连接请求. b. A机器向B机器发起TC

TCP协议三次握手连接四次握手断开和DOS攻击

转载:http://blog.csdn.net/fw0124/article/details/7452695 TCP连接的状态图 TCP建立连接的三次握手过程,以及关闭连接的四次握手过程 贴一个telnet建立连接,断开连接的使用wireshark捕获的packet截图. 1.建立连接协议(三次握手)(1)客户 端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1.(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志.因此它表示对刚才客