TCP(一) 基本概念、握手、术语

本文深入解析TCP传输控制协议,对比UDP,阐述其面向连接、可靠性、拥塞控制等特性,介绍三次握手、四次挥手过程及TIME_WAIT状态的意义。
TCP基本概念

TCP Transmission Control Protocol 传输控制协议是一种面向连接的、可靠的、传输层协议。TCP协议基于IP层
在这里插入图片描述

TCP跟UDP的区别

区别:
1.TCP面向连接的,UDP无连接
2. TCP基于字节流传输,UDP基于数据报传输
3. TCP是可靠的,具备有序、不丢失、不重复、无差错等特性,UDP不具备
4. TCP具备拥塞控制、流量控制等机制,UDP不具备
5. TCP对系统开销更大,UDP较小

应用场景:
1 . 一些应用层协议都会基于TCP协议,利用TCP的可靠稳定的机制,比如HTTP、FTP等,对数据传输的完整性要求高、质量要求高
2. UDP对数据完整性需求低,对实时性和传输速度要求高,比如网络视音频传输

TCP格式

在这里插入图片描述
TCP头部固定20个字节

source port : 源端口 2个字节
dest port:目的端口 2字节
sequence number:报文序号,表示报文段中第一个数据的序号,4字节
acknlwledgment number:确认序号,4字节,接收端期望收到的下一个序号,是上次已陈工收到数据字节序号加1
offset:首部中32bit的数目,4位 0.5字节
reserved:预留,4位 0.5字节
tcp flags: 8位 有8个flag

  • URG:紧急指针
  • ACK:应答域有效
  • PSH:PUSH操作,数据包到达接收端后,立即传送给应用程序
  • RST:连接复位表示,复位错误连接、拒绝错误和非法的数据包
  • SYN:同步序号,用于握手
  • FIN:结束序号,用于挥手

Window:滑动窗口大小 2字节
Checksum:检验和 2字节;检验和是对“数据段头”,“数据”,“伪头部”这三部分进行校验。伪头部包括源主机和目的主机的IP地址,TCP协议号,TCP数据段长度
Urgent Poiner:紧急指针 2字节,当URG为1时候才有用,指出本数据段中紧急数据的字节数
TCP Options: 其他TCP参数 共4个字节

TCP 三次握手和状态

TCP协议提供可靠的连接服务,通过三次握手进行连接初始化。三次握手的目的是同步连接双方的序列号和确认号并交换TCP窗口大小的信息。
在这里插入图片描述
三次握手流程:

  1. 客户端发起握手报文,SYN为1,seq=x ,进入SYN_SEND状态
  2. 服务端接收到客户端的SYN握手报文,状态变为SYN_RCVD状态,响应报文seq=y,ack=x+1
  3. 客户端接收到服务端的响应报文,状态变为Estalished
  4. 客户端向服务端发送ack = y +1 报文
  5. 服务端接收到ack报文,状态变为Estalished

三次握手的意义:
防止已经失效的连接请求报文突然传送到服务端,产生错误,造成不需要的连接浪费资源
例子:
客户端发起连接,超时较久,过了长时间后服务端才接收到,回复ACK,假如只有2次握手,那么这是就建立了连接,但是实际上这个连接是不需要的;有第三次握手,客户端就不会回复ACK,连接就不会被建立完成

TCP 四次挥手和状态

在这里插入图片描述
四次挥手流程:
服务端和客户端都可以主动断开连接,假设主动断开连接为A,被动为B

  1. A 发起 FIN ,A状态变为FIN_WAIT_1
  2. B 接收到FIN,回复ACK,状态变为CLOSE_WAIT
  3. B 回复FIN,状态变为LAST_ACK
  4. A 接收到B的FIN,状态变为TIME_WAIT2
  5. A 等待片刻后回收端口资源,B端变为Close

四次握手的意义:
TCP协议是全双工的,双方都可以同时发送数据,因此当一方要断开连接时,需要确保对端的数据传输也完成,才可以断开连接。因此有4次挥手:

  1. 主动断开的一方A,告知对方B数据发送完成,要断开连接,FIN
  2. B接收到了FIN,响应ACK,代表收到了断开连接的请求
  3. B处理完剩余数据,告知A自己的数据也传输完成,可以断开连接,FIN
  4. A回复ACK,确认收到B的FIN,连接确认断开

例子:
客户端发起连接,超时较久,过了长时间后服务端才接收到,回复ACK,假如只有2次握手,那么这是就建立了连接,但是实际上这个连接是不需要的;有第三次握手,客户端就不会回复ACK,连接就不会被建立完成

TIME_WAIT
TIME_WAIT 状态都是出现在主动断开连接的一方,正常情况下连接都是由客户端断开

TIME_WAIT的作用::
(1) 表示主动断开连接的一方接收到了对方的FIN,等待一段时间(操作系统决定)后再回收资源端口,进入close
(2) 主动断开方A最后会回复ACK,如果这个ACK丢失了那么B会重发FIN;如果不维持FIN_WAIT状态,直接断开连接,那么服务端重发的FIN会造成断开方A的报错
(3) 在TIME_WAIT期间,客户端无法创建相同IP端口的连接,可以保证下次用相同IP和端口连接时,旧连接的数据是完全消失的

网络中的数据单位

报文 message:应用层中的数据传输单位
段 segment:多个段组成报文,是传输层的数据传输单位
包 package:网络层传输单位,TCP IP中的基本单元
数据报 datagram: 面向无连接数据传输方式时的基本单元,UDP
帧 frame:数据链路层单位

MTU:Maximum Transmit Unit IP网络层的最大传输单元
MSS:Maximum Segent Size TCP提交给IP层的最大分段大小,传输层的段大小

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值