TCP/IP第四层--传输层TCP数据报文详解

TCP提供面向连接、可靠的字节流服务,通过MSS协商、重传机制、校验、排序、丢弃重复数据及流量控制保障可靠性。文章深入解析TCP数据报文结构,包括报文的Options,如MSS、SACK等,以及TCP连接建立过程和数据传输中的流量控制。
摘要由CSDN通过智能技术生成
               

 

 

      与UDP不同的是,TCP提供了一种面向连接的、可靠的字节流服务。TCP协议的可靠性主要有以下几点保障:

      (1)应用数据分割成TCP认为最适合发送的数据块。这部分是通过“MSS”(最大数据包长度)选项来控制的,通常这种机制也被称为一种协商机制,MSS规定了TCP传往另一端的最大数据块的长度。值得注意的是,MSS只能出现在SYN报文段中,若一方不接收来自另一方的MSS值,则MSS就定为536字节。一般来讲,在不出现分段的情况下,MSS值还是越大越好,这样可以提高网络的利用率。

      (2)重传机制。设置定时器,等待确认包。

      (3)对首部和数据进行校验。

      (4)TCP对收到的数据进行排序,然后交给应用层。

      (5)TCP的接收端丢弃重复的数据。

      (6)TCP还提供流量控制。(通过每一端声明的窗口大小来提供的)

 

 

 

 

 

1.TCP/IP 协议数据封装的过程


以传输层采用TCP或者UPD、网络层采用IP、链路层采用Ethernet为例,可以看到TCP/IP中报文的封装过程如图所示。用户数据经过应用层协议封装后传递给传输层,传输层封装TCP头部,交给网络层,网络层封装IP头部后,再交给数据链路层,数据链路层封装Ethernet帧头和帧尾,交给物理层,物理层以比特流的形式将数据发送到物理线路上。

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示。

 

 

       以太网驱动程序(网卡)首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload,指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。IP地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不同进程的地址,IP地址和端口号合起来标识网络中唯一的进程。

 

       注意,虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。

 

 

 

 

 

2.TCP/IP 数据包


我们通过 Wireshark 抓包:就分别看到五层数据:

第一行Frame 3339:物理层数据帧:线路83字节,实际捕获83字节

第二行Ethernet II:链路层网卡,以太网协议版本II,源地址:厂名_序号(网卡地址),目的:厂名_序号(网卡地址)

第三行Internet Protocol Version 4:网络层ip数据包,IPV4,源IP地址:10.44.13.7;目的IP是:10.171.8.154

第四行Transmission Control Protocol:传输层TCP数据包:源端口21000,目的端口:52529;Seq序列号:每发送一个RTP数据包,序列 号就加1;ACK是TCP数据包首部中的确认标志,对已接收到的TCP报文进行确认,其为  183589表示确认号有效;Len长度是17字节;

第五行data:数据

 

 

整个数据封装的格式如下图所示:

 

        

 

Wireshark显示的下面这些数据信息的顺序与各数据包内各字段的顺序相同,其他帧的内容展开与此类似。

 

帧号 时间    源地址          目的地址      高层协议 包内信息概况
No. Time    Source         Destination      Protocol    Info
1 0.000000 202.203.44.225   202.203.208.32 TCP     2764 > http [SYN] Seq=0 Len=0 MSS=1460                       源端口>目的端口[请求建立TCP链接]
                           第一层物理层的数据帧概况

Frame 1 (62 bytes on wire, 62 bytes captured) 1号帧,线路62字节,实际捕获62字节
     Arrival Time: Jan 21, 2008 15:17:33.910261000     捕获日期和时间
     [Time delta from previous packet:0.00000 seconds]此包与前一包的时间间隔
     [Time since reference or first frame: 0.00 seconds]此包与第1帧的间隔时间
     Frame Number: 1                                    帧序号
     Packet Length: 62 bytes                            帧长度
     Capture Length: 62 bytes                           捕获长度
     [Frame is marked: False]                           此帧是否做了标记:否
     [Protocols in frame: eth:ip:tcp]                   帧内封装的协议层次结构
     [Coloring Rule Name: HTTP]            用不同颜色染色标记的协议名称:HTTP
     [Coloring Rule String: http || tcp.port == 80]     染色显示规则的字符

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值