您的位置:首页 > 理论基础 > 计算机网络

[TCP协议]三次握手及四次挥手

2016-01-28 23:49 309 查看
TCP协议三次握手及四次挥手
什么是TCP协议

TCP的连接过程
TCP连接的建立三次握手

TCP连接的释放四次挥手

[TCP协议]三次握手及四次挥手

什么是TCP协议

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

TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它有如下特点:

TCP是面向连接传输层协议

TCP提供可靠的交付服务

TCP是全双工通信,在连接的两端都设有发送缓存接收缓存

发送缓存用来暂存TCP**准备发送**的数据

以及TCP已经发送尚未收到确认的数据

接收缓存用来暂存按序到达的但尚被接收应用程序读取的数据

以及不按序到达的数据

TCP是面向字节流的,应用程序和TCP交互是一次一个大小不等的数据块

TCP传送的数据单元成为报文段。报文段分为TCP首部TCP数据两部分。



TCP报文段首部:



下面稍微解释一下三次握手以及四次握手要用到的字段:

端口是传输层和应用层的服务接口

序号字段seq,TCP为传送的数据流中的每一个字节都编上一个序号。序号字段的值指本报文段所发送的数据的第一个字节的序号。

确认号ack是期望收到对方的下一个报文段的数据的第一个字节的序号。若确认号为N,表明到N-1为止的数据都已经正确收到。

数据偏移,表明首部的长度

确认位ACK,只有当ACK=1时确认号字段有效,ACK=0时确认号无效,TCP规定在连接建立后所有传送的报文段都必须把ACK置1.

同步位SYN,SYN=1表示这是一个连接请求或连接接收保温。

当SYN=1,ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则在响应报文中使用SYN=1,ACK=1。

终止位FIN 用来释放一个连接。FIN=1表明此报文段的发送方的数据已经发送完毕,并要求释放传输连接。

TCP的连接过程

TCP是面向连接的协议,因此每一个TCP连接都有三个阶段:连接建立,数据传送和连接释放。TCP连接的传输层的协议端口称作套接字(socket)。传输层的协议端口拼接到IP地址即构成了套接字。

TCP连接的建立采用Client/Server方式。主动发起连接建立的应用进程叫做Client,被动等待连接建立的应用进程叫做Server。

TCP连接的建立(三次握手)



Client像Server发送连接请求报文,其中首部SYN=1, seq将随机生成为一个数x。

Server为该TCP连接分配TCP缓存和变量。SYN和ACK置为1,确认号ack为x+1,seq为服务器随机生成的一个数y

Client收到确认报文后,为该连接分配缓存和变量。ACK=1,seq=x+1,确认号ack为y+1。该报文段可以携带数据了。

TCP连接的释放(四次挥手)



Client打算关闭连接,就向TCP发送一个连接释放报文段,该报文段FIN=1,seq=u(前面发送的序号+1)。此时Client不再发送数据。

Server收到连接释放报文段后即发出确认,确认号是ack=u+1,seq=v(前面发送的序号+1)。此时Client到Server这个方向的连接就释放了,TCP连接处于半关闭状态。

若Server已经没有要向Client发送的数据了,就通知Client释放连接,此时FIN=1,seq=w

Client收到连接释放报文段后,必须发出确认,ACK=1,ack=w+1,此时TCP连接还没有释放掉,需要等待2MSL后,才进入到连接关闭状态。

参考:

1 http://biancheng.dnbcw.info/1000wen/438107.html

2 http://www.cnblogs.com/rootq/articles/1377355.html

3 王道论坛 2015计算机网络联考复习指导
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: