TCP/IP协议相关——IP、TCP结构及功…

时间:2021-07-18 20:46:31

TCP/IP的优点
• 好的破坏恢复机制。
•  能够在不中断现有服务的情况下加入网络。
•  高效的错误率处理。
•  平台无关性。
•  低数据开销。

T C P和I P 共同管理网络上流进和流出的数据流。 I P不停地把报文放到以太网上,而 T C P负
责确信报文到达。 T C P负责下面的工作:
•  握手过程
•  报文管理
•  流量控制
• 错误检测和处理

1.  应用层
应用层包括 S M T P、F T P、N F S、N I S、L P D、T e l n e t和Remote Login。对于大多数 I n t e r n e t
用户来说这些都是很熟悉的。
2.  传输层
传输层包括 U D P和T C P。U D P几乎不进行检查,而 T C P提供传输保证。
3.  网络层
网络层由以下协议组成: I C M P 、I P 、I G M P 、R I P、O S P F和用于路由的 E G P,用户不必
操心这些,因为它们是相当底层的东西。
4.  链路层
链路层包括 A R P和R A R P,负责报文传输。

IPv4结构
TCP/IP协议相关——IP、TCP结构及功…

TCP/IP协议相关——IP、TCP结构及功…


•  版本—I P 头中前四位标识了 I P的操作版本,比如版本 4或版本6。
• Internet头长度—头中下面4位包括头长度,以 3 2位为单位表示。
• 服务类型—下面的一个字节包括一系列标志,这些标志能保证优先级 ( 相对于其他I P报文的绝对优先级)、延时、吞吐量以及报文数的可靠性参数。优先级标志 3位长,而延时,吞吐量和可靠性标志每个 1位长。剩下的两位保留为将来之用。
• 总长度( Total Length) —报文总长度, 1 6位域,长度以字节为单位。有效值范围最大至
65 535个字节。
•  标识( I d e n t i f i e r )—每个I P报文被赋予一个惟一的 1 6位标识,用于标识数据报的分段。
• 分段标志(Fragmentation Flag) —下一个域包括 3个1位标志,标识报文是否允许被分段
和是否使用了这些域。第一位保留并总设为 0,第二位标识报文能否被分段。如果这位
等于0,说明内容可以被分段。如果等于 1,它就不能被分段。第三位只有在第二位为 0
时才有意义。如果这一位等于 0 (数据可分成多个报文 ) ,这一位标识此报文是否是这一系
列分段的最后一个,或者接收应用程序是否还希望有更多的段。 0指示报文是最后一个。
• 分段偏移 (Fragment Off e s t )—8位的域指出分段报文相对于整个报文开始处的偏移。这
个值以6 4位为单位递增。
• 生存时间 ( T T L )—I P 报文不允许在广域网中永久漫游。它必须限制在一定的 T T L内。8
位的T T L在经过每一跳时加 1。在到达它的最大限制之后,报文就被认为是不可转发的。
之后产生一个I C M P 报文并发回源机器,不可转发的报文被丢弃。
•  协议—8位域指示I P头之后的协议,如 V I N E S、T C P、U D P等。
• 校验和 ( c h e c k s u m )—校验和是1 6位的错误检测域。目的机、网络中的每个网关要重新
计算报文头的校验和,就如同源机器所做的一样。如果数据没有被改动过,两个计算结
果应该是一样的。这个域也通知目的主机所接收的数据的量。
•  源I P地址—源计算机的 I P地址。
•  目的I P地址—目的计算机的I P地址。
•  填充—为了保证I P头长度是3 2位的整数倍,要填充额外的 0。
这些头域说明 I P v 4的网际层是无连接的:网络中的转发设备可以*决定通过网络的报文
的理想转发路径。它也不提供任何上层协议如 T C P所提供的应答、流控、序化功能。 I P 也不能
用于引导I P报文中的数据到正确的目的应用程序。这些功能留给上层协议,如 T C P和U D P。

 

IP做什么

I P报文头中含有使一些重要网络功能成为可能的所有必要信息,包括:

•  寻址和路由
•  分段和重组
•  传输过程中数据损坏检测和更正
1. 寻址和路由
I P最明显的一个功能是能使报文送到特定目的地。连接源和目的地网络中的路由器和交
换机使用目的I P 地址确定经过网络的最优路径。
相似的,I P报文也包括源机器地址。源地址的出现是因为目的机可能会和源机通信。
2. 分段和重组
有时应用数据的一段不能完全包括在一个 I P报文中;它们必须分段成两个或更多的报文。
当分段发生时,I P 必须能重组报文(不管有多少个报文要到达其目的地 )。
重要的一点是源和目的机必须理解,遵守完全相同的分段数据过程。否则,重组为了报
文转发而分成多个段的过程将是不可能的。数据恢复到源机器上的相同格式时,传输数据就
被成功重组了。I P头中的分段标志标识分段的数据片。
注意 重组分段的数据和乱序帧经重排序到达的数据是非常不同的。重新排序是TCP的
功能。
3. 损坏报文补偿
I P的最后一个主要功能是检测和补偿在传输过程中遭到破坏或丢失的报文。有许多方式
可以让一个报文被破坏:无线电频率干扰 ( R F I )和电磁干扰 ( E M I ) 是两种比较显然的干扰因素。
报文以与源机创建时不同的位模式到达目的机时,就认为报文被破坏了。
有许多原因可造成报文丢失。网络拥塞会导致报文 T T L超时,检测到报文 T T L超时的路由
器会简单地把报文丢弃。另一种情况是,报文遭到 E M I或R F I干扰,可能使头信息变得没有意
义。在这种情况下,报文也将被丢弃。
当报文不可能转发或不可用时,路由器必须通知源机。 I P头中包含源机器的 I P 地址使通
知源机器成为可能。虽然 I P不包括重传机制,但通知源主机可能会导致重传,因此通知源主
机起着重要作用。
4. IP结论
尽管有这些功能,但必须承认 I P 仅是一个网际协议。为了使其发挥作用,必须和传输协
议( O S I中第四层 )及数据链路层协议 ( O S I参考模型中第二层 )一起工作。虽然本书不讨论数据链
路层结构,但本章的剩余部分会讨论两个依赖于 I P互连的传输协议。它们是 T C P和U D P。


TCP头结构

TCP/IP协议相关——IP、TCP结构及功…

T C P协议头最少 2 0个字节,包括以下各域:
• T C P 源端口—1 6位的源端口域包含初始化通信的端口号。源端口和源 I P 地址的作用是
标识报文的返回地址。
• T C P目的端口—1 6位的目的端口域定义传输的目的。这个端口指明报文接收计算机上
的应用程序地址接口。
• T C P序列号—3 2位的序列号由接收端计算机使用,重组分段的报文成最初形式。在动
态路由网络中,一些报文很可能使用不同的路由,因此,报文会乱序到达。这个序列号
域可以补偿传输中的不一致。
• T C P应答号—T C P使用3 2位的应答 ( A C K )域标识下一个希望收到的报文的第一个字节。
对一些没发生的事情作应答有点不直观,但收到 A C K报文的源计算机会知道特定的段已
经被收到。标识每个 A C K的号是应答报文的序列号。这个域只在 A C K标志被设置时才
有效。
•  数据偏移—这个4位域包括T C P头大小,以 3 2位数据结构或称为“字”为单位。
•  保留—6位恒置0的域。为将来定义新的用途保留。
• 标志—6位标志域,每 1位标志可以打开一个控制功能,这六个标志是:紧急标志、有
意义的应答标志、推、重置连接标志、同步序列号标志、完成发送数据标志。这些标志,
以出现的先后顺序排列为 U R G、A C K、P S H、R S T、S Y N和F I N。考虑到前面对它们功
能进行的描述,这些标志的意义容易理解。
•  窗口大小—目的机使用 1 6位的域告诉源主机,它想收到的每个 T C P数据段大小。
• 校验和—T C P头也包括 1 6位的错误检查域—“校验和”域。源主机基于数据内容计算
一个数值。目的主机要进行相同的计算。如果收到的内容没有被改变过,两个计算结果
应该完全一样,从而证明了数据的有效性。
• 紧急—紧急指针域是一个可选的 1 6位指针,指向段内的最后一个字节位置,这个域只
在U R G标志设置了时才有效。如果 U R G标志没被设置,紧急域作为填充。在源与目的
主机之间网络中的设备要加快处理标识为紧急的数据段。
• 选项—至少一字节的可变长域标识哪个选项 ( 如果是有的话 ) 有效。如果没有选项,这
一字节的域等于 0,说明选项域的结束。这个字节等于 1表示无需再有操作。值 2表示下

四个字节包括源机器的最大段长度 (Maximum Segment Size ,M S S )。M S S是数据域中可
包含的最大数据量,源和目的机器要对此达成一致。
• 数据—技术上讲,并不是 T C P头的一部分,认识到应用数据段在紧急指针和 / 或选项域
之后,但在填充域之前是很重要的。域的大小是最大的 M S S,M S S可以在源和目的机器
之间协商。数据段可能比 M S S小,但却不能比M S S大。
• 填充—和它名字所暗示的不同,填充在数据通信中总是为数学目的而存在。其目的是
确保空间的可预测性;定时和规范大小。这个域中加入额外的零以保证 T C P头是3 2位的
整数倍。

 

TCP做什么

T C P在通信会话中提供几个重要作用。可以认为它是多个应用和网络之间的连络。其功
能包括:
•  多路复用多种应用数据。
•  测试所接收数据的完整性。
•  顺序化乱序接收的数据。
•  对成功收到数据作出应答。
•  速率—适应的流控 (通过T C P窗口大小)。
•  定时功能。
•  重传在传输过程中损坏或丢失的数据。
1. 多路复用数据流
T C P是用户应用与许多网络通信协议之间的接口。因为,实际上没有人听说过 T C P只被限
制于一个应用,所以 T C P必须能同时接收多个应用数据, T C P把它们打包到数据段中,之后传
给I P。相似的, T C P必须能同时接收多个应用的数据。
T C P必须跟踪记录到达的报文要转发到的应用程序。这可以通过端口来实现,因此,源
机和目的机对通用的应用端口集达成一致是非常有用的。不幸的是有如此众多运行在 I P 之上
的应用,实际上对这些应用对应的端口不可能达成某种形式的一致性。因此 I A N A,也就是现
在的I C A N N 正加速对至少一部分可用端口号的规范工作。
许多应用很常见,所以它们被认为是众所周知的,这可以简化 I C A N N的任务。这样一来,
I C A N N 可以给这些应用分配端口号,任何用户可以期望能处理 I P 报文的主机认识它们,众所
周知的端口例子包括:
•  端口8 0 (超文本传输协议, h t t p )。
•  端口11 9 (网络新闻传输协议, n n t p )。
•  端口6 9 (纯文本文件传输协议, t f t p )。
因为有1 0 2 4 个众所周知的端口 (从0到1 0 2 3 ),因此不可能把它们都列出来。 T C P和U D P的
周知端口的完整列表可参考 R F C 1 7 0 0。
如果读者注意,会发现端口域包含一个 1 6 位的二进制数。因此,有 65 535 个可能的端口
号。而 0 ~ 1 0 2 3是周知口 (众所周知端口 ) ,比1 0 2 3 大的端口号通常被称为高端口号。对高端口
号I C A N N 不加以管理。因此,不应排除非众所周知的应用为了通信而使用 I P。它们可以选择
任何一个高端口号用于通信。T C P段中既有源应用端口号又有目的端口号。另一个经常使用的术语是套接字,虽然 T C P
头中没有套接字域。套接字由驻留在主机上的特定应用端口号和机器 I P 地址联合构成。因此,
套接字描述了惟一的主机和应用。 “: ”号把两个号分开。比如,套接字 1 0 . 1 . 1 . 1 9 : 6 6 6标识了主
机1 0 . 1 . 1 . 1 9上的应用,其端口号为 6 6 6 ( D O O M端口号)。
2. 测试数据的完整性
封装在T C P段中的数据经过 T C P执行的数学计算,并把结果放在 T C P头的校验和域中。一
旦数据到达目的地,对接收数据执行相同的数学计算,产生的结果应该和 T C P头中存储的结
果相同。如果二者相同,有理由相信数据没被改变过。否则,就要给源主机发一请求,要求
其重发一份数据拷贝。
3. 重新排序
到达目的机的报文段经常是乱序的。其中有许多原因,比如,在一个利用率非常高的网
络中,路由协议很可能对报文选择通过网络的不同路径。这会导致数据段乱序到达。另一种
情况是,报文在传输过程中可能丢失或损坏。因此,接收应用程序所需的数据序列会被丢弃。
目的机器的 T C P协议会缓冲接收到的数据段,直到能把它们正确地重新排序。
通过查看 T C P头中的序列号域可以完成这个任务,重新排序就是基于这个域对接收数据
段的数学排序。
4. 流控
T C P会话中的源和目的机器称为对等实体。每一对等实体有对流向其物理缓冲中数据流
的控制能力。流量控制使用的是 T C P窗口大小。源和目的机的窗口大小通过 T C P头进行通信。
任何一台主机将被所收数据淹没时,会减小发送机的速率。这可以通过通知其新的窗口大小
即可,如果机器的缓冲完全被填满,它就会发送一个有关最后收到数据的应答报文,其中新
的窗口大小为 0。这样会有效地使发送停止,直到拥塞的机器能清理掉其缓冲。它所处理的每
一段必须被应答,使用应答,可以通过重新设置大于 0的窗口尺寸来启动发送。
虽然这个简单的机制能有效地调整两台机器之间的数据流,但是它只能保证通信的端系
统不会被接收的数据所湮没。窗口尺寸自身不会考虑网络上存在的拥塞情况。网络拥塞意味
着报文到达目的地的时间比通常情况长。因此拥塞管理一定是网络上时间的函数。 T C P 通过
计时器的使用实现拥塞管理。
5. 计时机制
T C P为几个关键功能使用计时控制。每次传输一个数据段时,设置一个计时器。假如计
时器在接到应答之前停止 ( 就是说,减少到 0 ),数据段就被认为已丢失。因此,会重传。计时
器可以间接地管理网络拥塞,其方法是当超时出现时减慢传输率。理论上讲,当超时出现时
才减小发送速率,因此, T C P不能很好地管理网络拥塞,但它会减小自身对拥塞的影响。
源机器会使用一个坚持 ( P e r s i s t )计时器周期性地查询目的主机的最大窗口尺寸。在理想世
界中,从不需要 P e r s i s t计时器,因为每个应答会包含窗口尺寸。然而,有时网络确实会丢失
数据。如果一台机器发生了缓冲上溢问题,并发回一个 0窗口尺寸的应答,传输节点会中止发
送。但是,如果后序非 0窗口尺寸的应答丢失,发送会话会处于危险境地。 P e r s i s t计时器通过
周期性的询问窗口大小来保证这种情况不会发生。如果查询仍不能得到窗口大小, T C P协议
会重新设置连接。
另一个计时机制称为最大段生存时间 (Maximum Segment Lifetime,M S L )。M S L使T C P机

器识别已经在网络中传输了很长时间的因此已被替换了的数据报,接收到 M S L中止的数据报
被简单抛弃。
6. 应答接收
如果A C K被设置,目的 T C P机器必须要对接收到的特定数据作出应答。考虑到 T C P几乎
总是用于可靠模式,因此 A C K不被设置的情况很少见。
没被应答的数据段被认为在传输过程中已丢失,并被重传。重传必须在源和目的机器之
间配合进行。

 

 

理解用户数据报协议(UDP)
用户数据报协议是 I P的另一个主机到主机层协议 (对应于O S I参考模型的传输层 )。U D P提
供了一种基本的、低延时的称为数据报的传输。为了理解 U D P是如此简单的一种协议,读者
只需把 R F C 7 6 8 ( U D P功能,数据结构和机制的最初规范描述 ) 和其他 R F C比较一下就可看出。
R F C 7 6 8内容简短:长度仅有 3页纸。其他的R F C文档中3页纸只能够装下内容表!
U D P的简单性使 U D P不适合于一些应用,但对另一些更复杂的、自身提供面向链接功能
的应用却很适合。其他可能使用 U D P的情况包括:转发路由表数据交换、系统信息、网络监
控数据等的交换。这些类型的交换不需要流控、应答、重排序或任何 T C P提供的功能。
9.4.1 UDP头结构
图9 - 5示出了U D P头结构和各域的大小:
图9-5 UDP头结构显示了UDP形式和功能的简单性
U D P协议头有以下结构:
• U D P源端口号—1 6位的源端口是源计算机上的连接号。源端口和源 I P 地址作为报文的
返回地址之用。
• U D P目的端口号—1 6位的目的端口号是目的主机上的连接号。目的端口号用于把到达
目的机的报文转发到正确的应用。
• U D P校验和—校验和是一个1 6位的错误检查域,基于报文的内容计算得到。目的计算机
执行和源主机上相同的数学计算。两个计算值的不同表明报文在传输过程中出现了错误。
• U D P信息长度 —信息长度域 1 6位长,告诉目的计算机信息的大小。这一域为目的计算
机提供了另一机制,验证信息的有效性。
9.4.2 UDP能做什么
很少! U D P被设计成一个有效的和最小的传输协议。这一点直接反映在其头结构中。它
只包括用于转发数据报至合适应用 (端口号)的足够信息,并且执行一定的错误检查。
U D P不提供任何 T C P支持的更先进的功能。没有计时机制、流控或拥塞管理机制、应答、紧急数据的加速传送,或其他任何功能。 U D P使用尽力方式传送数据报。由于某种原因传输
失败,数据报被丢弃并且不试图作重传。