TCP三次握手

本文详细阐述了TCP协议的安全机制,强调其面向连接和流式传输特点,并重点讲解了三次握手的过程,包括客户端和服务器如何建立和确认连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TCP协议是一个安全的、面向连接的、流式传输协议。
安全:TCP在安全方面提供了一些保护机制。虽然TCP本身并不是一个安全协议,但它可以与其它安全协议(如SSL/TLS)结合使用,以实现数据传输的安全性。

面向连接:TCP是一种面向连接的协议,这意味着在进行数据传输之前,发送方和接收方需要通过建立连接来进行通信。

流式传输:TCP使用流式传输机制,将数据划分为连续的字节流。它不关心数据被分成多少个包或数据包的顺序,而是将数据视为一个连续的流。

三次握手

Tcp连接是双向连接,客户端和服务器需要分别向对方发送连接请求,并且建立连接,三次握手成功之后,二者之间的双向连接也就成功建立了。如果要保证三次握手顺利完成,必须要满足以下条件:

服务器端:已经启动,并且启动了监听(被动接受连接的一端)
客户端:基于服务器端监听的IP和端口,向服务器端发起连接请求(主动发起连接的一端)

三次握手具体过程如下:
偷的@爱编程的大丙 大佬的图

第一次握手:

客户端:客户端向服务器端发起连接请求将报文中的SYN字段置为1,生成随机序号x,seq=x
服务器端:接收客户端发送的请求数据,解析tcp协议,校验SYN标志位是否为1,并得到序号 x

第二次握手:

服务器端:给客户端回复数据

回复ACK, 将tcp协议ACK对应的标志位设置为1,表示同意了客户端建立连接的请求
回复了 ack=x+1, 这是确认序号
x: 客户端生成的随机序号
1: 客户端给服务器发送的数据的量, SYN标志位存储到某一个字节中, 因此按照一个字节计算,表示客户端给服务器发送的1个字节服务器收到了。
将tcp协议中的SYN对应的标志位设置为 1, 服务器向客户端发起了连接请求
服务器端生成了一个随机序号 y, 发送给了客户端
客户端:接收回复的数据,并解析tcp协议

校验ACK标志位,为1表示服务器接收了客户端的连接请求

数据校验,确认发送给服务器的数据服务器收到了没有,计算公式如下:

发送的数据的量 = 使用服务器回复的确认序号 - 客户端生成的随机序号 ===> 1=x+1-x

校验SYN标志位,为1表示服务器请求和客户端建立连接

得到服务器生成的随机序号: y

第三次握手

客户端:发送数据给服务器

将tcp协议中ACK标志位设置为1,表示同意了服务器的连接请求
给服务器回复了一个确认序号 ack = y+1
y:服务器端生成的随机序号
1:服务器给客户端发送的数据量,服务器给客户端发送了ACK和SYN, 都存储在这一个字节中
发送给服务器的序号就是上一次从服务器端收的确认序号因此 seq = x+1
服务器端:接收数据, 并解析tcp协议

查看ACK对应的标志位是否为1, 如果是1代表, 客户端同意了服务器的连接请求

数据校验,确认发送给客户端的数据客户端收到了没有,计算公式如下:

给客户端发送的数据量 = 确认序号 - 服务器生成的随机序号 ===> 1=y+1-y

得到客户端发送的序号:x+1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值