TCP 三次握手 四次挥手

TCP是一种面向连接的可靠传输协议,通过三次握手建立连接,四次挥手关闭连接。握手涉及SYN和ACK标志,确保双方的发送和接收能力。挥手过程确保所有数据被接收,并防止半开连接。SYN攻击是利用SYN报文的伪造源IP进行的DoS攻击,服务器可通过缩短超时时间、增加最大半连接数等手段防御。
摘要由CSDN通过智能技术生成
什么是TCP

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前,通信双方必须在彼此间建立一条连接。所谓的“连接”,其实是客户端和服务端保存的一份关于对方的信息,如ip地址、端口号等。

TCP可以看成是一种字节流,它会处理IP层或以下的层的丢包、重复以及错误问题。在连接的建立过程中,双方需要交换一些连接的参数。这些参数可以放在TCP头部。

一个TCP连接由一个4元组构成,分别是两个IP地址和两个端口号。一个TCP连接通常分为三个阶段:连接、数据传输、退出(关闭)。通过三次握手建立一个链接,通过四次挥手来关闭一个连接。

TCP报文的头部结构

上图中有几个字段需要重点介绍下:

(1)序号seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

(2)确认序号ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。如果你向对方回复了 ack = 31, 代表着你已经收到了序号截止到30的数据,期待的下一个数据起点是 31 。

(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:

SYN:(Synchronize Sequence Numbers)发起一个新连接。
ACK:(Acknowledge character)确认序号有效。
FIN:释放一个连接。
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
URG:紧急指针(urgent pointer)有效。

需要注意的是

  1. 不要将确认序号ack标志位ACK搞混了。

  2. TCP标准规定:
    SYN报文段(即SYN = 1的报文段)不能携带数据,但是要消耗掉一个序号,
    所以前两次握手客户端和服务端都需要向对方回复 ack = x+1 或 y+1 。
    ACK报文段可以携带数据&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值