美文网首页
TCP协议详解

TCP协议详解

作者: 小驴小驴 | 来源:发表于2021-08-20 00:55 被阅读0次

TCP

  • 前言
    • 网络模型简图
  • 一、TCP协议结构
  • 二、TCP三次握手与状态流转
  • 三、TCP四次挥手与状态流转

前言

网络模型简图

1.网络模型.png

TCP协议存在于上述网络模型中的传输层,它的作用与UDP协议一样都是应对在不同的机器上,数据端到端发送与接收。

TCP协议,其本质还是协议且TCP协议的本质也就是一堆二进制数据,在TCP协议中客户端与服务端双方都需要遵守协议规定。

相比于UDP而言,TCP协议是面向连接,因此其传输相比于UDP要更加的安全。

一、TCP协议结构

2.TCP结构图.png
  • Source Port

    16 bits,数据发送源的端口号

  • Destination Port

    16 bits,数据发送的目的地端口号

  • Sequence Number

    32 bits,该字段的值指的是本报文段所发送的数据的第一个字节的序号。

  • Acknowledgment Number

    32bits,是期望收到对方的下一个报文段的数据的第一个字节的序号。一旦建立了连接,它就会一直发送,这一点可TCP三次握手、四次挥手中的理论不太一致

  • Data Offset

    4 bits,如果熟悉Netty中LengthFieldBasedFrameDecoder类的同学应该对这个字段不陌生。在TCP协议结构中,该字段是指Data距离该TCP报文的偏移量是多少

  • Reserved

    6 bits,保留字段,今后可能会使用

  • Control Bits

    6bits

    • URG:当该字段置1时,表示紧急指针字段生效,应尽快传送
    • ACK:当该字段置1时,包响应
    • PSH:当该字段置1时,表示包中携带实际的Data数据
    • RST:当该字段置1时,表示连接需要重置,需要先释放之后再重新建立连接
    • SYN:当该字段置1时,表示该数据包是请求建立连接
    • FIN:当该字段置1时,该数据包的发送者表示数据已经发送完毕,请求另一段断开连接
  • Window

    16 bits,告诉对端自己只能接受Window表示的数值以内的数据大小

  • Checksum

    16 bits,主要用来校验数据

  • Urgent Pointer

    16 bits,数据包中紧急数据共有多少个字节,而紧急数据在本报文Data中的最前面,那么也就是说,紧急数据的偏移量为:[Data Offset,Data Offset + Urgent Pointer]

  • Options

    多选项含义,如可以表示告诉对方本端的MSS限制,注意,这里的限制是对TCP报文中Data长度的限制

  • Padding

    为了保证TCP数据包中的首部(除了Data数据区)字节长度为32 bits的整数倍,这个举措跟JVM中对象头有点类似

二、TCP三次握手与状态流转

3.TCP三次握手.gif

三、TCP四次挥手与状态流转

4.TCP四次挥手断开连接.gif

相关文章

网友评论

      本文标题:TCP协议详解

      本文链接:https://www.haomeiwen.com/subject/wgtabltx.html