TCP协议小结一--TCP连接与释放以及TCP与UDP的区别

TCP协议建立连接和释放连接过程以及十一种状态。

TCP协议小结一--TCP连接与释放以及TCP与UDP的区别_第1张图片

TCP连接三次握手

  1.客户端首先发起连接,也就是第一次握手,处于SYN_SENT状态。

  2.服务器端收到SYS 数包,立即发送ACK 应答,并发送自己的SYN(第二次握手);状态被置为SYN_RECEIVED。

  3.客户端接收到服务器端的应答,将自己置于ESTABLISHED,表示已经准备就绪,同时发出ACK 应答(第三次握手)。

  4.服务器端接收到应答,立即将自己置于ESTABLISHED 状态,开始发送数据。

数据传输keepalive

  中间的这段时间可以称之为连接保持阶段,既服务器端与数据段正在传输数据。

TCP连接四次挥手

1.客户端接收完数据后,发送FIN,同时将自己置于FIN_WAIT_1 状态,等待服务器端的应答。
2.服务器端收到关闭请求,将自己置于CLOSE_WAIT,等待本地用户(进程)的关闭命令。同时发送应答告诉客户端可以关闭,并且自己也向客户端请求关闭,发出后将自己从CLOSE_WAIT 变迁到LAST_ACK 状态,等待客户端应答后由本地用户(进程)执行关闭操作。
3.客户端在接到服务的应答后,将自己的状态置于FIN_WAIT_2,等到服务器段发出FIN( 关闭请求), 当接收到服务器端发来的FIN 之后, 将自己置于TIME_WAIT(因为是客户端发起的关闭所以是TIME_WAIT,如果是服务器端发起的关闭,那么我们看到的将是CLOSE_WAIT。CLOSE_WAIT 是我们在浏览网页时经常看到的状态,因为网页传输完成后通常由服务器发起关闭命令),等待一定的时间以确保服务器接收到应答。

TCP协议的11种状态

LISTEN:等待从任何远端TCP 和端口的连接请求。(监听)

SYN_SENT:发送完一个连接请求后等待一个匹配的连接请求。(请求连接发送)

SYN_RECEIVED:发送连接请求并且接收到匹配的连接请求以后等待连接请求确认。(建立连接接收)

ESTABLISHED:表示一个打开的连接,接收到的数据可以被投递给用户。连接的数据传输阶段的正常状态。

FIN_WAIT_1:等待远端TCP 的连接终止请求,或者等待之前发送的连接终止请求的确认。

FIN_WAIT_2:等待远端TCP 的连接终止请求。

CLOSE_WAIT:等待本地用户的连接终止请求。

CLOSING:等待远端TCP 的连接终止请求确认。

LAST_ACK:等待先前发送给远端TCP 的连接终止请求的确认(包括它字节的连接终止请求的确认)

TIME_WAIT:等待足够的时间过去以确保远端TCP 接收到它的连接终止请求的确认。

CLOSED:不在连接状态(这是为方便描述假想的状态,实际不存在)

TCP(Transmission Control Protocol)传输控制协议

位码即tcp标志位,有6种标示:SYN(synchronous建立联机)  ACK(acknowledgement 确认)   PSH(push传送)   FIN(finish结束)   RST(reset重置)   URG(urgent紧急)   Sequence number(顺序号码)    Acknowledge number(确认号码)
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
1、第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
2、第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
3、第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据.

![三次握手与四次挥手的时序图](https://img-blog.csdn.net/20161222101709248?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRGF2aWRfc25qbHk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

TCP与UDP区别总结:

1、TCP面向连接(三次握手);UDP是无连接的,即发送数据之前不需要建立连接。
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的;
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

你可能感兴趣的:(IT经典,学习总结)