TCP的三次握手和四次挥手

TCP三次握手和四次挥手

一、什么是TCP

TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。

  • 面向连接:一定是一对一才能连接,不能像 UDP 协议可以一个主机同时向多个主机发送消息,也就是一对多是无法做到的;
  • 可靠的:无论的网络链路中出现了怎样的链路变化,TCP 都可以保证一个报文一定能够到达接收端;
  • 字节流:用户消息通过 TCP 协议传输时,消息可能会被操作系统分组成多个的 TCP 报文,如果接收方的程序如果不知道消息的边界,是无法读出一个有效的用户消息的。并且 TCP 报文是有序的,当前一个TCP 报文没有收到的时候,即使它先收到了后面的 TCP 报文,那么也不能扔给应用层去处理,同时对重复的 TCP 报文会自动丢弃。

二、什么是 TCP 连接?

简单来说就是,用于保证可靠性和流量控制维护的某些状态信息,这些信息的组合,包括Socket、序列号和窗口大小称为连接。

所以我们可以知道,建立一个 TCP 连接是需要客户端与服务端端达成上述三个信息的共识。

  • Socket:由 IP 地址和端口号组成
  • 序列号:用来解决乱序问题等
  • 窗口大小:用来做流量控制

1、TCP运输连接有以下三个阶段

  1. 建立TCP连接,也就是通过三报文握手来建立TCP连接。
  2. 数据传送,也就是基于已建立的TCP连接进行可靠的数据传输。
  3. 释放连接,也就是在数据传输结束后,还要通过四报文挥手来释放TCP连接。

TCP的运输连接管理就是使运输连接的建立和释放都能正常的进行。

2、TCP的连接建立要解决以下三个问题

  1. 使TCP双方能够确知对方的存在。
  2. 使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)。
  3. 使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

3、TCP标志位

标 志 位 含义
SYN 用于建立连接时同步序列编号。当设置SYN = 1 标志位时,表示希望建立一个连接。
ACK 确认应答标志位。当设置ACK标志位时,表示TCP段中的确认号字段是有效的,用于确认收到的数据。
FIN 结束连接标志位。当设置FIN标志位时,表示发送方已经发送完所有的数据,请求释放连接。
RST 重置连接标志位。当设置RST标志位时,需要释放连接并重新建立。
URG 紧急指针标志位。它指示TCP报文段中的紧急数据字段(Urgent Pointer)有效。
PSH 推送标志位。当设置PSH标志位时,接收方需尽快将该报文段中的数据传送给应用程序,而不是等待缓冲区满。

三、TCP的三次握手

TC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值