[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连接的建立(三次握手)

这里写图片描述

  1. Client像Server发送连接请求报文,其中首部SYN=1, seq将随机生成为一个数x。
  2. Server为该TCP连接分配TCP缓存和变量。SYN和ACK置为1,确认号ack为x+1,seq为服务器随机生成的一个数y
  3. Client收到确认报文后,为该连接分配缓存和变量。ACK=1,seq=x+1,确认号ack为y+1。该报文段可以携带数据了。

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

这里写图片描述

  1. Client打算关闭连接,就向TCP发送一个连接释放报文段,该报文段FIN=1,seq=u(前面发送的序号+1)。此时Client不再发送数据。
  2. Server收到连接释放报文段后即发出确认,确认号是ack=u+1,seq=v(前面发送的序号+1)。此时Client到Server这个方向的连接就释放了,TCP连接处于半关闭状态。
  3. 若Server已经没有要向Client发送的数据了,就通知Client释放连接,此时FIN=1,seq=w
  4. 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计算机网络联考复习指导

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值