资讯专栏INFORMATION COLUMN

TCP协议小结

Freelander / 715人阅读

摘要:协议的定义属于传输层协议,提供了一种端到端的连接。如果两次校验和一致说明数据是正确的,否则将认为数据被破坏,接收端将丢弃该数据紧急指针尽在紧急控制位为时有效。结尾是一个非常复杂的协议,这里稍微总结了一下,随着学习时间增加,继续补充。

TCP协议的定义

TCP属于传输层协议,提供了一种端到端的连接。

是面向连接的、可靠的的进程到进程通信的协议

TCP提供全双工服务,即数据可在同一时间双向传播

TCP将若干个字节构成一个分组,此分组称为报文段(Segment)

TCP的功能

将数据进行分段打包传输

对每个数据包编号控制顺序

运输中丢失、重发和丢弃处理

流量控制避免拥塞

TCP数据包封装 

源端口号和目标端口号,计算机通过端口号识别访问哪个服务,比如http服务或ftp服务,发送方端口号是进行随机端口,目标端口号决定了接收方哪个程序来接收

32位序列号 TCP用序列号对数据包进行标记,以便在到达目的地后重新重装,假设当前的序列号为 s,发送数据长度为 l,则下次发送数据时的序列号为 s + l。在建立连接时通常由计算机生成一个

确认应答号 它等于下一次应该接收到的数据的序列号。假设发送端的序列号为 s,发送数据的长度为 l,那么接收端返回的确认应答号也是 s + l。发送端接收到这个确认应答后,可以认为这个位置以前所有的数据都已被正常接收。

首部长度:TCP 首部的长度,单位为 4 字节。如果没有可选字段,那么这里的值就是 5。表示 TCP 首部的长度为 20 字节。

控制位 TCP的连接、传输和断开都受这六个控制位的指挥

URG 紧急指针:控制位为 1 时有效。表示紧急数据的末尾在 TCP 数据部分中的位置。通常在暂时中断通信时使用(比如输入 Ctrl + C)。

ACK(acknowledgement 确认)为1表示确认号

PSH(push急迫位) 缓存区将满,立刻传输速度

RST(reset重置位) 连接断了重新连接

SYN(synchronous建立联机) 同步序号位 TCP建立连接时要将这个值设为1

FIN发送端完成位,提出断开连接的一方把FIN置为1表示要断开连接

窗口大小:用于表示从应答号开始能够接受多少个 8 位字节。如果窗口大小为 0,可以发送窗口探测。 窗口值 说明本地可接收数据段的数目,这个值的大小是可变的。当网络通畅时将这个窗口值变大加快传输速度,当网络不稳定时减少这个值可以保证网络数据的可靠传输。它是来在TCP传输中进行流量控制的

校验和: 用来做差错控制,TCP校验和的计算包括TCP首部、数据和其它填充字节。在发送TCP数据段时,由发送端计算校验和,当到达目的地时又进行一次检验和计算。如果两次校验 和一致说明数据是正确的,否则 将认为数据被破坏,接收端将丢弃该数据

紧急指针:尽在 URG(urgent紧急) 控制位为 1 时有效。表示紧急数据的末尾在 TCP 数据部分中的位置。通常在暂时中断通信时使用(比如输入 Ctrl + C)

TCP的握手与断开

 建立连接时的三次握手

第一次握手主机A通过一个标识为SYN标识位的数据段发送给主机B请求连接,通过该数据段告诉主机B希望建立连接,需要B应答,并告诉主机B传输的起始序列号

第二次握手是主机B用一个确认应答ACK和同步序列号SYNC标志位的数据段来响应主机A,一是发送ACK告诉主机A收到了数据段,二是通知主机A从哪个序列号做标记。

第三次握手是主机A确认收到了主机B的数据段并可以开始传输实际数据。

断开连接时的四次请求

主机A发送FIN控制位发出断开连接的请求

主机B进行响应,确认收到断开连接请求

主机B提出反方向的关闭要求

主机A确认收到的主机B的关闭连接请求

为什么要四次分手?

TCP协议是一种面向连接的、可靠的、基于字节流的运输层通信协议。TCP是全双工 模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2, 它的数据已经全部发送完毕了;但是,这个时候主机1还是可以接受来自主机2的数据;当主机2返回ACK报文 段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的;当主机2也发送了FIN 报文段时,这个时候就表示主机2也没有数据要发送了,就会告诉主机1,我也没有数据要发送了,之后彼此 就会愉快的中断这次TCP连接。

结尾

TCP是一个非常复杂的协议,这里稍微总结了一下,随着学习时间增加,继续补充。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/107598.html

相关文章

  • 互联网协议入门(二)

    摘要:以太网协议最后,数据包嵌入以太网数据包。以太网数据包需要设置双方的地址,发送方为本机的网卡地址,接收方为网关的地址通过协议得到。服务器端响应经过多个网关的转发,的服务器,收到了这四个以太网数据包。 七、一个小结 先对前面的内容,做一个小结。 我们已经知道,网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本...

    xorpay 评论0 收藏0
  • tftp安装和使用小结

    摘要:而且最近在更新网络交换机固件的时候发现使用相比来说更加容易,想想就整一篇简单的文档出来。端口号为,它基于协议而实现。 前言 我相信大家接触到tftp大多数原因是PXE网络自动化部署的功劳,一般是在Linux环境下采用PXE+TFTP+DHCP+(HTTP/FTP/NFS)来实现,因为最近在生产环境中分别测试使用了云霁科技的Cloudboot和大名鼎鼎的Cobbler,只是针对大规模型号...

    mo0n1andin 评论0 收藏0
  • 流畅度提高 100%!七牛云 QUIC 推流方案如何实现直播 0 卡顿?

    摘要:现在,经过一年多的探索和实践,七牛云直播云产品已经拥抱,最新推出的直播推流方案可以大幅度的降低直播的卡顿问题,可以在各种复杂网络环境下给客户提供优秀的直播体验。所以七牛的推流方案就是把当中的传输层协议换成,从而达到推流卡顿率下降的效果。 不做任何开发,弱网环境下实现直播零卡顿,听上去是不是天方夜谭?看完这篇文章你就知道,七牛直播云是如何做到的。 showImg(https://segm...

    赵春朋 评论0 收藏0
  • 网安精英赛总结

    摘要:数字签名的基本特征不可伪造性不可否认行消息完整性。入侵检测系统主要作用是发现并报告系统中未授权或违反安全策略的行为。在协议中,协议指的是组管理协议,位于协议的网络层。是网络层的协议,地址欺骗攻击属于网络层的安全风险。网安精英赛复赛小结 ...

    bingchen 评论0 收藏0
  • Java NIO 的前生今世 之二 NIO Channel 小结

    摘要:通常来说所有的的操作都是从开始的一个类似于一个和对比我们可以在同一个中执行读和写操作然而同一个仅仅支持读或写可以异步地读写而是阻塞的同步读写总是从中读取数据或将数据写入到中类型有文件操作操作操作操作使用在服务器端这些通道涵盖了和网络以及文件 Java NIO Channel 通常来说, 所有的 NIO 的 I/O 操作都是从 Channel 开始的. 一个 channel 类似于一个 ...

    JasonZhang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<