0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TCP协议原理详解

CHANBAEK 来源:嵌入式攻城狮 作者:安迪西 2023-04-21 12:41 次阅读

1. TCP报文封装

一个典型的使用TCP协议封装的数据包,包括以太网MAC头+网络层IP数据头+传输层TCP头+要传输的数据。 详见下图所示:

图片

2. TCP报文结构

TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。 即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。 并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

TCP报文结构如下图示:

图片

TCP报文结构各字段功能如下示:

端口号:表示发送端端口号,字段长16bit

目标端口:表示接收端端口号,字段长16bit

序号:字段长32bit,是指发送数据的位置。 每发送一次数据,就累加一次该数据字节数的大小

确认序号:字段长32bit,是指下一次应该收到的数据的序列号。 实际上,它是指已收到确认应答号减一为止的数据。 发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收

首部长度:字段长4bit,它指出了 TCP 报文段首部长度,以字节为单位,最大能记录15*4=60字节的首部长度

保留:字段长6bit,主要是为了以后扩展时使用。 一般设置为0

标志字段:字段长6bit,这些控制标志也叫做控制位

  • URG:表示本报文段中发送的数据是否包含紧急数据。 URG=1,表示有紧急数据。 后面的紧急指针字段只有当URG=1时才有效
  • ACK:表示是否前面的确认号字段是否有效。 ACK=1,表示有效。 只有当ACK=1时,前面的确认号字段才有效。 TCP规定,连接建立后,ACK必须为1
  • PSH:告诉对方收到该报文段后是否应该立即把数据推送给上层。 如果为1,则表示对方应当立即把数据提交给上层,而不是缓存起来
  • RST:只有当RST=1时才有用。 如果你收到一个RST=1的报文,说明你与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。 或者说明你上次发送给主机的数据有问题,主机拒绝响应
  • SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1
  • FIN:标记数据是否发送完毕。如果FIN=1,就相当于告诉对方:“我的数据已经发送完毕,你可以释放连接了”

窗口大小:字段长16bit,TCP的流量控制由连接的每一端通过声明的窗口大小来提供,窗口大小为字节数,起始于确认序号字段指明的值,这个值是接收端正期望接收的数据序号,发送方根据窗口大小调整发送数据,以实现流量控制。 窗口最大为 65535 字节,当接收方告诉发送方一个大小为 0 的窗口时,将完全阻止发送方的数据发送

校验和:检验和覆盖了整个的 TCP 报文段(TCP 首部和 TCP 数据区域),由发送端计算和填写,并由接收端进行验证

紧急字段:只有当URG标志置1时紧急指针才有效,紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。 简单来说,本TCP报文段的紧急数据在报文段数据区域中,从序号字段开始,偏移紧急指针的值结束

选项字段:选项字段用于提高TCP的传输性能。 其最大长度可根据TCP首部长度进行推算。 TCP首部长度用4位表示,那么选项部分最长为:(2^4-1)*4-20=40字节

图片

  • kind=2,最大报文段长度(MSS)选项:MSS选项用于在建立连接时决定最大段长度的情况,该选项用于大部分操作系统。TCP连接初始化时,通信双方使用该选项来协商最大报文段长度。TCP模块通常将MSS设置为(MTU-40)字节(减掉的这40字节包括20字节的TCP头部和20字节的IP头部)。这样携带TCP报文段的IP数据报的长度就不会超过MTU(假设TCP头部和IP头部都不包含选项字段,并且这也是一般情况),从而避免本机发生IP分片。对以太网而言,MSS值是1460(1500-40)字节
  • kind=3,窗口扩大因子选项:是一个用来改善TCP吞吐量的选项。 TCP连接初始化时,通信双方使用该选项来协商接收窗口的扩大因子。 在TCP的头部中,接收窗口大小是用16位表示的,故最大为65535字节,但实际上TCP模块允许的接收窗口大小远不止这个数(为了提高TCP通信的吞吐量)。 窗口扩大因子解决了这个问题。 假设TCP头部中的接收通告窗口大小是N,窗口扩大因子(移位数)是M,那么TCP报文段的实际接收通告窗口大小是N*2M,或者说N左移M位

3. Wireshark抓包分析

将Socket API编程模型一文中的TCP Server工程源码下载到开发板中,用网线将PC和开发板相连接,开启一个TCP客户端,打开wireshark软件,监听IP地址192.168.1.10

在TCP客户端发送数据

图片

wireshark抓取到相应的TCP数据包,客户机向主机发送数据:ACK=1表示确认序号字段有效,PSH=1表示接收方应该尽快将这个报文段交给应用层

图片

主机收到数据后立即返回相应数据给客户机,ACK=1表示确认序号字段有效,PSH=1表示接收方应该尽快将这个报文段交给应用层

图片

客户机再次给出响应到主机,ACK=1表示确认序号字段有效,PSH=0表示没有数据传递

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 封装
    +关注

    关注

    123

    文章

    7278

    浏览量

    141096
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1271

    浏览量

    78291
  • 网络层
    +关注

    关注

    0

    文章

    39

    浏览量

    10253
  • TCP协议
    +关注

    关注

    1

    文章

    83

    浏览量

    12004
  • Wireshark
    +关注

    关注

    0

    文章

    46

    浏览量

    6449
收藏 人收藏

    评论

    相关推荐

    TCPIP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    TCPIP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议
    发表于 09-28 12:45

    modbus协议讲解modbus-rtu以及modbus-tcp协议详解

    modbus协议讲解modbus-rtu以及modbus-tcp协议详解,见附件。
    发表于 03-01 10:14

    TCP-IP详解_卷3_TCP事务协议,HTTP,NNTP

    TCP-IP详解_卷3_TCP事务协议,HTTP,NNTP和UNIX域协议
    发表于 03-24 22:42 39次下载

    TCP-IP详解_卷1_协议

    TCP-IP详解_卷1_协议
    发表于 03-24 22:45 50次下载

    TCP/IP详解,卷3:tcp事务协议等(pdf电子书)

    TCP/IP详解,卷3:tcp事务协议等(pdf电子书):第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方
    发表于 08-06 08:54 505次下载

    tcp ip协议详解卷三 下载

    tcp ip协议详解卷三:第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握的四个基本方面:    T/
    发表于 05-19 11:52 437次下载
    <b class='flag-5'>tcp</b> ip<b class='flag-5'>协议</b><b class='flag-5'>详解</b>卷三 下载

    tcp ip协议详解卷二

    tcp ip协议详解卷二:第13章IGMP:Internet组管理协议13.1 引言I G M P在本地网络上的主机和路由器之间传达组成员信息。路由器定时向“所有主机组”多播I G M
    发表于 05-19 12:00 542次下载

    tcp ip协议详解卷一

    tcp ip协议详解卷一:《TCP/IP详解,卷1:协议》是一本完整而详细的
    发表于 05-19 12:02 711次下载

    tcp ip协议_什么是tcp ip协议

    什么是tcp ip协议tcp ip协议详解,深刻讲述了tcp ip
    发表于 05-14 16:29 5697次阅读
    <b class='flag-5'>tcp</b> ip<b class='flag-5'>协议</b>_什么是<b class='flag-5'>tcp</b> ip<b class='flag-5'>协议</b>

    TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNI

    TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议,个人收集整理了很久的资料,大家根据自己情况,有选择性的下载吧~
    发表于 10-27 14:04 0次下载

    TCP-IP详解卷2_ARP:地址解析协议

    TCP-IP详解卷2 ARP:地址解析协议,学习TCP很好的资料。欢迎下载。
    发表于 05-09 14:13 0次下载

    TCP:传输控制协议

    TCP-IP详解卷2 TCP:传输控制协议,学习TCP很好的资料。欢迎下载。
    发表于 05-09 14:33 0次下载

    TCP-IP详解卷2_域和协议

    学习TCP很好的资料,电子书:TCP-IP详解卷2 。
    发表于 05-09 14:33 0次下载

    Siemens PLC TCP协议详解

    Siemens PLC TCP 协议详解 说明:蓝色文字表示已经破解部分,[红色文字] 表示对破解部分数字的说明,黑色文字表示对破解部分的进一步说明,黑色斜体加粗文字表示未破解部分,高亮文字部 分表示驱动需要处理的部分,未标
    发表于 04-17 11:46 3次下载
    Siemens PLC <b class='flag-5'>TCP</b><b class='flag-5'>协议</b><b class='flag-5'>详解</b>

    CCLINK IE FIELD BASIC转MODBUS-TCP网关MODBUS TCP协议详解

    协议的不同,数据读取困难,这是很多生产管理系统的难题。但是现在,远创智控YC-CCLKIE-TCP通讯网关,让这个问题变得非常简单。这款通讯网关可以将各种MODBUS-TCP设备接入到CCLINK
    的头像 发表于 07-11 12:15 930次阅读
    CCLINK IE FIELD BASIC转MODBUS-<b class='flag-5'>TCP</b>网关MODBUS <b class='flag-5'>TCP</b><b class='flag-5'>协议</b><b class='flag-5'>详解</b>