Introduction to TCP/IP 第2周
TCP/IP Protocol
OSI vs TCP/IP

TCP/IP 5层模型相较于OSI 7层模型更为简单,它是为了美国国防部的分组交换网络ARPANET开发的,因此也被称为DoD(Departmeng of Defense) model。1982年,它被宣布为美国国
防部所有军用计算机网络的标准,并得到广泛应用。
TCP/IP Network Operations
这是一个应用程序文件传输的例子:

H1(Host 1)中的一个应用程序要将数据文件传输到H5中的应用程序里去,首先根据IP包和以太网帧的最大传输单元大小要求将应用数据文件分成多个有效载荷段(payload segment),
然后将TCP header添加到数据段中,接着H1和H5使用三方握手建立TCP会话。

三方握手基于H1和H5的TCP单元,首先由H1向H5发送SYN(synchronization,同步)信息,H5将会确认这个同步信息并且向H1发送回一个同步信息待H1确认,最终H1将确
认该同步信息。
接着添加IP header以形成IP数据包,IPv4和IPv6具有不同的IP header,IP header包括源地址和目标地址。
然后将以太网帧头和帧尾添加到IP包中,以太网交换机将用到以太网帧头和帧尾来进行流和错误控制。
接下来中间路由器R1、R2、R3使用IP地址来路由IP数据包,而路由器通过路由算法来设置最佳路由路径,通过路由表来决定将数据包发往何处。
接着将在H5的网络接口卡(NIC)接收以太网帧,以太网帧头和帧尾用于检测帧中的错误,如果检测到错误,则丢弃该帧,并请求帧重新传输。
若未检测到错误,则删除以太网帧头和帧尾以显示IP数据包,IP数据包头含有许多网络控制功能。
然后删除IP header以显示TCP header,TCP将控制窗口大小以提高或降低数据传输速率,TCP还包括将数据连接到H5的应用程序X的端口地址。
接下来删除TCP header以显示有效载荷段,最终各个有效载荷段组合起来重建应用程序数据文件并传输到应用程序X。
TCP/IP Layers
这一节中以生活中的邮递为例子,将邮递的每个环节与TCP/IP各层的功能一一对应。
从应用层开始,想要发送应用程序数据文件到目标应用程序,可以看作想要寄许多书给朋友;
在传输层,它将把书分成几份放进盒子,并为邮寄的盒子编号。这些盒子就是TCP有效载荷段,并且盒子编号表示TCP序列号。当接收方收到
邮件时,将利用盒子的编号来查找丢失的箱子,并将书籍重新排序到正确的顺序;
而到了IP层,将在每个盒子上添加发送方和接收方地址,发送方地址相当于源IP地址,接收方地址相当于目标IP地址。IP地址用于将数据包传送
到接收方,其中传送过程是通过路由实现的。
继而到了网络接入层,在实际的网络中,我们将在卫星通信、移动通信、光纤通信、以太网、WiFi、蓝牙和其他类型的通信协议之间进行选择,
这相当于日常寄邮件中选择平邮还是优先邮寄,也就是选择邮寄的类型。
最后在物理层就像选择飞机、轮船,相当于网络传输数据时通过有线、无线或者是光学元件。
IPv4
在这一节中主要介绍了IPv4的数据报格式。

Version:IP协议的版本号,IPv4或IPv6。
IHL(Internet Header Length):IPv4的首部长度。
DS(Differentiated Services):差分服务,提供区分服务优先级分配的功能。
ECN(Explicit Congestion Notification):显式拥塞通知,主要作用是当在网络中检测到延迟或拥塞时减慢数据包的传输速度。
Total Length:IP包的总长度。
Identification:用于唯一标识IPv4数据包的序列号,与源地址、目标地址和协议字段一起使用。
Flags:当数据包过大而无法通过某个网络时,需要进行拆分,此时需要用到Flags。它有3位,默认不使用首位Bit 0;当Bit 1的值被置为1,表示不要拆分这个IP包,而值置为0时表示如
果需要的话,可以拆分这个IP包;当对一个IP包进行分段时,前面的部分需要把Bit 2的值置为1,表示在此段之后还有其余片段同属于一个IP包。
Fragment Offset:片位移,指出较大的数据包在拆分后,该片段在原IP包中的相对位置。
Time to Live:生存时间,它指定了允许数据报保留在Internet上的时间长度(以秒为单位),IP包每通过一个路由器,TTL都至少需要-1,若在到达目的地址之前该字段已经为0,则该
数据包将被丢弃。
Protocol:该字段标识出数据包中紧跟在IPv4 header后面的下一个header的类型。
Header Checksum:首部校验和,包含错误检测码,数据报每经过一个路由器,TTL都会减少,而只要数据包中的字段发生变化了,都要重新计算一下首部校验和。这个字段只检验数据
报的首部,但不包括有效载荷部分。
Sourse Address:源地址,报文发送方的IPv4地址。
Destination Address:目的地址,报文接收方的IPv4地址。
Options & Padding:Options包括发送主机请求的选项,如排错、安全等请求;由于该字段为32位,Padding帮助将该字段设置为32位的倍数。
IPv6
在这一节中主要介绍了IPv6的数据报格式,部分字段的功能和IPv4相同,在这里就不重复介绍了。

Flow Label:流标签最初是为了提供特定服务以支持实时应用程序。然而,它当下起到的作用是告知路由器和交换机不要改变路由路径,因为这将导致在接收端对数据包的重新排序变得很困难。
Payload Length:有效载荷长度。
Next Header:指定下一个Header的类型。
Hop Limit:和IPv4数据报中的TTL功能相同。
UDP
UDP代表用户数据报协议,它为应用程序的连接提供端口信息,包括源端口和目标端口。

Sourse Port & Destination Port:提供源端口和目标端口的信息。
Length:包含整个UDP段的长度,包括UDP header和数据。
Checksum:校验和字段用于检测UDP header中的位错误。校验和使用与TCP和IPV4中对报头使用的相同的错误检查算法。当检测到错误时,则丢弃该段,并且不进行错误恢复。在UDP中使用校验
和字段是可选的,当不使用它时,该字段将被设置为0。
浙公网安备 33010602011771号