TCP----传输控制协议

TCP----传输控制协议是一种面向连接的可靠传输协议。(可靠、有序、无丢失和无重复)

特点:
  • TCP是一种面向连接的传输协议
  • 每一条TCP连接有且只能存在两个端口,形成一种端到端的连接形式
  • 可靠、有序、无丢失和无重复
  • TCP是面向字节流
  • TCP是提供全双工通讯
发送缓存:
  • 想要发送的应用层数据
  • 已经发送但未收到确认的数据
接收缓存:
  • 按序到达但还未被应用程序提取的数据
  • 乱序到达的数据

TCP会话的四元组信息:源IP、源端口、目的IP、目的端口

TCP报文段

确认序列号表明是接收方期望收到发送方发送的下一个字节的序号且表示之前的所有数据均已接受。(累积确认

ACK确认位:当ACK=1时,确认序列号有意义。在连接建立后所有传输的报文段都必须将该标记位置为1。
SYN同步位:代表连接请求。
FIN终止位:表明此报文段发送方数据已发送完毕,要求释放连接。

RST复位:当TCP连接出现严重错误时,必须释放连接,然后重新建立传输连接。
URG紧急位:当URG=1时,表明此报文段中存在紧急数据,是高优先级数据,应尽快传输给应用层程序处理,不再缓存在排队。配合紧急指针使用。
PSH推送位:当PSH=1时,接收方应尽快交付数据给应用层程序,不再等待缓存填满再向上交付。

TCP的可靠性
排序机制
MTU---最大传输单元 

最大传输单元(Maximum Transmission Unit,MTU)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。 
是包或帧的最大长度,一般以字节记。如果MTU过大,在碰到路由器时会被拒绝转发,因为它不能处理过大的包。如果太小,因为协议一定要在包(或帧)上加上包头,那实际传送的数据量就会过小,这样也划不来。大部分操作系统会提供给用户一个默认值,该值一般对用户是比较合适的。


MSS---最大段长度----TCP分段--->该参数是需要在TCP建立握手过程中通过前两次SYN报文段来进行协商确定

最大报文段长度(MSS)是TCP协议的一个选项,用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(不包括文段头)。

如果在本地进行了分段操作,则不需要进行分片操作。

确认机制和重传机制
RTT---往返时间(一个连接的往返时间,即数据发送时刻到接收到确认的时刻的差值)

RTO---超时重传时间;略大于RTT时间--->动态变化的数值。加倍的形式进行变化。(重传超时时间,即从数据发送时刻算起,超过这个时间便执行重传。)

超时重传----快速重传

在快速重传机制中,并不是因为RTO时间到达从而触发重传机制,该重传机制是根据对端的反馈信息进行重传,当连续3三收到相同的ACK报文时,发送端会重传数据。这3个连续的ACK报文被称为冗余ACK

累计确认----选择确认

选择确认机制也是需要进行协商的。

流控----流量控制机制

窗口:指定的无需等待确认应答,而可以继续发送数据包的最大值。

窗口大小体现在缓存区的大小。

TCP要求发送方依据接收窗口rwnd来控制数据的发送量。rwnd等于接收方接收缓存大小减去已存数据量大小。即rwnd变量是可变的

TCP面向连接

TCP连接的建立

TCP连接建立需要解决的问题:
1、要使双方均知晓对方的套接字信息。
2、允许双方进行参数协商(MSS、窗口值、是否使用选择确认机制)
3、给各设备进行资源分配

TCP连接释放

1、对双方各自资源的释放过程
2、任何一方都可以在数据传输结束后发送连接释放通知
三次握手和四次挥手中相关问题:
第三次握手的时候,报文丢失会不会触发重传机制?
如果该报文携带数据,服务端就一定会发送应答报文,第三次握手报文丢失则服务端不会发送应答报文,会触发重传机制;如果该报文不携带数据,服务端不会发送应答报文,客户端无法判断该报文是否到达或丢失,所以不会触发重传机制。由此可以知道,TCP连接的建立并不会百分百成功连接。


为什么三次握手的时候请求报文的序列号是随机生成的?
安全问题:其他与客户端连接的主机可以根据的客户端与服务端之间传递的报文获取到传输数据的大小,并访用序列号加数据去向客户端和服务端发送恶意报文。
使用问题:报文的序列号是有限个数的,序列号用完时会再次循环使用,如使用固定序列号(A、B、C、、、Z),若第一个序列号为A请求报文因传输问题没有即使到达服务端,客户端因重传机制再次发送序列号为A的报文,在序列号一轮使用完成时,第一次发送的报文恰好抵达,而服务端只知道接受的报文序列号为A,便会接收此报文,从而导致数据错乱。


第三次握手时,报文便可以携带数据传输,那可不可以将三次握手减少为两次握手?
如果三次握手减少为两次,当第一次握手报文传播时应传输问题没有到达服务端,触发重发机制,客户端再一次发送请求报文,服务端正常接收,传输数据完成后四次挥手断开连接,服务端收到客户端第一次发送的报文,服务端发送应答报文并进入连接已建立状态,而客户端收到应答报文时,会将报文丢弃,导致服务端进入连接已建立状态浪费资源。 


如果在数据传播过程中,客户端崩溃,服务器并不会直接关闭连接(TCP保活计时器=两个小时)。在到达两个小时后,服务端会向客户端发送探测报文,一共会发送十次探测报文。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值