1.基本概念划分
OIS的七层协议:
应用层、表示层、会话层、运输层、网络层、数据链路层、物理层。
OIS的五层协议:
应用层、运输层、网络层、数据链路层、物理层。
由下往上介绍如下:
2.第一章 物理层
特性:机械特性、电气特性、功能特性、过程特性。
数据通信系统:源系统(或发送端、发送方)、传输系统(或传输网络)和目的系统(或接受端、接受方)
源系统:
- 源点:源点设备产生要传输的数据。源点又称为源站或者信源
- 发送器:通常,源点生成的数字比特流要通过发送器编码后才能够在传输系统进行传输。典型的发送器就是调制器。现在很多PC实用内置的调制解调器。
目的系统:
- 接收器:接受传输系统传送过来的信号,并把它转换为能够被目的设备处理的信息。典型的接收器就是解调器,它把来自传输路线上的模拟信号进行解调,提取出在发送端置入的信息,还原出发送端产生的数字比特流。
- 终点:终点设备从接收器获取传送来的数字比特流,然后把信息输出。终点又称目的站,或信宿。
信号:模拟信号(连续信号)、数字信号(离散信号)
通信方式:单向通信(单工通信)、双向交替通信(半双工通信)、双向同时通信(双全工通信)
香农公式:信道的极限信息传输速率C为:
C=B log2(1+S/N)
式中:B是信道带宽(赫兹),S是信号功率(瓦),N是噪声功率(瓦)。该式即为著名的香农公式,显然,信道容量与信道带宽成正比,同时还取决于系统信噪比以及编码技术种类香农定理指出,如果信息源的信息速率R小于或者等于信道容量C,那么,在理论上存在一种方法可使信息源的输出能够以任意小的差错概率通过信道传输。该定理还指出:如果R>C,则没有任何办法传递这样的信息,或者说传递这样的二进制信息的差错率为1/2。
信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高。
物理层下面的传输媒体
传输媒体可分为两大类:导引型传输媒体(有线传输铜线或者光纤)和非导引型传输媒体(自由空间,无线传输)
第二章 数据链路层
数据链路层使用信道种类:点对点信道、广播信道
链路:从一个结点到相邻结点的一段物理路线(有线或无线),而中间没有任何其他的交换点。
数据链路:当在一条线路上传输数据时,除了必须有一条物理路外,还必须有一些必要的通信协议来控制这些数据的传输。把实现这些协议的硬件和软件加到链路上就构成了数据链路。现在最常用的是使用网络适配器来实现这些协议。
帧:点信道的数据链路层的协议数据单元。
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出来并上交给网络层。在因特网中,网络协议数据单元就是IP数据报(简称数据报、分组或包)。
数据链路层三个基本问题:
封装成帧、透明传输、差错检测。
- 封装成帧就是在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。首部和尾部的一个重要作用就是进行帧定界(确定帧的界限)。帧定界可以使用特殊的帧定界符。帧开始字符SOH,帧结束字符EOT
- 透明传输当传送的帧是文本文件组成的帧时。其数据部分不会出现SOH和EOT这样的帧定界控制字符。不管从键盘上输入什么字符都能传输过去,这样的传输就是透明传输。“透明”某一个实际存在的事物看起来是好像不存在一样。为了解决不透明问题在接收端的数据链路层吧数据送网络层之前删除这个插入的转义字符,这种方法称为字节填充或字符填充。
- 差错检测比特传输过程中可能会出现差错,1可能会变成0,0可能会变成1.这就叫做比特差错。在一段时间内传输错误的比特占所传输比特总数的比率称为误码率。目前在数据链路层广泛使用了循环冗余检测CRC( Cyclic Redundancy Check)的检错技术。CRC运算就是在数据M后面添加供差错检测用的n位冗余码。为了检错而添加的冗余码常称为帧检验序列FCS(Frame Check Sequence).在CRC检测的基础上增加帧编号、确认、重传机制
点对点协议PPP(高级数据链路控制HDLC)
1.PPP协议满足的需求
(1)简单
(2)封装成帧
(3)透明性
(4)多种网络层协议 在同一物理链路上同事支持多种网络协议
(5)多种类型的链路
(6)差错检测
(7)检测链接状态
(8)最大传送单元
(9)网络层地址协商
(10)数据压缩协议
2.PPP协议的组成
(1)一个将IP数据报封装到串行链路的方法。PPP既支持异步链路(无奇偶检测的8比特数据),也支持面向比特的同步链路。IP数据报在平PPP帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU的限制。
(2)一个用来建立、配置和测试数据链路的链路控制协议LCP。
(3)一套网络控制协议NCP,其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层。。。。
PPP帧首部和尾部分别为四个字段和两个字段
3.PPP协议的工作状态
链路的发送响应:
(1)配置确认帧(Configure-Ack):所有的选项都接受。
(2)配置否认帧(Configure-Nak):所有选项都理解但是不接受。
(3)配置拒绝帧(Configure-Reject):选项有的无法识别或不能接受,需要协商。
口令鉴别协议PAP(Password Authentication Protocol).口令握手鉴别协议CHAP(Challenge-Handshake Authentication Protocol).
4.使用广播信道的数据链路层
1.局域网的数据链路层
星形网、环形网、总线网。
共享信道分为两种:
(1)静态划分信道
(2)动态媒体接入控制,又称为多点接入。
- 随机接入 所有的用户可随机的发送信息
- 受控接入 用户不能随机的发送信息必须服从一定的控制。
2.CSMA/CD协议
CSMA/CD协议的要点。:
- 多点接入
- 载波监听 不管在发送前,还是发送中,每个站都必须不停的检测信道。
电磁波在1km电缆的传播时延约为5us
一个站不可能同时进行发送和接受(但必须边发送边监听信道)。因此使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
以太网使用截断二进制指数退避算法来确定碰撞后重传的时机。
凡是长度小于64字节的帧都是由于冲突而异常终止的无效帧。以太网还规定了帧间最小间隔为9.6us,相当于96比特时间。
5.使用广播信道的以太网
1.使用集线器的星型拓扑
集线器:在星形拓扑的中心增加了一种可靠性非常高的设备。
集线器的特点:
(1)使用集线器的以太网在逻辑上仍是一个总线网,个站共享逻辑上的总线,使用的还是CSMA/CD协议。网络中的各占必须竞争对传输媒体的控制,并且在同一时刻至多只允许一个站发送数据。
(2)一个集线器有很多接口,一个集线器就像一个多接口的转发器。
(3)集线器工作在物理层,他的每个接口仅仅简单地转发比特~~接收到1就转发1,就到到0就转发0,不进行碰撞检测。
(4)集线器采用了专门的芯片,进行自适应串音回波抵消。这样就可以使接口转发出去的较强信号不致对该接口接收到的较弱的信号产生干扰。
2.以太网的MAC层
(1)MAC层的硬件地址
实际上就是适配器地址或适配器标识符
发往本站的帧:单播(unicast)帧(一对一),即受到的帧的MAC地址与本站硬件地址相同。
广播(broadcast)帧(一对全体),即发送给本局域网上所有站点的帧。
多播(multicast)帧(一对多),即发送给本局域网上一部分站点的帧。
第三章 网络层
3.1网络层提供的两种服务
网络层提供的服务:
(1)虚电路服务。(2)数数据报服务
(网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务)**
3.2网际协议IP
与IP协议配套使用的三个协议:
- 地址解析协议ARP(Address Resolution Protocol)
- 网际控制报文协议ICMP(Internet Control Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
网络连接的中间设备:
- 物理层使用的中间设备转发器(repeater)
- 数据链路层使用的中间设备网桥或桥接器(bridge)
- 网络层使用的中间设备路由器(router)
*在网络层以上使用的中间设备叫网关(gateway)
3.3IP地址
IP地址就是给因特网上的每一个主机(或路由器)的每一个接口分配一个在全世界范围唯一的32位标识符。IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。
IP地址的编址方法三个阶段:
- 分类的IP地址 就是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段是网络号(net-id),它标志主机(或路由器)所连接到的网络。网络号必须是唯一的。第二个字段是主机号(host-id),它标志该主机(或路由器)
- 子网的划分
-
构成超网
IP地址 ::{<网络号>,<主机号>}
IP地址并不仅仅指明一个主机,而是还指明了主机所连接到的网络。
IP地址的特点:
- 每一个IP地址都是由网络号和主机号组成。IP地址是一个分等级的地址结构。第一,IP地址管理机构在分配IP地址时只分配网络号(第一级),剩下的主机号(第二级)由得到该网络号的单位自行分配。第二,路由器仅根据目的主机所连接的网络号转发分组,这样就可以使路由器表中的项目数大幅度减少,从而减少了路由表所占的存储空间以及查找路由表的时间。
- 实际上IP地址是标志一个主机和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。由于一个路由器至少连接到两个网络,因此一个路由器至少应当有两个不同的IP地址。
- 用转发器或网桥连接起来的若干个局域网仍为一个网络
- 在IP地址中,所有分配到的网络号的网络都是平等的。
物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。IP地址放在IP数据报的首部,硬件地址放在MAC帧的首部。
(1)在IP层抽象的互联网上只能看到IP数据报。
(2)虽然在IP数据报首部有源站IP地址,但路由器只根据目的站的IP地址的网络号进行路由选择。
(3)在局域网的链路层,只能看到MAC帧。
(4)皮层抽象的互联网屏蔽了下层复杂的细节,使用统一的、抽象的IP地址研究主机和主机或者路由器之间的通信。
IP数据报首部的固定部分中的各字段
- 版本 占4位,IP协议的版本。
- 首部长度 占4位,可表示最大十进制数值是15.
- 区分服务 占8位,用来获得更好的服务
- 总长度 总长度字段为16位
在IP层下面的每一种数据链路层协议都规定了一个数据帧中的数据字段的最大长度,这称为最大传送单元MTU。
- 标识 占16位
- 标志 占3位,标志字段中的最低位记为MF(More Fragment)。MF = 1 表示后面“还有分片”的数据报。MF= 0 表示这已经是数据报中的最后一个。标志字段中间的一位记为DF(Don’t Fragment),意思“不能分片”,只有当DF = 0时才允许分片。
- 片偏移 占13位,片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。片偏移一8个字节为偏移单位,每个分片的长度一定是8字节的整数倍。
- 生存时间 占8位,TTL(Time To Life),数据报在网络中的寿命。
- 协议 占8位,表示数据报使用何种协议。
- 首部检验和 占16位,检验数据报的首部,不包括数据部分。
- 源地址 占32位
- 目的地址 占32位
3.4划分子网和构造超网
1.划分子网
(1)从两级IP地址到三级IP地址
IP地址::={<网络号>,<子网号>,<主机号>}
(2)子网掩码
从IP数据报的首部无法看出源主机或目的主机所连接的网络是否进行子网的划分。32位的IP地址本身以及数据报的首部都没有包含任何有关子网划分的信息。所以使用子网掩码(subnet mask).
使用子网掩码的好处:不管网络有没有子网,只要把子网掩码和IP地址进行逐位的“与”运算(AND),就能立即得出网络地址来。这样在路由器处理到来的分组是就可以采用同样的算法。
(现在因特网的标准规定:所有的网络必须使用子网掩码,路由表中也必须有子网掩码这一栏。如果不划分子网掩码,使用默认子网掩码。)
A类地址的默认子网掩码是255.0.0.0,或0xFF000000;
B类地址的默认子网掩码是255.255.0.0,或0xFFFF0000;
C类地址的默认子网掩码是255.255.255.0,或0xFFFFFF00;
子网掩码是一个网络或一个子网的重要属性。划分子网增加了灵活性,但却减少了能够连接在网络上的总计数。
2.使用子网时分组转发
路由表必须包含三项内容:目的网络地址、子网掩码和下一跳地址。
3.无分类编址CIDR(构成超网)
1网络前缀
无分类域路由选择CIDR(Classless Inter-Domain Routing)
CIRD特点:
(1)CIDR消除了传统的A类、B类、C类地址以及划分子网的概念,可以更加有效的分配IPv4的地址空间。使用“网络前缀”,从三级变回无分类的两级编址。
IP地址::={<网络前缀>,<主机号>}
CIDR还使用“斜线记法”,在IP地址后面增加“/”,然后写上网络前缀所占的位数。
(2)CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。我们只要知道CIDR地址块中的任何一个地址,就可以知道之歌地址块的起始地址(最小地址)和最大地址,以及地址块中的地址树。(斜线记法中,斜线后面的数字就是地址掩码中1的个数)
由于一个CIDR地址块中有很多地址,所以在路由表中就利用CIDR地址块来查找目的网络。这种地址的聚合常称为路由聚合。路由聚合也称构成超网。
网络前缀越短,其地址块所包含的地址数就越多。而在三级结构的IP地址中,划分子网是使网络前缀边长。
2最长前缀匹配
网络前缀,应当从匹配结果中选择具有最长网络前缀的路由,叫做最长前缀匹配。
3使用二叉线索查找路由表(为了提高二叉线索的查找速度,使用压缩技术)
3.5网际控制报文协议ICMP
1.ICMP报文种类有两种,ICMP差错报告报文和ICMP询问报文
ICMP差错报告报文:
- 终点不可达 当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
- 源点抑制 当路由器或主机由于拥塞而丢弃数据报时,就向源点抑制报文,使源点知道应当把数据报的发送速率放慢
- 时间超长 当路由器接收到生存时间为0的数据报时,除了丢弃数据报外,还要向源点发送时间超过报文。
- 参数问题 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就该丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向) 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
ICMP询问报文:
- 回送请求和回答 ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
- 时间戳请求和回答 ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
3.6因特网的路由器选择协议
1.理想的路由算法
(1)算法必须是正确的和完整的。
(2)算法应能适应通信量和网络拓扑的变化。
(3)算法在计算上应简单。
(4)算法应具有稳定性。
(5)算法应是公平的。
(6)算法应是最佳的。“最佳”只能是相对于某一种特定要求得出的较为合理的选择而已。
2.分层次的路由选择协议
因特网将整个互联网划分为许多较小的自治系统(autonomous system),记为AS。一个AS对其他AS表现出的是一个单一和一致的路由选择策略。
在目前的因特网中,一个大的ISP就是一个自治系统。因特网把路由选择协议划分为两类:
- 内部网关协议IGP(Interior Gateway Protocol) 在一个自治系统内部使用的路由选择协议,与在互联网中的其他自治系统选用什么路由选择协议无关。如RIP和OSPF协议。
-
外部网关协议EGP(External Gateway Protocol) 若源主机和目的主机处在不同的自治系统中(这两个自治系统可能使用不同的内部网关协议)。当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。
自治系统之间的路由选择也叫域间路由选择(interdomain routing),而在自治系统内部的路由选择叫做域内路由选择(intradomain routing)
内部网关协议RIP
2.1工作原理
RIP(Routing Information Protocol)是内部网关协议中最先的到广泛使用的协议,叫路由信息协议。RIP是一种分布式的基于距离向量的路由选择协议,最大特点就是简单。
RIP协议“距离”:从一路由器到直接连接的网络的距离定义为1.从一路由器到非直接连接的网络的距离定义为所经过的路由器数加1.
RIP协议的“距离”也成为“跳数”(hop count),因为每经过一个路由器,跳数就加1。RIP认为好的路由就是通过的路由器的数目少,即距离短。RIP允许一条路径最多只能包含15个路由器。RIP只适用于小型互联网。
RIP协议的特点:
- 仅和相邻路由器交换信息。
- 路由器交换的信息是当前本路由所知道的全部信息,即自己的路由表。
- 按固定的时间间隔交换路由信息
路由表中最重要的信息就是:到某个网络的距离最短,下一跳地址。路由表更新的原则是找出到每个目的网络的最短距离。这种更新叫做距离向量算法。
2.2距离向量算法
(1)对地址X的路由器发来的RIP报文,每一个项目都有三个关键数据:到目的网络N,距离d,下一跳路由器是X。
(2)对修改后的RIP报文中的每一个项目,进行以下步骤:
若原来的路由表没有目的网络N,则把该项目添加到路由表中,若下一跳路由器地址是X,则把收到的项目替换原路由表中的项目,若收到的项目中的距离d小于路由表中的距离,则进行更新。
(3)若3分钟黑没有收到响铃路由器的更新路由表,则把此距离路由器记为不可达的路由器,即把距离置为16.
(4)返回。距离向量算法的基础就是Bellman-Ford算法(或Ford-Fullkerson算法):设X是结点A到B的最短路径上的一个结点。若把路径A->B拆成两段路径A->X和X->B,则每一段也都是最短路径。
2.3RIP协议的报文格式
RIP报文由首部和路由部分组成。路由标记填入自治系统号ASN(Autonomous System Number),这是考虑使RIP有可能受到本自治系统以外的路由选择信息。再后面指出某个网络地址、该网络的子网掩码、下一跳路由器地址以及到此网络的距离。一个RIP保温最多可包括25个路由,RIP报文最大长度4+20*25=504字节.
RIP存在一个问题是当网络出现故障时,要经过比较常的时间才能将此信息传送到所有的路由器。这一特点叫做:好消息传播得快,而坏消息传播得慢。
内部网关协议OSPF
2.4OSPF(Open Shortest First)开放最短路径优先。
它只是一个协议名字,并不表示其他的路由选择协议不是“最短路径优先”。OSPF最主要的特征就是使用分布式的链路状态协议(link state protocol),OSPF有三个要点:
(1)向本自治系统中所有路由器发送信息。使用洪泛法(flooding),路由器通过所有输出端口向所有相邻的路由器发送信息。
(2)发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。链路状态就是说明本路由器都和那些路由器相邻,以及该链路的“度量”(metric)。用来表示费用、距离、时延、带宽、等等。
(3)只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送信息。
OSPF特点:
(1)OSPF允许管理员给每条路由指派不同的代价。OSPF对于不同类型的业务可计算出不同的路由。
(2)若果到同一个目的网络有多条相同代价的路径,那么可以将同信量分配给这几条路径,这叫做路径间的负载均衡。
(3)所有在OSPF路由器之间交换的分组,都具有鉴别的功能。
(4)OSPF支持可变长度的子网划分和无分类的编址CIDR.
(5)由于网络中的链路状态可能经常发生变化,因此OSPF让每一个链路状态都带上一个32位的序号,序号越大状态就越新。
2.5OSPF的五种分组类型
- 问候(hello)分组,用来发现和维持邻站的可达性。
- 数据库描述(database description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 链路状态请求(link state request)分组,向对方请求发送某些链路状态项目的详细信息。
- 链路状态更新(link state update)分组,用洪泛法对全网更新链路状态。
- 链路状态确认(link state acknowledgment)分组,对链路更新分组的确认。
外部网关协议BGP
BGP采用了路径向量(path vector)路由选择协议。BGP协议交换路由信息的结点数量级是自治系统个数的量级。
BGP-4的四种报文:
(1)open(打开)报文,用来与相邻的另一个BGP发言人建立关系,使通信初始化。版本(1字节)、本自治系统号(2字节)、保持时间(2字节)、BGP标识符(4字节)、可选参数长度(1字节)、可选参数。
(2)update(更新)报文,用来通告某一路由的信息,以及列出要撤销的多条路由。不可行路由长度(2字节)、撤消的路由、路径属性总长度(2字节)、路径属性、网络层可达性信息NLRI
(3)keeplive(保活)报文,用来周期性地证实邻站的连通性。只有BGP的19字节长通用首部。
(4)notification(通知)报文,用来发送检测到的差错。差错代码(1字节)、差错子代码(1字节)、差错数据
3.7路由器的构成
1路由器的结构
路由器可以划分两大部分:路由选择部分和分组转发部分
路由选择部分也叫控制部分,核心构件是路由选择处理机;分组转发部分由三部分组成:交换结构、一组输入端口、一组输出端口
2.交换结构
通过存储器、通过总线、通过互连网络
3.8 IP多播
1.IP多播的基本概念
能够运行多播协议的路由器称为多播路由器(multicast router)。在因特网上进行多播就叫做IP多播。IP多播所传送的分组需要使用多播IP地址。多播地址只能用于目的地址,而不能用于源地址。224.0.1.0至238.255.255.255 全球范围都可使用的多播地址。
IP多播分为两种。一种是只在局域网上进行硬件多播,另一种则是在因特网的范围进行多播。
2.网际组管理协议IGMP和多播路由选择协议
(1)IP多播需要两种协议
多播转发必须动态地适应多播组成员的变化(这时网络拓扑并未发生变化)。多播路由器在转发多播数据报时,不能仅仅根据多播数据报中的目的地址,而是还要考虑这个多播数据报从什么地方来和要到什么地方去。
多播数据报可以由没有加入多播组的主机发出,也可以通过没有组成成员接入的网络。
(2)网际组管理协议IGMP
IGMP工作分两个阶段:
第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个IGMP报文,声明自己要成为该组的成员。本地的多播路由器收到IGMP报文后,还要利用多播路由选择协议把这种组成员关系转发给因特网上的其他多播路由器。
第二阶段:组成员关系使动态的。本地多播路由器要周期性地探询本地局域网上的主机,以便知道这些主机是否还基础是组成员。只要有一个主机对某个组响应,那么多播路由器就认为这个组是活跃的。如果没有响应,认为本网络的主机已经离开这个组,就会转发给其他多播路由器。
(3)多播路由选择协议
多播路由选择实际上就是要找出以源主机为根节点的多播转发树。
转发多播报时使用了以下三种方法:
- 洪泛与剪除 采用反向路径广播RPB(reverse path broadcasting)的策略。RPB的要点是:每一个路由器在收到一个多播数据报时,先检查数据报是否从源点经最短路径传送来的。如果在多播转发树上的某个路由器发现它下游树枝已经没有该多播组的成员,就赢把它和下游的树枝一起剪除。
- 隧道技术 隧道技术适用于多播组的位置在地理上很分散的情况。
- 基于核心的发现技术
下面是一些建议使用的多播路由选择协议:
距离向量多播路由选择协议DVMRP
基于核心的转发树CBT
开放最短通路优先的多播扩展MOSPF
协议无关多播-密集方式PIM-DM
3.9虚拟专用网VPN和网络地址转换NAT
1.虚拟专用网VPN
在因特网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发
利用公用的因特网作为机构专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN(virtual private network)。所有通过因特网传送的数据都必须加密。
2.网络地址转换NAT
NAT(network address translation)。使用端口号的NAT也叫网络地址与端口号转换NAPT(network address and port translation)
第四章 运输层
4.1运输层协议概述
4.1.1进程之间的通信
运输层向它上面的应用层提供通信服务,两个主机进行通信就是两个主机中的应用进程相互通信。通信的真正端点并不是主机而是主机中的进程。端到端的通信是应用进程之间的通信。运输层有一个重要功能:复用(multiplexing)和分用(demultiplexing)。
复用指在发送方不同的应用进程都可以使用同一个运输层协议传送数据;分用指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。
网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。运输层还要对收到的报文进行检测。根据应用程序的不同需求,运输层需要有两种不同的运输协议,即面向连接的TCP和无连接的UDP。运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道,但这条逻辑信道对上层的变现却因运输层使用的不同协议而又很大的差别。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。但当运输层采用无连接UDP协议时,这种逻辑通信信道任然是一条不可靠信道。
4.1.2运输层的两个主要协议
TCP/IP运输层的两个主要协议:
(1)用户数据报协议UDP(user datagram protocol)
(2)传输控制协议TCP(transmission control protocol)
按照OSI术语,两个对等运输实体在通信时传送的数据单位叫做运输协议数据单元TPDU(transport protocol data unit);在TCP/IP协议中称为TCP报文段或UDP用户数据报。UDP在传送数据之前不需要先建立连接。TCP则提供面向连接的服务。
4.1.3运输层的端口
运输层的复用和分用功能类似。应用程所有的应用进程都可以通过运输层再传到IP层(网络层),这就是复用。运输层从IP层收到数据后必须交付致命的应用进程,这就是分用。
在协议栈层间的抽象的协议端口是软件端口,软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
TCP/IP使用源端口和目的端口两个重要字段,用一个16位端口号来标志一个端口。
运输层端口号分为两大类:
(1)服务器端使用的端口号
熟知端口号(well-known port number)或系统端口号
- 登记端口号
(2)客户端使用的端口号
4.2用户数据报协议UDP
4.2.1UDP概述
UDP主要特点:
(1)UDP是无连接的,发送数据之前不需要建立连接,减少了开销和发送数据之前的时延。
(2)UDP使用尽最大努力交付
(3)UDP是面向报文的
(4)UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。
(5)UDP支持一对一、一对多、多对一和多对多的交互同信。
(6)UDP的首部开销小,只有8字节,TCP20字节。
4.2.2UDP的首部格式
IP数据报的检验和检验IP数据报的首部,UDP检验和是把首部和数据部分一起都检验的。
4.3传输控制协议TCP
4.3.1TCP主要特点
(1)TCP是面向连接的运输层协议。
(2)每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能点对点的。
(3)TCP提供可靠的交付。通过TCP连接传送的数据,无差错、不丢失、不重复、并且按序到达。
(4)TCP提供全双工通信。
(5)面向字节流。TCP中的“流”指的是流入到进程或者从进程流出的字节序列。
4.3.2TCP连接
套接字 socket = (IP地址:端口号)
每一条TCP连接唯一地被通信两端的两个端点(两个套接字)所确定。
TCP连接::={socket1,socket2} = {(IP1:port1),(IP2:port2)}
4.4可靠传输的工作原理
4.4.1停止等待协议
全双工通信的双发即使发送方也是接收方。
(1)无差错情况
(2)出现差错
上图(b)在传输过程中出现差错的情况。
(3)确认丢失和确认迟到
使用确认和重传机制,可实现在不可靠的传输网络上实现可靠的通信。
4.5报文段的首部格式
4.6 TCP的运输连接管理
A主动打开连接,B被动打开连接。
B的TCP服务器进程先创建传输控制块TCB(transmission control block),准备接受客户进程的连接请求。然后服务器进程就处于LISTEN(收听)状态,等待客户的连接请求。如有,即做出响应。
A的TCP客户进程也是首先穿件传输控制模块TCB,然后向B发出连接请求报文段,这时首部中的同部位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段(即SYN = 1 的报文段)不能携带数据,但要消耗掉一个序号。这时TCP客户进入SYN-SENT(同步已发送)状态。
B收到连接请求报文段后,如同意建议连接,则向A发送确认。在确认报文段中应把SYN位和ACK位都置1,确认号是ack = x+1 ,同时也为自己选择一个初始序号seq = y。这个报文段也不能携带数据,但要消耗掉一个序号。这时TCP服务器进程进入SYN-RCVD(同步收到)状态。
TCP客户进程收到B的确认后,还要向B给出确认。确认报文段的ACK置1,确认号ack = y + 1,而自己的序号seq = x +1。TCP的标准规定,ACK报文段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍为seq = x+1。这时,TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态。
当B收到A的确认后,也进入ESTABLISHED状态。
这种连接过程叫做三次握手(three-way handshake)。
-