tcp协议概述入门

1 网络分层协议栈

记录自己研究网络协议的一些过程。

网络可以按4层分,由下往上分别为:

  • L2:数据链路层,常见协议为ethernet
  • L3:网络层,常见协议为IPv4/IPv6
  • L4:传输层,常见协议为TCP/UDP/SCTP
  • L5:应用层,常见协议为DNS/HTTP/TLS/SSL

4层网络视图如下:

L5
L4
L3
L2

2 TCP协议

2.1 TCP协议的识别

TCP协议一般承载于网络层即L3,比如IPv4/IPv6。

TCP协议,对应IPv4.proto/IPv6.proto为6

4层网络视图如下:

L5
L4:TCP
L3:IP.proto=6
L2

##2.2 TCP协议文档
TCP协议文档,参考:

2.3 TCP报文格式

TCP报文一般分为TCP头TCP数据

TCP头用于实现TCP协议承诺的功能;按bit顺序说明各头部域:

  • 源端口:16bit
  • 目的端口:16bit
  • 序列号:32bit
    • 非syn置位,说明当前tcp包第一字节数据的序列号;
    • syn置位,说明初始序列号即ISN,当前tcp包第一字节数据的序列号为ISN+1
  • 确认号:32bit
    • ack置位,说明发送者期望收到的下一个序列号
    • TCP通信建立后,头部数据总是携带确认号
  • 数据偏移:4bit
    • 一般为TCP头的全长,含后续的options部分
    • 计算时,要乘以4获得正确数据
    • 如数据偏移为0101,那么TCP头全长为b’0101’*4=20
  • 保留位:6bit
  • 控制位:6bit
    • 从左到右依次为:
      • URG: Urgent Pointer field significant
      • ACK: Acknowledgment field significant
      • PSH: Push Function
      • RST: Reset the connection
      • SYN: Synchronize sequence numbers
      • FIN: No more data from sender
  • 滑动窗口:16bit
  • checksum:16bit
    • 用于保证TCP报文(TCP头与TCP数据)的完整性
    • 计算时,先将checksum域置0,然后按16bit为单位计算TCP报文的TCP头与TCP数据
  • urgent指针:16bit
    • 仅再URG置位时,有效;
    • 从当前包的序列号开始偏移,指向urgent数据
  • options:可变
    • 为8bit的倍数
    • 支持3种类型options
      • End of Option List:8bit,b’00000000’
      • No-Operation:8bit,b’00000001’
      • Maximum Segment Size:32bit,最后16bit说明最大段长度即MSS
  • padding:可变,保证TCP头数据为32bit的倍数,全0

TCP数据即为传输的应用数据,数据可以为0即不携带。如3次握手/4次挥手。

TCP报文格式如下:

tcp报文格式

2.4 TCP交互流程

TCP协议通过建立TCP连接,来完成TCP通信。

TCP通信,大概分为3个阶段:

  • 建立连接阶段
    • 涉及通信双方,进行3次握手
    • syn/syn-ack/ack
    • 通信双方的状态,经过syn-sent/syn-recived/estab的变化
    • 涉及初始序列号的设定即ISN
  • 连接建立后通信阶段
    • 通信双方,可以进行双向收发通信
    • 分别通过序列号/确认号,完成通信的可靠性:超时重传等
    • 通过滑动窗口,调节通信速率,避免拥塞
  • 结束连接阶段
    • 涉及通信双方,进行4次挥手
    • 通信双方的状态,经过fin-wait-1/fin-wait-2/time-wait/closing/close的变化
    • 超时机制,保证通信最终能进入close状态

TCP通信交互流程如下:

tcp通信交互流程

2.5 TCP状态机

tcp状态机

2.6 参考报文

https://wiki.wireshark.org/uploads/__moin_import__/attachments/SampleCaptures/200722_tcp_anon.pcapng

2.7 参考资料

https://blog.csdn.net/vertor11/article/details/102614032

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值