tcp专题

目录

一.TCP的连接建立

1.1面向连接

1.2TCP报文结构

1.3TCP三次握手

1.4TCP的状态变化

1.5为什么必须是三次握手,而不是两次或者四次

二.TCP的连接断开

2.1TCP的"四次挥手

2.2TCP的状态变化

2.3为什么要有TIME_WAIT状态

2.4为什么TIME_WAIT状态的时间是2MSL 


一.TCP的连接建立

1.1面向连接

面向连接:在发送数据前,需要先建立一条点到点的连接

点到点:只有双方进行通信

连接:双方前协商的一系列约定

TCP四元组:

源IP地址源端口号
目标IP地址目的端口号

可以唯一区分和标识一条TCP连接

1.2TCP报文结构

序列号:TCP是基于"字节流"的协议,定义为字节流的编号

确认序列号:发送方发送的下一个字节的序号

头部长度:最短20个字节,变长头部

1.3TCP三次握手

SYN报文:客户端向服务器发送请求建立连接的信号

  1. 客户端发送SYN包:客户端向服务器发送一个SYN包,其中包含客户端的初始序列号以及请求建立连接的标志位。

  2. 服务器回复SYN-ACK包:服务器接收到客户端的SYN包后,会回复一个带有SYN和ACK标志的包,其中SYN标志表示同意建立连接,ACK标志表示确认客户端的SYN包已经收到,同时还会告知自己的初始序列号。

  3. 客户端回复ACK包:最后,客户端会回复一个带有ACK标志的包,其中ACK标志表示确认服务器的SYN-ACK包已经收到,连接已经建立成功。

1.4TCP的状态变化

客户端:

               1.关闭状态: 在发送SYN请求建立连接之后,进入到下一个状态

                2.SYN_SENT :客户端等待服务器返回SYN_ACK报文

                3.建立完成:收到服务器返回的SYN_ACK报文,因为此时客户端指向服务器的会话 已经                      建立完成

               客户端发送给服务器的最后一个ACK报文,是允许携带数据的

服务器:

              1.关闭状态:当服务器应用程序创建一个监听的套接字之后,将进入到下一个状态

              2,Listen(侦听状态):当接收到客户端发送的SYN报文之后,为TCP连接分配缓存空                       间,同时,发送SYN_ACK报文段,进入到下一个状态

              3,SYN_RCVD状态:等待客户端回复ACK,收到之后,将进入到下一个状态

              4,建立完成状态

1.5为什么必须是三次握手,而不是两次或者四次

为什么不是两次握手

为什么不是两次握手

三次握手可以防止旧的重复连接造成混乱

二.TCP的连接断开

2.1TCP的"四次挥手

2.2TCP的状态变化

客户端:

建立完成状态 --- 发送完所有字节流后,携带最后一组字节流的数据段同时将FIN标记位置 1,之后,进入到下一个状态

FIN_WAIT_1 --- 等待服务器回复ACK,收到ACK应答之后,将进入到下一个状态

FIN_WAIT_2 --- 等待服务器发送FIN断开请求,将回复ACK进行确认,进入下一个状态

 TIME_WAIT --- 等待2MSL时间后进入下一个状态

CLOSE --- 关闭状态,断开TCP的连接,释放掉所有TCP连接

服务器:

建立完成状态 --- 收到客户端发送的FIN断开请求后,服务器将回复一个ACK确认报文,之 后,进入到下一个状态

CLOSED_WAIT --- 等待服务器自身字节流的发送,当自身所有字节流传递完毕后,将发送一个 FIN断开请求,之后进入到下一个状态

LAST_ACK --- 等待客户端进行最后的ACK应答,当收到客户端发送的ACK确认报文之后,将进 

 入到下一个状态

CLOSE --- 关闭状态,断开TCP的连接,释放掉所有TCP连接占用的资源

2.3为什么要有TIME_WAIT状态

保证TCP会话可以正常关闭

2.4为什么TIME_WAIT状态的时间是2MSL 

MSL  --  报文最大生存时间

设置为2MSL时间的原因

1,最后一个ACK报文丢失,等待对方重传,一来一回正好两个MSL时间,设置为此,则可以 保证TCP会话的正常断开

2,设置2MSL,足以让两个方向上的数据报都丢弃,再出现新的连接时,不至于被历史报文 造成数据错乱

3,太长也不行,导致资源占用过大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值