[传输层]TCP协议


面向连接的传输层协议
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
TCP提供可靠有序,不丢不重
TCP是面向字节流的

TCP工作模型:
在这里插入图片描述
发送方有一个缓存,缓存:
1.待发送
2.已发送但未得到确认
接收方也有一个缓存,缓存:
收到但未确认的
不按序到达的

TCP提供全双工的通信方式

报文格式

MSS:Maximum Segment Size,一个TCP报文中最大可携带多少有效数据

在这里插入图片描述
数据偏移:首部长度,4B为单位,有4位,表示TCP首部长度,所以TCP首部长度范围在20B到4*15=60B

连接管理

在这里插入图片描述

三个阶段:
连接建立-数据传送-连接释放

方式:
客服/服务器方式,主动发起连接的叫客户,被动等待连接建立的叫服务器
客户和服务器都是进程

连接建立:
三次握手
有件事不知当讲不当讲 (询问)
当讲你说吧 (确认)
好的,,巴拉巴拉 (对确认再确认)

在这里插入图片描述
ROUND1:
客户端发送连接请求报文段,无应用层数据
SYN=1,seq=x(随机)

ROUND2:
服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据
SYN=1, ACK=1, seq=y(随机), ack=x+1

ROUND3:
客户端为该TCP连接分配缓存和变量,并向服务器返回确认的确认,并可以携带数据
SYN=0,ACK=1,seq=x+1, ack=y+1

SYN洪泛攻击

连接释放:
四次挥手
我说完了
好的那我想说巴拉巴拉
好我也说完了
好的

在这里插入图片描述
ROUND1:
FIN=1, seq=u

ROUND2:
ACK=1, seq=v, ack=u+1

经过ROUND1和ROUND2,已经单方面断开了A到B的连接,A已经不能向B发送数据了,但B还能向A发送数据

ROUND3:
FIN=1, ACK=1, seq=w(w取决于ROUND2之后服务器端又发了多少), ack=u+1

ROUND4:
客户端回一个确认报文段,再等到2MSL(最长报文段寿命)后,连接彻底关闭
ACK=1,seq=u+1,ack=w+1

但是不一定非要首先客户端去释放连接,也可以服务器首先去释放连接,但是发起连接必须要客户端去发起

ACK报文,握手3,挥手2,挥手4,还有数据传输中的确认报文(你传过来一个,我回一个确认报文),这些确认报文,都不消耗序号

可靠传输

网络层提供的是best-effort,不可靠传输,那么传输层,就要用TCP协议实现可靠传输

校验
报文格式里的校验字段

序号
序号字段

确认
确认报文段
如果由于传输速度等原因失序,那么会发送应到达的报文的确认报文,然后发送方收到以后知道失序,重传

重传
TCP的发送方如果在规定时间内没有收到确认,就要重传已发送的报文段,

重传时间,如果过短,就会导致有些报文还没到就要重传
如果过长,网络空闲又过大

自适应算法RTTs(加权平均往返时间)
冗余确认(冗余ACK)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值