TCP协议建立连接和终止连接

TCP协议建立连接和终止连接

学习目标:

了解TCP协议
了解TCP三次握手建立连接
了解TCP四次握手断开连接


TCP数据格式:

TCP数据被封装在一个IP数据包中在这里插入图片描述
TCP首部的数据格式
在这里插入图片描述

每个TCP段都包含源端和目的端的端口号,用于寻找发端和收端应用进程。这两个值加上IP首部中的源端IP地址和目的端IP地址唯一确定一个TCP连接


连接与终止:

在这里插入图片描述
建立连接: 三个报文段完成连接的建立,过程也被称为三次握手。

主动发起连接请求端:发送SYN标志位,请求建立连接。携带序号、数据字节数、滑动窗口大小。

被动接受连接请求端:发送ACK标志位,同时携带SYN请求标志位,携带序号、确认序号、数据字节数、滑动窗口大小。

主动发起连接请求端:发送ACK标志位,应答服务器连接请求,携带确认序号。

终止连接: 建立一个连接需要三次握手,而终止一个连接要经过4次握手。这由TCP的半关闭(halfclose)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。当一端收到一个FIN,它必须通知应用层另一端几经终止了那个方向的数据传送。发送FIN通常是应用层进行关闭的结果。

主动关闭连接请求端:发送FIN标志位。
被动关闭连接请求端:应答ACK标志位。(半关闭完成)

被动关闭连接请求端:发送FIN标志位。
主动关闭连接请求端:应答ACK标志位。(连接全部关闭)

滑动窗口: 发送给连接对端,本端的缓冲区大小(实时),保证数据不会丢失。


TCP状态转换图:

在这里插入图片描述

  • 主动发起连接请求端:CLOSE→发送SYN→SEND_SYN→接收ACK、SYN→SEND_SYN→发送ACK→ESTABLISHED(数据通信态)
  • 主动关闭连接请求端:ESTABLISHED→发送FIN→FIN_WAIT_1→接受ACK→FIN_WAIT_2(半关闭)→接收对端发送FIN→FIN_WAIT_2(半关闭)→回发ACK→TIME_WAIT(只有主动关闭连接方,会经历该状态)→等2MSL时长→CLOSE
  • 被动接收连接请求端:CLOSE→LISTEN→接收SYN→LISTEN→发送ACK、SYN→SYN_RCVD→接收ACK→ESTABLISHED
  • 被动关闭连接请求端:ESTABLISHED→接收FIN→ESTABLISHED→发送ACK→CLOSE_WAIT(说明对端【主动关闭连接端】处于半关闭状态)→发送FIN→LAST_ACK→接收ACK→CLOSE

2MSL时长: 一定出现在主动关闭连接请求端。
保证,最后一个ACK能成功被对端接收。(等待期间,对端没收到发送的ACK,对端会再次发送FIN请求)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值