目录
前言
华为在线学习:华为人才在线 (huawei.com)
华为职业认证:职业认证 (huawei.com)、
本编文章为 HCIA 认证培训内容,专门适用于准备参加 HCIA 考试的学员。对于希望通过在华为 VRP 平台上进行实际操作和演练,从而加强认识和理解数据通信原理的在校学生和专业人员,本身也极具参考价值
本编文章系统地介绍了 TCP/P 协议模型,侧重讲述了数据链路层、网络层和传输层的功能和作用,其主要目的是帮助读者加深对数据通信中“层次”的理解,并且熟悉和掌握数据在网络中的端到端传输过程
TCP/IP 协议模型详细讲解
传输介质简介
一、物理层
前言
通信网络除了包含通信设备本身之外,还包含连接这些设备的传输介质,如同轴电缆、双绞线和光纤等。不同的传输介质具有不同的特性,这些特性直接影响到通信的诸多方面,如线路编码方式、传输速度和传输距离等。
(1)简单网络
终端相互传递信息和资源共享的需求是网络产生的主要原因
终端可以产生、发送和接收数据,网络是终端建立通信的媒介,终端通过网络建立连接。用来传输数据的载体称为介质,网络可以使用各种介质进行数据传输,包括物理线缆,无线电波等
网络就是通过介质把终端互连而成的一个规模大、功能强的系统,从而使得众多的终端可以方便地互相传递信息,共享信息资源
(2)同轴电缆
同轴电缆是一种早期使用的传输介质,同轴电缆的标准分为两种,10BASE2和10BASE5这两种标准都支持10Mbps的传输速率,最长传输距离分别为185米和500米。一般情况下10Base2同轴电缆使用BNC接头,10Base5同轴电缆使用N型接头
10BASE5和10BASE2是早期的两种以太网标准,它们均采用同轴电缆作为传输介质。10BASE5和10BASE2所使用的同轴电缆的直径分别为9.5mm和5mm,所以前者又称为粗缆,后者又称为细缆
现在,10Mbps的传输速率早已不能满足目前企业网络需求,因此同轴电缆在目前企业网络中很少应用。
(3)双绞线
与同轴电缆相比双绞线(Twisted Pair)具有更低的制造和部署成本,因此在企业网络中被广泛应用。双绞线可分为屏蔽双绞线(Shielded Twisted Pair,STP)和非屏蔽双绞线(Unshielded Twisted Pair,UTP)。屏蔽双绞线在双绞线与外层绝缘封套之间有一个金属屏蔽层,可以屏蔽电磁干扰。双绞线有很多种类型,不同类型的双绞线所支持的传输速率一般也不相同。例如,3类双绞线支持10Mbps传输速率;5类双绞线支持100Mbps传输速率:超5类双绞线及更高级别的双绞线支持干兆,以太网传输。双绞线使用RJ-45接头连接网络设备。为保证终端能够正确收发数据,RJ-45接头中的针脚必须按照一定的线序排列
(4)光纤
双绞线和同轴电缆传输数据时使用的是电信号,而光纤传输数据时使用的是光信号。光纤支持的传输速率包括10Mbps,100Mbps,1Gbps,10Gbps,甚至更高。根据光纤传输光信号模式的不同,光纤又可分为单模光纤和多模光纤。单模光纤只能传输一种模式的光不存在模间色散,因此适用于长距离高速传输。多光纤允许不同模式的光在一根光纤上传输,由于模间色散较大而导致信号脉冲展宽严重,因此多光纤主要用于局域网中的短距离传输。光纤连接器种类很多,常用的连接器包括ST,FC,SC,LC连接器
(5)串口电缆
网络通信中常常会用到各种各样的串口电缆。常用的串口电缆标准为RS-232,同时也是推荐的标准。但是RS-232的传输速率有限,传输距离仅为6米。其他的串口电缆标准可以支持更长的传输距离,例如RS-422和RS-485的传输距离可达1200米。RS-422和RS-485串口电缆通常使用V.35接头,这种接头在上世纪80年代已经淘汰,但是现在仍在帧中继ATM等传统网络上使用。V.24是RS-232标准的欧洲版。RS-232本身没有定义接头标准常用的接头类型为DB-9和DB-25。现在,RS-232已逐渐被FireWire、USB等新标准取代新产品和新设备已普遍使用USB标准
二、数据链路层
前言
网络中传输数据时需要定义并遵循一些标准,以太网是根据IEEE 802.3标准来管理和控制数据帧的。了解IEEE 802.3标准是充分理解以太网中链路层通信的基础
(1)网路通信协议
20世纪60年代以来,计算机网络得到了飞速发展。各大厂商和标准组织为了在数据通信网络领域占据主导地位,纷纷推出了各自的网络架构体系和标准,如IBM公司的SNA协议,Novell公司的IPX/SPX协议,以及广泛流行的OSI参考模型和TCP/IP协议。同时,各大厂商根据这些协议生产出了不同的硬件和软件。标准组织和厂商的共同努力促进了网络技术的快速发展和网络设备种类的迅速增长。
网络通信中,“协议”和“标准”这两个词汇常常可以混用。同时,协议或标准本身又常常具有层次的特点。一般地,关注于逻辑数据关系的协议通常被称为上层协议,而关注于物理数据流的协议通常被称为底层协议。IEEE802就是一套用来管理物理数据流在局域网中传输的标准,包括在局域网中传输物理数据的802.3以太网标准。除以太外,还有一些用来管理物理数据流在广域网中传输的标准,如PPP(Point-to-Point Protocol),高级数据链路控制HDLC(High-Level Data Link Control )。
(2)分层模型-OSI
国际标准化组织ISO于1984年提出了OSIRM(Open System InterconnectionReference Model,开放系统互连参考模型)。OSI参考模型很快成为了计算机网络通信的基础模型。
OSI参考模型具有以下优点:简化了相关的网络操作;提供了不同厂商之间的兼容性;促进了标准化工作;结构上进行了分层;易于学习和操作,OSI参考模型各个层次的基本功能如下
物理层:在设备之间传输比特流,规定了电平、速度和电缆针脚
数据链路层:将比特组合成字节,再将字节组合成帧,使用链路层地址(以太网使用MAC地址)来访问介质,并进行差错检测
网络层:提供逻辑地址,供路由器确定路径
传输层:提供面向连接或非面向连接的数据传递以及进行重传前的差错检测
会话层:负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成
表示层:提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别
应用层:OSI参考模型中最靠近用户的一层,为应用程序提供网络服务
TCP/IP模型同样采用了分层结构,层与层相对独立但是相互之间也具备非常密切的协作关系
TCP/IP模型将网络分为四层。TCPIP模型不关注底层物理介质,主要关注终端之间的逻辑数据流转发。TCP/P模型的核心是网络层和传输层,网络解决网络之间的逻辑转发问题传输层保证源端到目的端之间的可靠传输。最上层的应用层通过各种协议向终端用户提供业务应用
(3)数据封装
应用数据需要经过TCPЛP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。如上层数据在传输层添加TCP报头后得到的PDU被称为Seqment(数据段);数据段被传递给网络层,网络层添加IP报头得到的PDU被称为Packet(数据包);数据包被传递到数据链路层,封装数据链路层报头得到的PDU被称为Frame(数据帧);最后,帧被转换为比特,通过网络介质传输。这种协议栈逐层向下传递数据,并添加报头和报尾的过程称为封装
(4)终端之间的通信
数据包在以太网物理介质上传播之前必须封装头部和尾部信息,封装后的数据包称为数据帧,数据帧中封装的信息决定了数据如何传输。以太网上传输的数据帧有两种格式,选择哪种格式TCP/IP协议簇中的网络层决定
(4)帧格式
以太网上使用两种标准帧格式。第一种是上世纪80年代初提出的DIXv2格式,即EthernetI帧格式。Ethernet Ⅱ后来被IEEE 802标准接纳,并写进了IEEE 802.3x-1997的3.2.6节
第二种是1983年提出的IEEE 802.3格式。这两种格式的主要区别在于Ethernet II格式中包含一个Type字段,标识以太帧处理完成之后将被发送到哪个上层协议进行处理,IEEE802.3格式中,同样的位置是长度字段
不同的Type字段值可以用来区别这两种帧的类型,当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE802.3格式。当Type字段值大于等于1536(或者十六进制的0x0600)时,帧使用的是Ethernet I格式。以太网中大多数的数据帧使用的是Ethernet I格式
以太帧中还包括源和目的MAC地址,分别代表发送者的MAC和接收者的MAC,此外还有帧校验序列字段,用于检验传输过程中帧的完整性
(5)Ethernet II帧格式
Ethernet II的帧中各字段说明如下
DMAC(Destination MAC)是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者
SMAC(Soure MAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者类型字段(Type)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为0x0800的帧代表IP协议帧;类型字段取值为0x0806的帧代表ARP协议帧
数据字段(Data)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节
循环冗余校验字段(FCS)提供了一种错误检测机制。该字段长度为4个字节
(6)IEEE802.3帧格式
IEEE802.3帧格式类似于Ethernet I帧,只是Ethernet I帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段
Length字段定义了Data字段包含的字节数
逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(DestinationService Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成
SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。Org Code三个字节都为0。Type字段的含义与EthernetII帧中的Type字段相同
IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
1)当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据
2)当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET SNAP帧ETHERNET SNAP帧可以用于传输多种协议
3)DSAP和SSAP其他的取值均为纯IEEE802.3帧
(6)数据帧的传输
以太网在二层链路上通过MAC地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。发送端使用接收端的MAC地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在物理介质上传输
(7)以太网的MAC地址
如同每一个人都有一个名字一样,每一台网络设备都用物理地址来标识自己,这个地址就是MAC地址。网络设备的MAC地址是全球唯一的。MAC地址长度为48比特,通常用十六进制表示。MAC地址包含两部分:前24比特是组织唯一标识符(OU,OrganizationalyUnique Identifier),由IEEE统一分配给设备制造商。例如,华为的网络产品的MAC地址前24比特是0x00e0fc。后24位序列号是厂商分配给每个产品的唯一数值,由各个厂商自行分配(这里所说的产品可以是网卡或者其他需要MAC地址的设备)
![](https://i-blog.csdnimg.cn/direct/ee0d6f34f6734186b793f49b7e1685e8.png)
(8)单播
局域网上的帧可以通过三种方式发送。第一种是单播,指从单一的源端发送到单一的目的端。每个主机接口由一个MAC地址唯一标识,MAC地址的OUI中,第一字节第8个比特表示地址类型。对于主机MAC地址,这个比特固定为0,表示目的MAC地址为此MAC地址的帧都是发送到某个唯一的目的端。在冲突域中,所有主机都能收到源主机发送的单播帧,但是其他主机发现目的地址与本地MAC地址不一致后会丢弃收到的帧,只有真正的目的主机才会接收并处理收到的帧
(9)广播
第二种发送方式是广播,表示帧从单一的源发送到共享以太网上的所有主机。广播帧的目的MAC地址为十六进制的FF:FF:FF:FF:FF:FF,所有收到该广播帧的主机都要接收并处理这个帧
广播方式会产生大量流量,导致带宽利用率降低,进而影响整个网络的性能。当需要网络中的所有主机都能接收到相同的信息并进行处理的情况下,通常会使用广播方式
(10)组播
第三种发送方式为组播,组播比广播更加高效。组播转发可以理解为选择性的广播,主机侦听特定组播地址,接收并处理目的MAC地址为该组播MAC地址的帧
组播MAC地址和单播MAC地址是通过第一字节中的第8个比特区分的。组播MAC地址的第8个比特为1,而单播MAC地址的第8个比特为0
当需要网络上的一组主机(而不是全部主机)接收相同信息,并且其他主机不受影响的情况下通常会使用组播方式
(11)数据帧的发送和接收
帧从主机的物理接口发送出来后,通过传输介质传输到目的端。共享网络中,这个帧可能到达多个主机。主机检查帧头中的目的MAC地址,如果目的MAC地址不是本机MAC地址也不是本机侦听的组播或广播MAC地址,则主机会丢弃收到的帧
如果目的MAC地址是本机MAC地址,则接收该帧,检查帧校验序列(FCS)字段,并与本机计算的值对比来确定帧在传输过程中是否保持了完整性。如果帧的FCS值与本机计算的值不同,主机会认为帧已被破坏,并会丢弃该帧。如果该帧通过了FCS校验,则主机会根据帧头部中的Type字段来确定将帧发送给上层哪个协议处理。本例中,Type字段的值为0x0800,表明该帧需要发送到IP协议上处理。在发送给IP协议之前,帧的头部和尾部会被剥掉
三、网络层
前言
网络层位于数据链路层与传输层之间。网络层中包含了许多协议,其中最为重要的协议就是IP协议。网络层提供了IP路由功能。理解IP路由除了要熟悉IP协议的工作机制之外,还必须理解IP编址以及如何合理地使用IP地址来设计网络
(1)上层协议类型
在剥掉帧的头部和尾部之前,网络设备需要根据帧头中Type字段确定下一步将帧发送到哪个上层协议进行处理。本例中的帧头部Type字段表示该帧需要上送到IP协议进行处理。以下将介绍帧的头部和尾部被剥掉后,IP协议将如何处理帧中的数据
(2)IP报文头部
IP报文头部信息用于指导网络设备对报文进行路由和分片。同一个网段内的数据转发通过链路层即可实现,而跨网段的数据转发需要使用网络设备的路由功能。分片是指数据包超过一定长度时,需要被划分成不同的片段使其能够在网络中传输
IP报文头部长度为20到60字节,报文头中的信息可以用来指导网络设备如何将报文从源设备发送到目的设备。其中,版本字段表示当前支持的IP协议版本,当前的版本号为4。DS字段早期用来表示业务类型,现在用于支持QoS中的差分服务模型,实现网络流量优化
源和目的IP地址是分配给主机的逻辑地址,用于在网络层标识报文的发送方和接收方。根据源和目的IP地址可以判断目的端是否与发送端位于同一网段,如果二者不在同一网段,则需要采用路由机制进行跨网段转发
(3)IP地址编址
IPv4地址为32比特的二进制数,通常用点分十进制表示。IP地址用来标识网络中的设备具有IP地址的设备可以在同一网段内或跨网段通信。IP地址包括两部分,第一部分是网络号,表示IP地址所属的网段,第二部分是主机号,用来唯一标识本网段上的某台网络设备
每个网段上都有两个特殊地址不能分配给主机或网络设备。第一个是该网段的网络地址亥IP地址的主机位为全0,表示一个网段。第二个地址是该网段中的广播地址,目的地址为播地址的报文会被该网段中的所有网络设备接收。广播地址的主机位为全1。除网络地址和广播地址以外的其他IP地址都可以作为网络设备的IP地址
(4)进制转换
32位的IP地址分为4个字节,每个字节有256个取值。因此,理论上IPv4可以有4,294,967,296个IP地址,但实际上只有其中一部分地址可以分配给网络设备使用。本例中IP地址的前三个字节表示网络号,最后一个字节表示该网络上网络设备可用的地址范围。将二进制格式的IP地址转换为十进制格式时,需要把二进制中每一位1所代表的值加在一起得出IP地址的十进制值
(5)IP地址分类
IPv4地址被划分为A、B、C、D、E五类,每类地址的网络号包含不同的字节数。A类,B类和C类地址为可分配IP地址,每类地址支持的网络数和主机数不同。比如,A类地址可支持126个网络,每个网络支持224(16,777,216)个主机地址,另外每个网段中的网络地址和广播地址不能分配给主机。C类地址支持200多万个网络,每个网络支持256个主机地址其中254个地址可以分配给主机使用
D类地址为组播地址。主机收到以D类地址为目的地址的报文后,且该主机是该组播组成员
就会接收并处理该报文。各类IP地址可以通过第一个字节中的比特位进行区分。如A类地址第一字节的最高位固定为0,B类地址第一字节的高两位固定为10 ,C类地址第一字节的高三位固定为110,D类地址第一字节的高四位固定为1110,E类地址第一字节的高四位固定为1111
(6)网路通信
源主机必须要知道目的主机的IP地址后才能将数据发送到目的地。源主机向其他目的主机发送报文之前,需要检査目的IP地址和源IP地址是否属于同一个网段。如果是,则报文将被下发到底层协议进行以太网封装处理。如果目的地址和源地址属于不同网段,则主机需要获取下一跳路由器的IP地址,然后将报文下发到底层协议处理
(7)子网掩码
子网掩码用于区分网络部分和主机部分。子网掩码与IP地址的表示方法相同。每个IP地址和子网掩码一起可以用来唯一的标识一个网段中的某台网络设备。子网掩码中的1表示网络位,0表示主机位
每类IP地址有一个缺省子网掩码。A类地址的缺省子网掩码为8位,即第一个字节表示网络位,其他三个字节表示主机位。B类地址的缺省子网掩码为16位,因此B类地址支持更多的网络,但是主机数也相应减少。C类地址的缺省子网掩码为24位,支持的网络最多,同时也限制了单个网络中主机的数量
(8)地址规划
通过子网掩码可以判断主机所属的网段、网段上的广播地址以及网段上支持的主机数。图中这个例子,主机地址为192.168.1.7,子网掩码为24位(C类IP地址的缺省掩码),从中我们可以判断该主机位于192.168.1.0/24网段。将IP地址中的主机位全部置为1,并转换为十进制数,即可得到该网段的广播地址192.168.1.255。网段中支持的主机数为2n,n为主机位的个数。本例中n=8,28=256,减去本网段的网络地址和广播地址,可知该网段支持254个有效主机地址
(9)网关
报文转发过程中,首先需要确定转发路径以及通往目的网段的接口,然后将报文封装在以太帧中通过指定的物理接口转发出去。如果目的主机与源主机不在同一网段,报文需要先转发到网关,然后通过网关将报文转发到目的网段
网关是指接收并处理本地网段主机发送的报文并转发到目的网段的设备。为实现此功能网关必须知道目的网段的IP地址。网关设备上连接本地网段的接口地址即为该网段的网关地址
(10)无类域间路由
无类域间路由CIDR(Classless Inter Domain Routing)由RFC1817定义。CIDR突破了传统IP地址的分类边界,将路由表中的若干条路由汇聚为一条路由,减少了路由表的规模提高了路由器的可扩展性
如上图所示,一个企业分配到了一段A类网络地址,10.24.0.0/22。该企业准备把这些A类网络分配给各个用户群,目前已经分配了四个网段给用户。如果没有实施CIDR技术,企业路由器的路由表中会有四条下连网段的路由条目,并且会把它通告给其他路由器。通过实施CIDR技术,我们可以在企业的路由器上把这四条路由10.24.0.0/24,10.24.1.0/2410.24.2.0/24,10.24.3.0/24汇聚成一条路由10.24.0.0/22。这样,企业路由器只需通告10.24.0.0/22这一条路由,大大减小了路由表的规模
(11)ICMP协议
ICMP是TCP/IP协议簇的核心协议之一,它用于在IP网络设备之间发送控制报文,传递差错控制、查询等信息
(12)ICMP应用
ping
ICMP的一个典型应用是Ping。Ping是检测网络连通性的常用工具,同时也能够收集其他相关信息。用户可以在Ping命令中指定不同参数,如ICMP报文长度、发送的ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行Ping测试。
Ping常用的配置参数说明如下
1.-a source-ip-address指定发送ICMP ECHO-REQUEST报文的源IP地址。如果不指定源IP地址,将采用出接口的IP地址作为ICMP ECHO-REQUEST报文发送的源地址
2 .-c count指定发送ICMP ECHO-REQUEST报文次数。缺省情况下发送5个ICMP ECHO
REQUEST报文
3.-h ttl-value指定TTL的值。缺省值是255
4.-t timeout指定发送完ICMP ECHO-REQUEST后,等待ICMP ECHO-REPLY的超时时间
tracert
ICMP的另一个典型应用是Tracert。Tracert基于报文头中的TTL值来逐跳跟踪报文的转发路径。为了跟踪到达某特定目的地址的路径,源端首先将报文的TTL值设置为1。该报文到达第一个节点后,TTL超时,于是该节点向源端发送TTL超时消息,消息中携带时间戳。然后源端将报文的TTL值设置为2,报文到达第二个节点后超时,该节点同样返回TTL超时消息,以此类推,直到报文到达目的地。这样,源端根据返回的报文中的信息可以跟踪到报文经过的每一个节点,并根据时间戳信息计算往返时间。Tracert是检测网络丢包及时延的有效手段,同时可以帮助管理员发现网络中的路由环路。
Tracert常用的配置参数说明如下
-a source-ip-address指定tracert报文的源地址
-f first-ttl指定初始TTL。缺省值是1
-m max-ttl指定最大TTL。缺省值是30
-name使能显示每一跳的主机
-p port指定目的主机的UDP端口号
源端(RTA)向目的端(主机B)发送一个UDP报文,TTL值为1,目的UDP端口号是大于30000的一个数,因为在大多数情况下,大于30000的UDP端口号是任何一个应用程序都不可能使用的端口号
第一跳(RTB)收到源端发出的UDP报文后,判断出报文的目的IP地址不是本机IP地址将TTL值减1后,判断出TTL值等于0,则丢弃报文并向源端发送一个ICMP超时(TimeExceeded)报文(该报文中含有第一跳的IP地址10.0.0.2),这样源端就得到了RTB的地址
源端收到RTB的ICMP超时报文后,再次向目的端发送一个UDP报文,TTL值为2
第二跳(RTC)收到源端发出的UDP报文后,回应一个ICMP超时报文,这样源端就得到了RTC的地址(20.0.0.2)
以上过程不断进行,直到目的端收到源端发送的UDP报文后,判断出目的IP地址是本机IP地址,则处理此报文。根据报文中的目的UDP端口号寻找占用此端口号的上层协议,因目的端没有应用程序使用该UDP端口号,则向源端返回一个ICMP端口不可达(DestinationUnreachable)报文
源端收到ICMP端口不可达报文后,判断出UDP报文已经到达目的端,则停止Tracert程序从而得到数据报文从源端到目的端所经历的路径(10.0.0.2;20.0.0.2;30.0.0.2)
四、传输层
前言
传输层定义了主机应用程序之间端到端的连通性。传输层中最为常见的两个协议分别是传输控制协议TCP(Transmission Control Protocol)和用户数据包协议UDP( User Datagram Protocol )
(1)TCP
TCP位于TCPP模型的传输层,它是一种面向连接的端到端协议。TCP作为传输控制协议
可以为主机提供可靠的数据传输。在本例中,两台主机在通信之前,需要TCP在它们之间建立可靠的传输通道
(2)TCP端口号
TCP允许一个主机同时运行多个应用进程。每台主机可以拥有多个应用端口,每对端口号源和目标IP地址的组合唯一地标识了一个会话。端口分为知名端口和动态端口。有些网络服务会使用固定的端口,这类端口称为知名端口,端口号范围为0-1023。如FTP、HTTPTeInet、SNMP服务均使用知名端口。动态端口号范围从1024到65535,这些端口号一般不固定分配给某个服务,也就是说许多服务都可以使用这些端口。只要运行的程序向系统提出访问网络的申请,那么系统就可以从这些端口号中分配一个供该程序使用
(3)TCP 建立连接过程
TCP是一种可靠的,面向连接的全双工传输层协议
TCP连接的建立是一个三次握手的过程
主机A(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与服务器A建立连接此数据段的序列号(seq)为a
服务器A回复标识了SYN+ACK的数据段,此数据段的序列号(seq)为b,确认序列号为主机A的序列号加1(a+1),以此作为对主机A的SYN报文的确认
主机A发送一个标识了ACK的数据段,此数据段的序列号(seq)为a+1,确认序列号为服务器A的序列号加1(b+1),以此作为对服务器A的SYN报文的确认
(4)TCP传输过程
TCP的可靠传输还体现在TCP使用了确认技术来确保目的设备收到了从源设备发来的数据并且是准确无误的。
确认技术的工作原理如下
目的设备接收到源设备发送的数据段时,会向源端发送确认报文,源设备收到确认报文后继续发送数据段,如此重复
主机A向服务器A发送TCP数据段,为描述方便假定每个数据段的长度都是500个字节。当服务器A成功收到序列号是M+1499的字节以及之前的所有字节时,会以席列号M+1499+1=M+1500进行确认。另外,由于数据段N+3传输失败,所以服务器A未能收到序列号为M+1500的字节,因此服务器A还会再次以序列号M+1500进行确认
(5)TCP流量控制
TCP滑动窗口技术通过动态改变窗口大小来实现对端到端设备之间的数据传输进行流量控制。
如图所示,主机A和服务器A之间通过滑动窗口来实现流量控制。为方便理解,此例中只考虑主机A发送数据给服务器A时,服务器A通过滑动窗口进行流量控制
主机A向服务器发送4个长度为1024字节的数据段,其中主机的窗口大小为4096个字节。服务器A收到第3个数据段后,缓存区满,第4个数据段被丢弃。服务器以ACK 3073响应窗口大小调整为3072,表明服务器的缓冲区只能处理3072个字节的数据段。于是主机A改变其发送速率,发送窗口大小为3072的数据段
(6)TCP关闭连接
TCP支持全双工模式传输数据,这意味着同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的实际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭
TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要经过四次握手
如图所示:
主机A想终止连接,于是发送一个标识了FIN,ACK的数据段,序列号为a,确认序列号为b
服务器A回应一个标识了ACK的数据段,序列号为b,确认序号为a+1,作为对主机A的FIN报文的确认
服务器A想终止连接,于是向主机A发送一个标识了FIN,ACK的数据段,序列号为b,确认序列号为a+1
主机A回应一个标识了ACK的数据段,序列号为a+1,确认序号为b+1,作为对服务器A的FIN报文的确认
以上四次交互便完成了两个方向连接的关闭
(7)UDP传输过程
主机A发送数据包时,这些数据包是以有序的方式发送到网络中的,每个数据包独立地在网络中被发送,所以不同的数据包可能会通过不同的网络路径到达主机B。这样的情况下,先发送的数据包不一定先到达主机B。因为UDP数据包没有序号,主机B将无法通过UDP协议将数据包按照原来的顺序重新组合,所以此时需要应用程序提供报文的到达确认、排序和流量控制等功能。通常情况下,UDP采用实时传输机制和时间来传输语音和视频数据
UDP适合传输对时延敏感的流量,如语音和视频。
在使用TCP协议传输数据时,如果一个数据段丢失或者接收端对某个数据段没有确认,发送端会重新发送该数据段。
TCP重新发送数据会带来传输延迟和重复数据,降低了用户的体验。对于时延敏感的应用少量的数据丢失一般可以被忽略,这时使用UDP传输将能够提升用户的体验