850 likes | 965 Views
第五章 TCP/IP 协议. 互联网的基本概念 —IP 层在 TCP/IP 协议栈中的位置. 应用层协议. 传输层协议. ARP. IP. ICMP. 网卡驱动程序. IPv4 和 IP 数据报. 无连接数据报传递服务 IP 数据报格式 IP 数据报的分段和重组 IP 数据报的路由和转发 IP 数据报差错报告. 无连接数据报传递服务. 源主机. IP 数据报. 网络 1. IP 数据报. 帧头 1. R1. IP 数据报. 网络 4. R3. 网络 2. 帧头 2. IP 数据报. R2. IP 数据报. 网络 3.
E N D
互联网的基本概念—IP层在TCP/IP协议栈中的位置互联网的基本概念—IP层在TCP/IP协议栈中的位置 应用层协议 传输层协议 ARP IP ICMP 网卡驱动程序
IPv4 和 IP 数据报 • 无连接数据报传递服务 • IP 数据报格式 • IP 数据报的分段和重组 • IP 数据报的路由和转发 • IP 数据报差错报告
无连接数据报传递服务 源主机 IP数据报 网络1 IP数据报 帧头1 R1 IP数据报 网络4 R3 网络2 帧头2 IP数据报 R2 IP数据报 网络3 IP数据报 帧头3 目标主机 IP数据报
无连接数据报传递服务(续) • IP只要求物理网络提供最基本的功能:传输包。 • IP数据报的传递是互相独立的; (OSI 模型中X.25是有连接的,后来才增加无连接服务。) 收到数据报时不发确认;对IP数据报的损坏、丢失、错序、重复 听之任之。 • 确定数据报的路由。 • 数据报的分段和重组。 尽力而为(best effort),不保证可靠。
IP数据报格式 0 16 31 版本 报头长 服务类型 总长度 标识 D F M F 分段位移 生存时间TTL 协议号 报头校验和 源 IP地址 目标 IP地址 可选项+填充 数据
IP数据报格式(续) 绝大多数IP数据报包含20字节的报头: • 版本(4位):IP协议版本,当前为4。 • 报头长(4位):本数据报头的字数,每字4字节,范围是5~15,5即20字节,15即60字节,所以选项最多占40字节 • 服务类型(8位)(type of service):本数据报的服务质量参数,当前未实现,设置为0。 • 总长度(16位):数据报最大长度为65535字节。
IP数据报格式(续) • 标识(16位):数据报编号,当路由器将本数据报分段时,此标识拷贝到每个段的IP报头。在分段重组时它用来确定该分段属于哪个数据报。 • DF(Don’t Fragment)(1位):DF=1禁止本报分段。 • MF(More Fragment)(1位):MF=1表示后面还有本报的分段, MF=0表示是最后一个分段。 • 分段位移:分段位移×8指出本分段在原数据报中从第几字节开始。除最后一段外,其余分段的长度是8字节的倍数。 这些字段是与分段和重组有关的。
IP数据报格式(续) • 生存时间TTL:指明数据报在互联网上逗留的最大时间。标准按秒计,实际上按跳数计。数据报每经过一个路由器,TTL减1,当TTL=0 时数据报被丢弃。防止无法投递的报无限传递。 • 协议号(8位):指明上一层协议,6表示上层是TCP,17表示上层是UDP。 • 报头校验和(16位):通过路由器时TTL减1,校验和要重新计算。IPv6无校验和,... • 源IP地址(32位):数据报源主机的IP地址。 • 目标IP地址(32位):数据报目标主机的IP地址。
IP数据报的分段和重组 • 物理网络一般限制通过包的最大长度,如以太网允许最大帧长1518字节。若物理网络允许的包长小于IP数据报长,路由器的IP层要将该报分段成多个IP报转发。 • 分段后的数据报在被发送过程中还可以再分段。 • 由目标主机的IP层对分段报进行一次重组,IP不区分经一次或多次分段的报。
IP数据报的路由和转发 主机和路由器如何为IP数据报确定路径: • 源主机和目标主机位于同一物理网络:数据报在物理网络内传递。比如以太网,源主机将目标主机IP地址转换成物理地址, 把数据报封装在以太网帧中直接发送。 • 源主机和目标主机位于不同物理网络:数据报经路由器转发。路由器通过路由表决定数据报的下一站。 • 源主机如何确定该发往哪个路由器? 主机也有一张路由表,并配置默认网关。
IP数据报的路由和转发(续) 202.112.58.1 202.112.58.3 网2:202.112.58.0 R1 R3 50.0.0.1 202.112.58.2 网1:50.0.0.0 R2 网3:166.111.0.0 128.1.0.2 166.111.0.1 网4:128.1.0.0
IP数据报的路由和转发(续)—路由器R3的路由表 * 项是默认路由项,或叫默认网关(default gateway)
IP数据报差错报告 互联网控制报文协议 ICMP (Internet Control Message Protocol) 就是 IP 数据报差错报告机制,ICMP 报文封装在 IP 数据报中发送。 ICMP差错报文: ICMP信息报文: • 目标不可达 • 回答请求/回答响应 • 数据报超时 (ping 用它测主机可达性) • 数据报参数问题 • 时间戳/时间戳响应 • 报源减速 • 地址屏蔽码请求/响应 • 重定向
路由协议 路由器的核心是网络层,包括 IP、ICMP、ARP,还有一个或多个路由协议。由于路由协议需要传输层协议支持,实际路由器还包括高层模块,还有网管模块。 • 路由器功能和路由协议分类 • 内部路由协议OSPFv2 • 外部路由协议BGP-4 • 无类别域间路由CIDR
路由器功能 互联网中路由器的传统功能: • 交换路由信息:与其它路由器交换网络拓扑和网段时延等信息; • 执行路由算法:基于路由信息计算、更新路由表,为数据报决定路由。 Internet是由许多自治系统 AS互联而成,所谓自治系统是由单一机构管理、操作下的路由器连接的互联网。
路由协议分类 Internet的路由协议分两类: • 内部路由协议或内部网关协议IGP—自治系统内部路由器交换路由信息的协议: RIP (Routing Information Protocol),DV类。IS-IS,OSPF(Open Shortest Path First),LS类。 • 外部路由协议或外部网关协议EGP —不同自治系统的路由器交换路由信息的协议:BGP(Border Gateway Protocol)
内部路由协议OSPF—原理 是链路状态路由协议 • 每个路由器都有本链路状态信息,即它直接连接的路由器和网络,及到它们的“距离”。 • 周期地将本链路状态扩散(flooding)到所有结点。 • 所有的链路状态合在一起就是自治系统的拓扑数据库,每个路由器维持这个拓扑数据库。 • 每个路由器根据这个拓扑数据库构造一个以自身为根的最短路径树,从最短路径树生成它的路由表。
外部路由协议BGP AS1 AS2 网络 网络 R2 R5 网络 网络 R1 R7 R3 R6 网络 网络
外部路由协议BGP(续) • 路由器R1属于自治系统AS1,路由器R5属于 AS2。R1和R5都实现外部路由协议BGP交换路由表,它们也分别实现各自的自治系统内部路由协议,如OSPF。 • BGP基本上是距离向量路由算法,所不同的是它把到达某网络选择的整个路径告诉邻居,而不只是下一站。路径信息AS_PATH中有所穿越的自治系统网络编号,利用AS_PATH可进行环路检测,克服了“计数到无限”的问题。
新一代IP—IPv6 • IPv4的问题:32位约43亿个地址,大大少于全球人口数(60亿),将于2008年用完;骨干网路由表信息爆炸。 • IPv6的主要设计特点 • IPv6基本头格式 • IPv6地址 • IPv6可选项 • 全球的IPv6试验网
IPv6的主要设计特点 • 保留IPv4无连接,“尽力而为”数据报传递特征。 • 扩展的地址空间和编址功能:IPv6支持的地址数是IPv4的40亿×40亿×40亿倍!128位地址采用层次结构,地球每平方米的地址数保守估计1564,乐观估计391×1016。 • 精简的基本报头格式(8字段),简化了报头处理。 • 支持服务质量控制:通信流等级(traffic class)将IP包分为不同的服务类别。流标号(flow label)可为特定的IP包流申请资源和优先级。 • 可选项支持身份认证和数据加密。
IPv6的主要设计特点(续) • 基本头和扩展头编码方式改进了性能,增加了扩展的灵活性 40字节 可选 基本头 扩展头1 ... 扩展头N 传输层包
IPv6基本头格式 0 31 版本 通信流等级 流标号 负载长度 后续头部 跳数限制 源地址 (128位) 目标地址 (128位)
IPv6基本头格式(续) • 版本(version):=6。 • 通信流等级(traffic class):用于服务质量控制。 • 流标号(flow label):路由器对流中报同样处理。 • 负载长度(payload length):除基本头外负载字节数。 • 后续头部(next header):标识基本头后头部类型。 • 跳数限制(hop limit):数据源设定, 经路由器减1。 • 源地址(source address):数据报源地址。 • 目标地址(destination address):数据报目标地址。
IPv6基本头格式-与IPv4比较 • IPv4报头中有报头长度,IPv6基本头定长。 • IPv4报头中有报头校验和,IPv6没有。Paxson经统计发现:通过链路层CRC校验的包约0.02%有校验和错误。Stone等收集了约22亿个包,其中约48万个包有IP、UDP或TCP校验和错误。1278个包IP校验和错。 • IPv6的路由器不对数据报分段,… • IPv6的可选项在扩展报头,路由器一般不需要处理可选项。
IPv6地址 有三类IP地址:单播、任播、多播地址 • 地址的冒分十六进制表示 • 可集成的全局单播地址 • 局部使用(local use)的单播地址 • 嵌入IPv4地址的IPv6地址 • 任播地址 • 多播地址
地址的冒分十六进制表示 • 将128位地址分成8段,每段16位用十六进制数表示,段之间用冒号“:”隔开。例2080:0000:0000:0000:0123:4567:89AB:CDEF, FF01:0000:0000:1234:89AB:0000:0000:0000 • 一或多个连续的全0可用“::”代替, 但“::”在一个地址中只能出现一次, 各段数字开始的0可省略。如FF01:0:0:1234:89AB:: • 地址前缀用“IPv6地址/前缀位数”表示,前缀位数是十进制数。例如:3FFE:3200::/24。 • ::1是回绕地址(loopback), 用于自己给自己发送。
可集成的全局单播地址(aggregatable global unicast address) • 格式前缀FP(Format Prefix):为001。 • 顶级集成标识(Top-Level Aggregation ID):指定Internet顶级机构,即服务提供者网络号。 • 下一级集成标识(Next-Level Aggregation ID):由TLA ID指定的服务提供者用于区分它的用户网络号 3 13 8 24 16 64 FP TLA ID RES NLA ID SLA ID interface ID
可集成的全局单播地址(续) • 场所级集成标识(Site-Level Aggregation ID):用户用来构建用户网络的编址层次,标识用户网络内的特定子网。每个场所可有65536子网。 • 接口标识(interface ID):用于标识链路接口,一般是数据链路层地址,如48位以太网地址。 • 保留(REServed):留给将来使用。 对于每个Internet服务提供者的网络号TLA ID,Internet的主干路由器必须有一表项与之对应。保留的8位是为TLA ID和/或NLA ID扩展预留。
局部使用的单播地址 10 54 64 (位) 1111 1110 10 0 接口标识 本链路使用(link-local-use)的单播地址格式 10 38 16 64 (位) 1111 1110 11 0 子网标识 接口标识 本场所使用(site-local-use)的单播地址格式
局部使用的单播地址(续) • 若源/目标地址为本链路使用的地址,则数据报只转发到该单一链路,如中继器或网桥连接的以太网链路,不转发到其它链路。 • 若源/目标地址为本场所使用的地址,则路由器不把数据报转发到场所以外。一个场所可以是由路由器连接的多个以太网链路。 • 局部使用的地址无需申请地址前缀,若要连到Internet,可加全局前缀自动重编址。
嵌入IPv4地址的IPv6地址 IPv4向IPv6的过渡: • 在过渡时期IPv4地址和IPv6地址必须共存。过渡期有的结点实现双IP协议栈,同时支持IPv4和IPv6,被称为 IPv6/IPv4结点。 • 采用“隧道(tunnel)技术”: 在IPv4路由拓扑的基础上将IPv6数据报外加IPv4报头转发,即封装IPv4报头。隧道可以是源到目标路径的一段, 开始和结束端是IPv6/IPv4结点。
嵌入IPv4地址的IPv6地址(续) • 实施隧道技术的IPv6/IPv4结点被指定特殊的IPv6单播地址,称为“与IPv4兼容的IPv6地址(IPv4-compatible IPv6 address)”。隧道端结点的IPv4地址可从这种IPv6地址自动导出。 80 16 32 位 000000…… 0000 IPv4地址
嵌入IPv4地址的IPv6地址(续) • “映射IPv4的IPv6地址(IPv4-mapped IPv6 address)”用来表示只实现IPv4不支持IPv6的结点。 • 在IPv4和IPv6混合网中,上述地址可用冒分十六进制和点分十进制结合的形式表示为: x:x:x:x:x:x:d.d.d.d,如 ::202.112.58.200 80 16 32 (位) 000000…… FFFF IPv4地址
任播地址 • 任播地址是从单播地址空间分配的,当一个单播地址被分配给一个以上接口时就变成任播地址。 • 任播地址不能用作源地址;不能指定给主机,只能指定给路由器。 • 发送到任播地址的数据报被送到“最近”的结点。任播地址可表示连到特定子网的一组路由器,或属于一个机构的一组路由器。
多播地址 8 4 4 112 (位) • 标记 (flag):T=0表示永久性的周知(well-known)多播地址;T=1表示暂时指定的多播地址。 • 范围 (scope):限制多播组的范围,1=本结点(node-local)范围;2=本链路(link-local)范围; 5=本场所(site-local)范围;8=本机构范围; 14=全局范围(global scope)。例FF02::2, FF05::2。 1111 1111 标记 范围 组标识 000T
IPv6可选项 IPv6的可选项放在扩展头。定义了6种选项: • 逐跳选项(hop-by-hop options):给路由器信息; • 路由选项(routing options):部分/全部路由信息; • 分段选项(fragment options):管理数据报分段; • 目标选项(destination options):给目标的信息; • 身份认证(authentication):为数据报提供发送主机身份认证和数据完整性校验; • 载荷安全封装(encapsulating security payload):为数据报提供加密, 也包括发送主机身份认证。
全球的IPv6试验网 • 1996年创建的 6bone 是全球的IPv6试验网。 • 6bone 使用地址前缀 3FFE::/16。它为注册者分配一个24位地址前缀,称为 pTLA (pseudo TLA)。 • CERNET分配到3FFE:3200::/24。 • 6bone通过封装 IPv4 报头来传递 IPv6 数据报。 • IPv6的前景?! 从IPv4平滑过渡到IPv6十分重要,但过渡到 IPv6 耗资巨大!美国拥有的IPv4地址占全世界的74% …,日、韩和欧洲较积极。
Internet传输层 BGP FTP HTTP SMTP TELNET SNMP DNS TCP UDP OSPF IP + ICMP
Internet传输层 • 传输控制协议 TCP (Transmission Control Protocol)是端到端、有连接、可靠数据流传输协议。多数互联网应用需要TCP的可靠传输服务。 • 用户数据报协议 UDP(User Datagram Protocol)是端到端、无连接、不保证可靠的数据报传输协议。它为互联网上实时视频、音频应用提供了实验环境。 • 拥塞控制的进一步研究
TCP概况 • TCP 是由Vinton Cerf 和 Robert Kahn 在1973年设计,原先 IP 和 TCP 是合在一起的,后来把寻径转发和可靠传输分成两层。 • TCP 向应用层提供可靠的进程间通信。IP地址标识主机,TCP 端口号标识应用进程。集中统一分配的端口号称为周知端口(well-known port),其余的动态分配。 • 应用进程使用 TCP 通信,首先要建立连接。TCP传输的数据单元称数据片(segment)。
可靠数据流传输协议TCP • TCP数据可靠传输机制 • TCP滑动窗口流控 • TCP数据片格式 • TCP连接建立—三次握手 • TCP连接关闭 • TCP重传策略和重传超时值 • TCP拥塞控制 • TCP协议的问题和扩充
TCP数据可靠传输机制 TCP源进程 TCP目标进程 数据字节1001~2000 ACK 2001 数据字节2001~2500 丢失 超时 重传数据字节 2001~2500 ACK 2501
TCP数据可靠传输机制(续) • TCP 源进程为一个连接上传输的每个数据字节指定序号; • TCP 为每个数据片计算校验和; • TCP 目标进程要对正确收到(即校验和正确)的数据字节序号给予确认(ACKnowledgement); • TCP 源进程所发出的数据片在某时间间隔没有收到确认,则要(超时)重传数据片。 若每发一个数据片要等待确认,性能...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 TCP滑动窗口流控 窗口滑动 • 目标进程控制源进程发送窗口的大小 • 窗口外左边的字节已被发送,且已收到确认 • 窗口内字节可以发送/已被发送,但未收到确认 • 窗口外右边的字节不能发送。
TCP滑动窗口流控(续) • TCP确认字节,滑动窗口大小也以字节为单位,而不是数据片。这是有历史原因的,原来TCP和IP是一层,采用字节流为了方便TCP数据片被分段,后来分成两层,分段功能放在IP层。 • 在传输中几个小片合成一个片会更有效,采用字节流小片合大片更方便。 • 用数据片数目说明数据总量不及用字节数更确切,因为一个数据片可以容纳一个字节,也可以容纳1000字节。
TCP数据片格式 0 16 31位 源端口 (source port) 目标端口 (destination port) 序号 (sequence number) 20 字 节 确认号 (acknowledgement number) 片头 长度 保留 U R G A C K P S H R S T S Y N F I N 窗口大小 (window size) (字节数) 校验和 (checksum) 紧急指针 (urgent point) 选项 (options)+填充 (padding) 数据
TCP数据片格式(续) • 源端口:连同源 IP 地址标识源应用进程。 • 目标端口:连同目标 IP 地址标识目标主机的一个应用进程。 • 序号:代表本数据片第一个字节的序号。 • 确认号:若ACK=1,确认号代表期待接收的下一数据字节序号。 • 片头长度:片头的字数,每个字32位。指明数据从哪里开始。