《5 TCP-IP协议.ppt》由会员分享,可在线阅读,更多相关《5 TCP-IP协议.ppt(110页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、5 TCP/IP协议协议5.1 概述5.2 IP层协议5.3 传输层协议5.4 小结2023/1/171网络协议网络协议IPX/SPX(Internetwork Packet eXchange/Sequences Packet eXchange)Novell公司的通信协议集NetBEUI(NetBIOS Extended User Interface)Microsofts networking protocols for its LAN Manager and Windows NT.AppleTalkA communications protocol developed by Apple Co
2、mputer to allow networking between Macintoshes.EtherTalk Apple Computers protocol for Ethernet transmissions.DECnetDEC proprietary network architecture,a system for networking computers.SNA(Systems Network Architecture)IBMs layered protocols for mainframe communications.2023/1/172基于基于TCP/IP的互联网的互联网2
3、023/1/173互联网之父互联网之父:Vinton G.Cerf 博士博士1974年,与Robert Kahn 合作设计了 TCP/IP 协议及互联网的基础体系结构Cerf:“三十多年前研究TCP/IP的时候,我们没有想到这项技术会得到如此广泛的运用”“改变了全球商务、通信和娱乐状况的数字革命的最前沿”1994年入选美国杂志“最迷人的25人”Cerf:“我想不是我迷人,只是当时互联网太迷人了,我有幸沾光而已”老派绅士,喜欢美酒和美食,热爱烹饪,科幻小说迷2023/1/174TCP/IP和和OSI2023/1/175OSI与与TCP/IP模型模型相同点都是基于独立的协议栈概念两者都有功能相似的
4、应用层、传输层、网络层不同点在OSI模型中,严格地定义了服务、接口、协议;在TCP/IP模型中,没有严格区分服务、接口与协议OSI模型支持非连接和面向连接的网络层通信,但在传输层只支持面向连接的通信;TCP/IP模型只支持非连接的网络层通信,但在传输层有支持非连接和面向连接的两种协议可供用户选择TCP/IP模型中不区分、甚至不提起物理层和数据链路层2023/1/176IP与与TCP功能功能IP提供不可靠、无连接、“尽力而为(Best Effort)”的数据报传送服务数据传输(Basic data transfer)寻址(Addressing)路由(Routing)数据报拆分(Fragmenta
5、tion of datagrams)TCP提供可靠的面向连接的字节流服务复用(Multiplexing)Socket流控制(Flow control)连接管理(Connection establish/termination)2023/1/1775.2 IP层协议层协议IP数据报寻址子网网络层其他协议2023/1/178IP层协议层协议2023/1/179IP数据报数据报2023/1/1710以太网中小数据报的封装以太网中小数据报的封装2023/1/1711IP层数据复用层数据复用2023/1/1712例例5.1 IP数据报数据报2023/1/1713收到的IP包最初8位为 01000010.
6、接收方丢弃了该包.为什么?这个包中有错误最左边的4比特(0100)表明IPv4,没有问题接下来的4比特(0010)是头长:2 x 4=8,小于最小头长20,说明包在传输过程中已被破坏例例5.2 IP数据报数据报2023/1/1714IP包中,首部长度字段是1000(2进制).这个包中含多少字节的可变选项?首部长度字段是8,说明IP首部的整个长度是8 x4=32 字节除去最基本的20字节,共有12字节的任选项IP包中,首部长度是0 x5,总长度是0 x28.这个包携带了多少字节的数据?IP首部的整个长度是5 x 4=20 字节(无选项)IP包中的数据长度为40(0 x28)20=20 字节标志字
7、段标志字段2023/1/1715数据报在通过不同的网络时,可能被分段以适应网络中帧的大小.例例6.3 数据分片数据分片(1)2023/1/1716例例5.3 数据分片数据分片(2)2023/1/1717IP寻址寻址2023/1/1718每个Internet上的主机都具有唯一32bit的IP地址IP地址定义了主机到网络的连接地址定义了主机到网络的连接IP地址目前由ICANN(Internet名字与号码指派公司)分配1.分类 IP 地址:最基本的编址方法,1981 年通过了相应的标准协议2.子网划分:对最基本编址方法的改进,其标准RFC 950在 1985 年通过3.构成超网:这是比较新的无分类编
8、址方法,1993 年提出后得到推广应用TCP/IP寻址寻址2023/1/1719IP地址与物理地址地址与物理地址2023/1/1720IP地址分类地址分类2023/1/1721判别判别IP地址类别地址类别2023/1/1722IP地址范围地址范围(十进制十进制)2023/1/1723用十进制表示用十进制表示IP地址地址2023/1/1724Internet上的上的IP地址地址2023/1/1725两层结构网络两层结构网络2023/1/1726三级三级IP地址地址在ARPANET的早期,IP地址的设计不够合理:IP地址空间利用率很低 每一个物理网络分配一个网络号使路由表变得太大两级IP地址不够灵
9、活划分子网划分子网(subnetting):从 1985 年起在 IP 地址中又增加了一个“子网号字段”,使两级 IP 地址变成为三级IP地址2023/1/1727划分子网是一个单位内部的事情,对外没有任何影响.三层结构网络三层结构网络2023/1/1728子网掩码子网掩码(subnet mask)2023/1/1729可用主机数:(26-2)*(210-2)=63364可用主机数:216-2=65534划分子网将使可用的IP地址减少.子网掩码子网掩码2023/1/1730缺省子网掩码缺省子网掩码2023/1/1731类掩码(二进制)掩码(10进制)斜线表示A11111111 00000000
10、 00000000 00000000255.0.0.0/8B11111111 11111111 00000000 00000000255.255.0.0/16C11111111 111111111 11111111 00000000255.255.255.0/24例例5.5 三级寻址三级寻址路由器收到的IP包目的地址是190.240.33.91,假定子网掩码是/19,说明寻址过程.路由器三级寻址过程:根据IP地址190.240.33.91(B类)确定网络号190.240.0.0用地址掩码和目的地址逐比特相与,得到子网地址190.240.32.0用IP地址和本子网的机器IP相匹配2023/1/1
11、732特殊特殊IP地址地址2023/1/1733IP地址可以为描 述网络号子网号主机号源端目的端00OKX 本机0主机号OKX 本网主机127任意值OKOK 环回地址-1-1XOK 受限的广播(不转发)netid-1XOK 网络广播netidsubnetid-1XOK 子网广播netid-1-1XOK 向所有子网广播IP地址使用范围地址使用范围2023/1/1734网络类别最大网络数第一个可用网络号最后一个可用网络号每个网络中的最大主机数A126(27-2)112616777214(224-2)B16382(214-1)128.1191.25565534(216-2)C2097150(221-
12、1)192.0.1223.255.255254(28-2)主机号部分:全 0指本网络;全 1为本网络内广播地址.CIDR(Classless Inter-Domain Routing,无分类编址无分类编址)划分子网在一定程度上缓解了因特网在发展中遇到的困难,然而在 1992 年因特网仍然面临问题:B 类地址在 1992 年已分配了近一半,眼看就要全部分配完毕!因特网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)2023/1/1735CIDR主要特点主要特点CIDR消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4地址空间CIDR使用“网络
13、前缀”(network-prefix)代替分类地址中的网络号和子网号2023/1/1736CIDR使IP地址从三级编址(使用子网掩码)又回到了两级编址.无分类两级编址无分类两级编址无分类两级编址的记法:CIDR使用“斜线记法”(slash notation),它又称为CIDR记法,即在 IP 地址后面加上“/”,然后写上网络前缀所占位数这个数值对应于三级编址中子网掩码中 1 的个数CIDR 把网络前缀都相同的连续的IP地址组成“CIDR地址块”2023/1/1737IP地址地址 :=,CIDR地址块地址块128.14.32.0/20是一个CIDR地址块这个地址块共有 212 个地址第1个地址:
14、128.14.32.0最后1个地址:128.14.47.255在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”2023/1/1738CIDR记法的其他形式记法的其他形式10.0.0.0/10可简写为10/10即把点分十进制中低位连续的0省略10.0.0.0/10 隐含地指出 IP 地址10.0.0.0 的掩码是255.192.0.0网络前缀的后面加一个星号*的表示方法如00001010 00*,在星号*之前是网络前缀,而星号*表示IP地址中的主机号2023/1/1739路由聚合路由聚合(route aggregation)一个 CIDR 地址块可以表示多个地址这种地址
15、的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个原来传统分类地址的路由路由聚合也称为构成超网(supernetting)CIDR 虽然不使用子网,但仍然使用“掩码”这一名词(但不叫子网掩码)对于/20 地址块,它的掩码是 20 个连续的 1,斜线记法中的数字就是掩码中1的个数2023/1/1740构成超网构成超网前缀不超过 23 位的 CIDR 地址块包含了多个 C 类地址这些 C 类地址合起来就构成了超网网络前缀越短,其地址块所包含的地址数就越多2023/1/1741Restriction1.The address in a block must be contiguous.2.
16、the number of address in a block must be a power of 2(1,2,4,8,).3.The first address must be evenly divisible by the number of addresses.2023/1/1742A block of 16 addresses granted to a small organization2023/1/17431.The addresses are contiguous.2.The number of addresses is a power of 2(16=24)3.The fi
17、rst address is divisible by 16.(The first address is 0 xcd102520,when converted to a decimal number,is 3,440,387,360,which when divided by 16 results in 215,024,210.)MaskThe address and the/n notation completely define the whole block(the first address,the last address,and the number of addresses).1
18、.The first address in the block can be found by setting the rightmost 32-n bits to 0s.2.The last address in the block can be found by setting the rightmost 32-n bits to 1s.3.The number of addresses in the block can be found by using the formula 232-n.2023/1/1744An example of address allocation and d
19、istribution by an ISP2023/1/1745Number of granted addresses to the ISP:65,536.Number of allocated addresses by the ISP:40,960.Number of available addresses:24,576.Addresses for private networks2023/1/1746Network address translation(NAT)NAT enables a user to have a larger set of addresses internally
20、and one address,or a small set of addresses,externally.No router will forward a packet that has one of private addresses as the destination address.2023/1/1747A NAT implementation2023/1/1748Addresses in a NAT2023/1/1749All the outgoing packets go through the NAT router,which replace the source addre
21、sssource address with the global NAT address;All incoming packets replace the destination addressdestination address with the appropriate private address.NAPT(Network address and port translation)2023/1/1750Private AddressPrivate PortExternal AddressExternal PortTransport Protocol172.18.3.130000200.
22、24.5.840001TCP172.18.3.250000200.24.5.840002TCP通过NAT路由器的通信必须由专用网内的主机发起,这也是专用网内的主机不能充当服务器的原因.Address mapping and error reporting1.IP was designed as a best-effort delivery protocol,it lacks flow control and error control.It needs protocol(ICMP)to provide alerts.2.IP is a host-to-host protocol using l
23、ogical address.It needs protocols(ARP,RARP)to create a mapping between physical and logical addresses.2023/1/1751主机名字、主机名字、IP地址与地址与MAC地址的转换地址的转换2023/1/1752ARP操作操作2023/1/1753ARP 请求是广播;应答是单播.ARP包包2023/1/1754ARP包的封装包的封装2023/1/1755例例5.6 ARP过程过程2023/1/1756为什么需要为什么需要ARP?既然在网络链路上传送的帧最终是按照硬件地址找到目的主机的,为什么不直接
24、使用硬件地址进行通信,而要使用抽象的IP地址?ARP的主要目的是解决使用不同硬件地址的异构网络之间的通信问题2023/1/1757RARPRARP允许主机在已知MAC地址时获得自己的IP地址RARP应用于无盘工作站为了运行无盘工作站,每个以太网上必须至少有一个RARP服务器RARP过程从NIC读取唯一的硬件地址广播发送一份RARP请求RARP服务器在RARP应答中提供其IP 地址2023/1/1758ICMP(Internet Control Message Protocol)ICMP是主机和路由器使用的一种机制,用来向发送者发送者通知数据报所发生的问题ICMP的功能是报告问题而不是纠正问题I
25、CMP报文只携带发送者和最终目的地的地址,因此它只能将报文发送给源站点源站点与IP数据报一样,ICMP也是不可靠传输,但ICMP的传输问题不能再使用ICMP传达对于被分片的IP分组,只有偏置为0的分组段才能使用ICMP2023/1/1759ICMP提供的服务提供的服务测试主机的可达性和状态报告不可达目的主机给源主机数据报流量控制路由改变请求获取网络地址及子网掩码2023/1/1760ICMP报文封装报文封装2023/1/1761ICMP报文格式报文格式2023/1/1762ICMP报文类型报文类型2023/1/1763ICMP 报文类型报文类型2023/1/1764报文类型类型的值描述差错报告
26、3终点不可达4源点抑制(Source quench)11超时12参数问题5改变路由(Redirect)查询报文8/0回送(Echo)请求或回答13/14时间戳(Timestamp)请求或回答ICMP路由重定向路由重定向2023/1/1765Debugging tools:PingPing program to find if a host is alive and responding.2023/1/1766Debugging tools:Tracert2023/1/1767Tracert operationTracert can be used to trace the route of a
27、 packet from the source to the destination.The program uses two ICMP messages,time exceeded and destination unreachable,to find the route of packet.This is a program at the application level that uses the services of UDP.The destination port of the UDP packet is set to one that is not supported by t
28、he UDP protocol.2023/1/1768Tracert operation2023/1/17695.3 传输层协议传输层协议用户数据报协议(UDP)传输控制协议(TCP)TCP连接管理TCP拥塞控制TCP重传机制2023/1/1770数据传输类型数据传输类型2023/1/1771IP地址和端口地址地址和端口地址2023/1/1772套接字套接字(Socket)2023/1/1773端口复用端口复用2023/1/1774周知端口周知端口 (well-know port)2023/1/1775应用程序FTPTELNETSMTPDNS周知端口21232553应用程序TFTPHTTPSN
29、MP周知端口6980161差错控制差错控制2023/1/1776UDP(User Datagram Protocol)UDP是一个面向无连接的、不可靠的、面向数据报的传输层传输层协议UDP在IP数据报服务上增加了端口和差错检测(可选)的功能UDP利用端口号区分应用层交付的数据UDP检验和覆盖UDP首部和UDP数据UDP 支持一对一、一对多、多对一和多对多的交互通信2023/1/1777UDP:面向报文的协议面向报文的协议UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界报文的大小由应用程序决定应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文发送方:UDP对
30、应用程序交下来的报文,在添加首部后就向下交付 IP 层接收方:UDP对IP 层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文2023/1/1778UDP数据报格式数据报格式2023/1/1779伪首部不传递,仅用于计算检验和例例5.7 计算计算UDP检验和检验和2023/1/178010011001 00010011 153.1900001000 01101000 8.10410101011 00000011 171.300001110 00001011 14.1100000000 00010001 0 和 1700000000 00001111
31、1500000100 00111111 108700000000 00001101 1300000000 00001111 1500000000 00000000 0(检验和)01010100 01000101 数据01010011 01010100 数据01001001 01001110 数据01000111 00000000 数据和 0(填充)10010110 11101101 求和得出的结果01101001 00010010 检验和 按二进制反码运算求和将得出的结果求反码TCP2023/1/1781TCP提供面向连接的、可靠的、端-端的字节流服务TCP报文格式报文格式2023/1/178
32、2TCP连接连接每一条TCP连接(虚连接)唯一地被通信两端的两个端点所决定2023/1/1783TCP连接连接:=socket1,socket2socket:=IP地址地址:端口号端口号TCP连接管理连接管理TCP是面向连接的协议,因此需要对运输连接的建立和释放进行管理TCP连接的建立:三次握手(three-way handshake)TCP连接的释放2023/1/1784三次握手建立三次握手建立TCP连接连接2023/1/1785采用三次握手的方法可以防止已失效的连接请求报文导致错误.释放释放TCP连接连接2023/1/1786字节流服务字节流服务2023/1/17877 68H发送 TCP
33、 报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程1230181716151419202145131211H109 H加上 TCP 首部构成 TCP 报文段TCPTCP字节流字节流H表示 TCP 报文段的首部x表示序号为 x 的数据字节TCP 连接字节流服务字节流服务TCP不关心应用进程一次把多长的报文发送到TCP的缓存TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段的字节数TCP可把太长的数据块划分短一些再传送TCP也可等待积累有足够多的字节后再构成报文段发送出去而UDP发送的报文长度由应用进程决定2023/1/1788TCP拥塞控制拥塞控制拥塞是一种持续
34、过载的网络状态,此时用户对网络资源的需求超过了其固有的容量拥塞导致分组丢失率提高,端到端时延加大,甚至使系统发生崩溃1986年,从Berkely到LBL的链路带宽从32Kbps降到40bps解决拥塞的途径增加网络资源降低用户需求2023/1/1789Packet delay and throughput as functions of load2023/1/1790Queues in a router2023/1/1791路由器中的排队等候是导致网络拥塞的主要原因之一.拥塞控制的作用拥塞控制的作用2023/1/1792提供的负载吞吐量理想的拥塞控制实际的拥塞控制0死锁(吞吐量=0)无拥塞控制拥
35、塞轻度拥塞TCP拥塞控制基本原理拥塞控制基本原理流控自同步(self-clocking)分组守恒定理拥塞控制不仅考虑接收端的接收能力,而且考虑避免网络拥塞加性增加倍乘减小(AIMD)窗口管理算法AIMD简洁,在多个相互冲突的目标之间实现了较为理想的平衡与协调,确保大致相似的用户得到基本相等的网络资源2023/1/1793Jacobson V.Congestion avoidance and control.ACM Computer Communication Review,1988,18(4):314-329.TCP自同步机制自同步机制2023/1/1794TCP自同步机制自同步机制2023/
36、1/1795源端无法确定ACK的同步速率反映的是网络负载状况,还是目的端的处理状况.滑动窗口滑动窗口TCP采用滑动窗口进行流量控制窗口大小的单位是字节窗口大小在连接建立时由双方商定窗口的大小可由接收端增大或者减小2023/1/1796发送窗口上限发送窗口上限=minrwnd,cwndTCP滑动窗口滑动窗口发送方发送窗口并不总是和接收方的接收窗口一样大因为有时间滞后TCP标准没有规定对不按序到达的数据应如何处理通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程TCP要求接收方必须有累积确认的功能,这样可以减小传输开销2023/1/1797TCP拥塞控制拥塞控制
37、2023/1/1798慢启动与拥塞避免慢启动与拥塞避免2023/1/1799TCP流量控制算法造成了传输速率的大幅变化,不适应流媒体业务.cwnd=MSSAIMD算法轨迹算法轨迹2023/1/17100AIMD兼顾了公平、效率和收敛.快重传和快恢复快重传和快恢复这两种拥塞控制算法是对慢启动和拥塞避免的改进快重传可更早地重传丢失的报文段发送端收到3个重复的ACK就立即重传报文,而不必等待计时器超时快恢复是当网络发生拥塞时,通过设置较大的cwnd较快地恢复到正常状态2023/1/17101TCP 快速重传机制快速重传机制2023/1/17102发送方接收方发送 M1 确认 M1t 确认 M2 发送
38、 M2发送 M3发送 M4?发送 M5发送 M6 重复确认 M2 立即重传 M3 重复确认 M2 重复确认 M2 t发送 M7丢失收到三个连续的对 M2 的重复确认立即重传 M3快速恢复快速恢复2023/1/17103快重传与快恢复机制快重传与快恢复机制2023/1/17104242468101214161820220048121620传输轮次拥塞窗口 cwnd收到 3 个重复的确认执行快重传算法慢开始“乘法减小”拥塞避免“加法增大”TCP Reno版本版本TCP Tahoe 版本(已废弃不用)ssthresh 的初始值拥塞避免“加法增大”新的 ssthresh 值慢开始快恢复TCP重传机制重
39、传机制TCP在期望的时间内没有收到确认,就重传这一报文必须尽可能准确估计往返时延RTT2023/1/17105pt数据链路层传输层T1T2T3加权平均加权平均RTTSRTTS又称为平滑的往返时间第一次测量到 RTT 样本时,RTTS 值就取为所测量到的 RTT 样本值.以后每测量到一个新的 RTT 样本,就重新计算一次 RTTS:式中,0 1RFC 2988 推荐的值为 1/8,即 0.1252023/1/17106RTO(Retransmission Time-Out)自适应算法自适应算法RFC 2988 建议:其中,RTTD 是 RTT 的偏差的加权平均值RFC 2988 建议:第一次测量
40、时,RTTD值取测量到 RTT 样本值的一半在以后的测量中,则使用下式计算加权平均的 RTTD:是个小于 1 的系数,其推荐值是 1/4,即 0.252023/1/17107重传后的重传后的ACK判定判定2023/1/17108t12发送TCP报文超时重传TCP报文收到ACKRTT?RTT?是对哪一个报文段的确认?Karn算法算法在计算平均往返时延RTT时,只要报文段重传了,就不采用其往返时延样本目的:解决重传报文段后又收到原来报文段引起的问题问题:重传时间无法更新Karn算法的修正新的重传时间 x(旧的重传时间)其中,的典型值=22023/1/171095.4 小结小结TCP/IP是一系列规则和过程的总称,他们管理互联网中的报文交换IP定义在网络层,是不可靠和无连接的,仅提供尽力传输(Best-Effort)服务IP的错误处理算法:丢弃该数据报,然后发送ICMP消息报给发送方IP地址唯一地定义了主机到其所在网络的连接,子网化是在IP地址中增加了一层结构TCP提供了一种可靠的面向连接的字节流运输层服务UDP是一个不可靠和无连接的协议2023/1/17110