TCPIP第四层--传输层TCP数据报⽂详解与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和R
ARP属于链路层,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
tcpip协议pdf第四⾏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.3
2 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]    染⾊显⽰规则的字符串:
第⼆层数据链路层以太⽹帧头部信息
Ethernet II, Src: AcerTech_5b:d4:61 (00:00:e2:5b:d4:61), Dst: Jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a)
以太⽹协议版本II,源地址:⼚名_序号(⽹卡地址),⽬的:⼚名_序号(⽹卡地址)
Destination: Jetcell_e5:1d:0a (00:d0:2b:e5:1d:0a) ⽬的:⼚名_序号(⽹卡地址)
Source: AcerTech_5b:d4:61 (00:00:e2:5b:d4:61) 源:⼚名_序号(⽹卡地址)
Type: IP (0x0800) 帧内封装的上层协议类型为IP(⼗六进制码0800)看教材70页图3.2
第三层⽹层IP包头部信息
Internet Protocol, Src: 202.203.44.225 (202.203.44.225), Dst: 202.203.208.32 (202.203.208.32)  互联⽹协议,源IP地址,⽬的IP地址    Version: 4 互联⽹协议IPv4(此部分参看教材119页图4.15的IPv4数据报字段结构)
Header length: 20 bytes                            IP包头部长度
Differentiated Services Field:0x00(DSCP 0x00:Default;ECN:0x00)差分服务字段
Total Length: 48                                        IP包的总长度
Identification:0x8360 (33632)                            标志字段
Flags:      标记字段(在路由传输时,是否允许将此IP包分段,教材125页)
Fragment offset: 0  分段偏移量(将⼀个IP包分段后传输时,本段的标识)
Time to live: 128                                          ⽣存期TTL
Protocol: TCP (0x06)                        此包内封装的上层协议为TCP
Header checksum: 0xe4ce [correct]                头部数据的校验和
Source: 202.203.44.225 (202.203.44.225)                  源IP地址
Destination: 202.203.208.32 (202.203.208.32)              ⽬的IP地址
以下为传输层TCP数据段头部信息
Transmission Control Protocol, Src Port: 2764 (2764), Dst Port: http (80), Seq: 0, Len: 0    传输控制协议TCP的内容
Source port: 2764 (2764)源端⼝名称(端⼝号)(此部分参看教材149页图5.7)
Destination port: http (80)                ⽬的端⼝名http(端⼝号80)
Sequence number: 0    (relative sequence number)    序列号(相对序列号)
Header length: 28 bytes                                      头部长度
Flags: 0x02 (SYN)        TCP标记字段(本字段是SYN,是请求建⽴TCP连接)
Window size: 65535                              流量控制的窗⼝⼤⼩
Checksum: 0xf73b [correct]                        TCP数据段的校验和
Options: (8 bytes)                                          可选项
3.TCP 数据包的报⽂
1、TCP建⽴连接,断开,数据传输都是使⽤同样数据报⽂格式。
其中我们抓包看到Transmission Control Protocol ⾸部的数据信息:
Transmission Control Protocol, Src Port: 21000, Dst Port:52529, Seq: 12936, ACK 183589 Len: 17    传输控制协议TCP的内容
Source port: 21000源端⼝名称(端⼝号)(⽤于寻发端应⽤进程)
Destination port: 52529                ⽬的端⼝
Sequence number: 0    (relative sequence number)    序列号(相对序列号,此序列号⽤来确定传送数据的正确位置,且序列号,⽤来侦测丢失的包);
[Next sequence number: 215 (relative sequence number)] #下⼀个序列号
Acknowledgement number :183589  是32位确认序号,确认其有效;
Header length: 32 bytes      头部长度
Flags: 0x02 (SYN)        TCP标记字段(本字段是SYN,是请求建⽴TCP连接)
Window size value: 6364                              流量控制的窗⼝⼤⼩
Checksum: 0xf73b [correct]                        TCP数据段的校验和
Options: (12 bytes)                                          可选项
下⾯说明详细说明:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。