TCP数据段


传输控制协议TCP(Transmission Control Protocol)

  • 专门为了在不可靠的互联网络上提供可靠的端到端字节流而设计
  • TCP必须动态地适应不同的拓扑、带宽、延迟、分组大小和其它的参数,并且当有错误的时候,能够足够健壮

支持TCP的机器都有一个TCP实体,或者是用户进程或者是操作系统内核,都可以管理TCP流和跟IP层的接口

发方:封装→TCP实体接收本地进程的用户数据流,将其分割成不超过64kB的分片(实践中,通常分割成1460字节,以通过以太网传输)

收方:解封装→当包含TCP数据段的报文到达某台机器的时候,被提交给传输实体,传输实体将其重构出原始的字节流

  • TCP连接上的每个字节都有它自己独有的32位序列号
  • 收发双方的TCP实体以数据段的形式交换数据
  • 一个数据段包括20字节的头部(不包括可选项)和数据域(0或更多字节)


TCP数据段

TCP软件决定数据段的大小,有两个因素限制了数据段的长度:

  • TCP数据段必须适合IP的65515的载荷限制
  • 每个TCP数据段必须适合于下层网络的最大传输单元MTU(例如以太网载荷大小1500字节)
  • TCP使用的基本协议具有动态窗口大小的滑动窗口协议(sliding window protocol)

数据段格式


  1. 源端口(Source port)和目的端口(Destination port):标明了一个连接的两个端点,用来跟踪同一时间内通过网络的不同会话,一般每个端口对应一个应用程序
  2. 序列号(Sequence number):表示一个字节的编号,可以说每一个字节都有一个序列号,其中有一个非常特殊的序列号叫初始序列号(简称ISNs)它是随机产生的
  3. 确认号(Acknowledgement number):期望接收的对方发过来的字节编号,在TCP里为了保证数据的可靠传递,采用了肯定确认机制、累计确认技术,这个时候就要用到确认号(例如确认号是500,就表示收到了发方发出的499、498等序列号的字节,下一次发方就可以从序列号为500的字节发数据过来)
  4. TCP段头长度(TCP header length):4字节,含义跟IP的段头长度一样
  5. 保留字段(图片中灰色部分):如其名,不过现在也逐步启用,例如用来做一些拥塞控制等等
  6. URG~FIN:6个控制比特(每个都用1bit表示)
  7. 窗口尺寸(Window size):告诉对方可以发送的数据字节数(从确认字节号开始连续发送的字节总数),窗口尺寸的大小取决于接收方
  8. 校验和(Checksum):和UDP中一样
  9. 紧急指针(Urgent pointer):和URG控制位配合使用 指明了紧急数据

控制比特URG-FIN

  • URG:当紧急指针使用的时候,URG被置为1,而紧急指针是一个对于当前序列号的字节偏移量,标明紧急数据从哪里开始
  • ACK:1表示确认号有效,0表示确认号无效
  • PSH:表示这是带有PUSH标志的数据,接收方收到这样的数据,应该立刻送到上层,而不需要缓存它
  • RST:被用来重置一个已经混乱的连接
  • SYN:用在连接建立的过程里面,通常SYN和ACK一起指示了连接建立的某个环节
  • FIN:被用来释放连接,表示发送方已经没有数据要传输,但是可以继续接收数据



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值