《《TCPIP协议栈》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《TCPIP协议栈》PPT课件.ppt(56页珍藏版)》请在三一办公上搜索。
1、第三章TCP/IP协议栈,本章目标,通过本章的学习,您应该掌握以下内容:掌握TCP/IP分层模型掌握IP协议原理理解OSI和TCP/IP模型的区别和联系,TCP/IP介绍,主机,Internet,TCP/IP,主机,1.TCP/IP是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。2.TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。,TCP/IP 和DoD模
2、型,7,6,5,4,3,2,应用层,表示层,会话层,传输层,网络层,数据链路层,物理层,1,应用层,主机到主机层,Internet层,网络接入层,是OSI模型的一个浓缩版本,它只有四个层次,应用层概述,应用层,主机到主机层,Internet层,文件传输-TFTP*-FTP*-NFSE-Mail-SMTP远程登陆-Telnet*-SSH*网络管理-SNMP*名称管理-DNS*,网络接入层,应用层包含了大量的协议,它集成了各种应用和功能来生成一个可以和OSI模型中三个高层(应用层 表示层 会话层)相对应的集合,应用层协议举例,Telnet:是Internet远程登陆服务的标准协议和主要方式,终端使
3、用者的电脑上使用telnet程序,用它连接到服务器,使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。要开始一个telnet会话,必须输入用户名和密码来登录服务器FTP:是Internet文件传送的基础,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。FTP控制端口号为21,数据端口为20匿名FTP帐号为 anonymous 通过匿名方式登陆后 访问 的内容将会受到一些限制,主机到主机层概述,Tra
4、nsmission ControlProtocol(TCP)User Datagram Protocol(UDP),应用层,主机到主机层,Internet层,网络接入层,面向连接非面向连接,功能类似OSI模型中传输层的功能,它所定义的协议为应用程序提供了在传输层上面的服务。解决了如何创建可靠的端到端的通信 并确保数据传输是无差错的。,TCP 数据格式,Source port(16),Destination port(16),Sequence number(32),Headerlength(4),Acknowledgement number(32),Reserved(6),Code bits(6
5、),Window(16),Checksum(16),Urgent(16),Options(0 or 32 if any),Data(varies),20Bytes,Bit 0,Bit 15,Bit 16,Bit 31,重要,重要,序列号,确认号,TCP的包结构就决定了它将会是可靠的传输协议,TCP数据格式,Sequence numberAcknowledgement number 1.保证数据不会丢失 因为数据都是带有标签的 若发现其中少了某个 序列号的包则会重传 2.保证数据传输的有序性,UDP 数据格式,Source port(16),Destination port(16),Length
6、(16),Data(if any),1,Bit 0,Bit 15,Bit 16,Bit 31,Checksum(16),8Bytes,没有序列号和确认号,关于UDP,既然UDP是一种不可靠的网络协议,那么还有什么使用价值或必要呢,有些情况下UDP协议可能会变得非常有用。因为UDP具有TCP所望尘莫及的速度优势。虽然TCP协议中植入了各种安全保障功能,但是在实际执行的过程中会占用大量的系统开销,无疑使速度受到严重的影响。UDP的报文当我们要传输的数据如果对于丢包来说无所谓,那么就使用UDP传输方式效率高一些UDP协议仍然继续在主流应用中发挥着作用。包括视频电话会议系统在内的许多应用都证明了UDP
7、协议的存在价值。因为相对于可靠性来说,这些应用更加注重实际性能,所以为了获得更好的使用效果(例如,更高的画面帧刷新速率)往往可以牺牲一定的可靠性(例如,画面质量)。,端口号,TCP,端口号,FTP,传输层,TELNET,DNS,SNMP,TFTP,SMTP,UDP,应用层,21,23,25,53,69,161,RIP,520,TCP与UDP都具有端口号,端口号是对接应用层和传输层的重要字段,TCP 端口号,源端口,目标端口,Host A,1028,23,SP,DP,Host Z,Telnet Z,目标端口=23.,当A访问Z时,源端口都是随机产生的,目标端口是固定的因为此处是TELNET 所以
8、为23例:三个浏览器访问一个网站的三个服务,TCP 确认机制,滑动窗口=1,发送方,接收方,TCP 简单确认,滑动窗口=1,发送方,接收方,发送 1,接收 1,TCP 简单确认,滑动窗口=1,发送方,接收方,发送 1,接收 1,接收 ACK 2,发送 ACK 2,收到,请求2,TCP 简单确认,滑动窗口=1,发送方,接收方,发送 1,接收 1,接收 ACK 2,发送 ACK 2,发送 2,接收 2,收到,TCP 简单确认,滑动窗口=1,发送方,接收方,发送 1,接收 1,接收 ACK 2,发送 ACK 2,发送 2,接收 2,接收 ACK 3,发送 ACK 3,请求3,TCP 简单确认,滑动窗
9、口=1,发送方,接收方,发送 1,接收 1,接收 ACK 2,发送 ACK 2,发送 2,接收 2,接收 ACK 3,发送 ACK 3,发送 3,接收 3,收到,滑动窗口=1,发送方,接收方,发送 1,接收 1,接收 ACK 2,发送 ACK 2,发送 2,接收 2,接收 ACK 3,发送 ACK 3,发送 3,接收 3,接收 ACK 4,发送 ACK 4,TCP 简单确认,发送 SYN(seq=100 ctl=SYN),接收 SYN,Host A,Host B,TCP 三次握手,发送 SYN(seq=100 ctl=SYN),接收 SYN,发送 SYN,ACK(seq=300 ack=101
10、 ctl=syn,ack),Host A,Host B,接收 SYN,TCP 三次握手,序列号300 回复101 回复的是SYN,发送 SYN(seq=100 ctl=SYN),接收 SYN,发送 SYN,ACK(seq=300 ack=101 ctl=syn,ack),建立会话(seq=101 ack=301 ctl=ack),Host A,Host B,接收 SYN,TCP 三次握手,TCP连接建立,序列号101 回复301 确认,TCP 序列号和确认号,源端口,目标端口,序列号#,确认号#,Source,Dest.,Seq.,Ack.,1028,23,10,1,我发送#10.,TCP的三
11、次握手只是安全的一部分(确保连接安全)剩下的安全性靠序列号和确认号来实现(确保数据安全),TCP 序列号和确认号,我已收到#10,现在我需要#11.,源端口,目标端口,序列号#,确认号#,1028,23,Source,Dest.,10,Seq.,1,Ack.,1028,23,Source,Dest.,11,Seq.,1,Ack.,我发送#10.,TCP 序列号和确认号,源端口,目标端口,序列号#,确认号#,1028,23,Source,Dest.,11,Seq.,2,Ack.,1028,23,Source,Dest.,10,Seq.,1,Ack.,1028,23,Source,Dest.,11
12、,Seq.,1,Ack.,我已收到#10,现在我需要#11.,我发送#10.,TCP 序列号和确认号,源端口,目标端口,序列号#,确认号#,1028,23,Source,Dest.,11,Seq.,2,Ack.,1028,23,Source,Dest.,10,Seq.,1,Ack.,1028,23,Source,Dest.,11,Seq.,1,Ack.,1028,23,Source,Dest.,12,Seq.,2,Ack.,我已收到#11,现在我需要#12.,我发送#11,TCP 滑动窗口,发送方,接收方,滑动窗口:窗口大小根据接收方而变化,TCP 滑动窗口,Window size=3Send
13、 2,发送方,接收方,Window size=3Send 1,Window size=3Send 3,Size=3 发送方的窗口大小为3,Window size=3Send 2,TCP 滑动窗口,发送方,Window size=3Send 1,Window size=3Send 3,ACK 3Window size=2,数据 3 被丢弃,接收方,Ack=3 说明未接收到3号包Size=2 接收方 窗口大小为2,Window size=3Send 2,TCP 滑动窗口,发送方,Window size=3Send 1,Window size=3Send 3,ACK 3Window size=2,数
14、据 3 被丢弃,Window size=3Send 4,Window size=3Send 3,接收方,Window size=3Send 2,TCP 滑动窗口,发送方,Window size=3Send 1,Window size=3Send 3,ACK 3Window size=2,数据 3 被丢弃,Window size=3Send 4,Window size=3Send 3,ACK 5Window size=2,接收方,TCP与UDP,TCP UDP 排序 无序 可靠 不可靠面向连接 无连接 虚链路 低开销 确认 无确认窗口流量控制 无流量控制,TCP和UDP的主要协议,TCP UDP
15、Telnet 23 SNMP 161SMTP 25 TFTP 69HTTP 80 DNS 53FTP 21DNS 53HTTPS 443,端口号:1.低于1024的端口号被成为众所周知的端口号2.大雨1024的端口号被上层用来建立与其他主机的会话 并且在TCP数据段中被TCP用来作为源方的地址,Internet 层概述,OSI 网络层对应的是TCP/IP的internet层,Internet Protocol(IP)Internet Control MessageProtocol(ICMP)Address ResolutionProtocol(ARP)Reverse AddressResolu
16、tion Protocol(RARP),应用层,主机到主机层,Internet层,网络接入层,IP 数据,Version(4),Destination IP Address(32),Options(0 or 32 if any),Data(varies if any),1,Bit 0,Bit 15,Bit 16,Bit 31,HeaderLength(4),Priority&Type of Service(8),Total Length(16),Identification 标识符(16),Flags(3),Fragment offset 分段偏移(13),Time to live(8),Pr
17、otocol(8),Header checksum(16),Source IP Address(32),20Bytes,IP报头字段,版本:IP版本号 ipv4 ipv6总长度:包括报头和数据的数据包长度标识:唯一的IP数据包值标志:说明数据是否被分段分段偏移:数据包在装入帧的时候过大,则要进行分段和重组,MTU,MTU:最大传输单元(Maximum Transmission Unit)当数据从传输层和网络层传输到数据链路层时候,如果考虑到了帧的容量的话,就可以减少很多数据充足的问题。这就是MTU设置的意义 通常情况下,默认值为1500 通常不建议更改例如:若将MTU设置为9000,我们的数据
18、包是要在internet上面跑的,所以我们无法确认所有的网络媒介都是支持这么大的 MTU,所以此时你的数据包会被丢弃,要么就是会被对方的网络设备所分片 当然在自己公司的局域网内部,可以把MTU设置的大一些没问题,IP报头字段,存活期TTL:是数据包产生时建立在其内部的一个设置,如果这个包在这个TTL到期时仍没有到达它要去的目的地,那么它将被丢弃。这个设置将防止IP包在寻找目的地的时候在网络中不断循环 主要用来解决环路的问题环路:分为二层环路和三层环路 通常情况下 二层环路要比三层环路严重的多,因为二层设备里面的数据是帧,而帧中并没有一个类似于TTL的这样一个字段。二层环路就是把交换机连成一个圈
19、,这样数据就在里面无限制的循环,为了解决二层环路的问题,思科的交换机上有一种STP(生成树)协议,解决了二层环路。路由器连接成一个环路没有问题,这个数据每经过一次路由器TTL就减1 当TTL为0的时候 包就丢弃了 所以环路不是很严重同时路由器与路由器相连,中间是要跑路由协议的,因为路由协议设计时候就考虑到了防止环路。所以三层设备不会有十分严重的环路三层防环:总共有两种机制 一个是路由协议 另一个是 TTL 值,决定上层协议,协议域,TransportLayer,InternetLayer,TCP,UDP,ProtocolNumbers,IP,17,6,协议:上层协议端口(TCP为6,UDP为1
20、7),ICMP协议,ICMP:(因特网控制报文协议)是一个错误侦测与回报的机制,最大功能就是可以确保我们网络的连接状态与连接的正确性特点 1.能为主机提供有关网络的故障信息 2.被封装在IP数据报内,PING,Ping:使用ICMP数据包来进行网络上计算机之间物理和逻辑的连接性,上面可见 百度 的地址是 61.135.169.125字节=32:表示这次传送的ICMP数据包为 32Bytes时间=67:响应时间 时间越小两台主机之间的网络联机越好TTL=52:数据包的TTL值为52,PING详解,PING 的详细参数,-t:一直Ping指定的计算机,直到从键盘按下Ctrl+C中断。默认情况下 发
21、送 4 个 ping 包,PING详解,-n:发送指定数目的 ping 包 默认为4个,-l:发送指定数据量的ECHO数据包。默认为 32 字节;最大值是65500byt。,PING详解,PING详解,-i:将“生存时间”字段设置为TTL指定的值。,TTL值每经过一个路由器 值就会减少 1,可见显示TTL 在传输中过期,在 Linux 系统中 使用 ping b broadcast 这个命令可以查看该网内有多少主机存活 十分给力 windows下没有,Traceroute详解,Traceroute:这条命令在 思科 的路由器上使用Tracert:这条命令在 dos 下使用 以上两条命令功能相同
22、:通过使用ICMP的超时机制来发现一个数据包在穿越互联网络时候所经历的路径,Traceroute详解,常用参数-h:指定跳跃点数,地址解析协议ARP,地址解析协议ARP:可由主机的IP地址在网络上查找它的硬件地址,地址解析(address resolution):就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。三层的数据包,经过二层时候将会被封装成帧,在封装成帧的过程中 就要加入目的主机的MAC地址 MAC地址 由本机的ARP 表获得 命令 arp-a,详解ARP,问:当PC 10.1 想要与 10.2 进行通信 且10.1 的ARP表中没 有20.1的 MAC 地址 ARP请求过
23、程是怎样的,答:10.1 的主机将会创建一个 ARP 包 包里面的内容 源IP:192.168.10.1 目的IP:192.168.20.1 源MAC:自己网卡的MAC目的MAC:FFFFFFFF,该ARP包经过二层封装成帧 并以广播的方式传播到 局域网中,局域网中的所有设备都能查看到该包当路由器192.168.1.254 收到该包 并且解封装之后 发现该包的目的地址不是自己,那么将 丢弃当PC 192.168.10.2 收到该包之后 发现目的 IP 是自己 那么则将自己的信息以单播的形式发给 PC1 包内容源IP:192.168.20.1 目的IP 192.168.10.1源MAC:PC2
24、的MAC 地址 目的MAC:pc1 的MAC地址,详解ARP,问:当PC 192.168.10.1 要和 192.168.30.1 通信时ARP的请求是什么样子,答:PC 192.168.10.1 首先创建了 一个 ARP 包 源IP:192.168.10.1 目的IP 192.168.30.1源MAC:PC1的MAC地址 目的MAC:FFFFFF 上述包内容为错误的因为路由器是严格隔离广播的 所以该ARP 广播只能在10.0这个网段里面广播 并不能到达30.0 网段 但是为什么 实际上这两个网段是可 以通信的呢?,第一阶段:PC1 在二层封装成帧的时候 会通过IP地址以及子网掩码 判断 源
25、目的IP地址是否属于一个子网。若不在一个子网则 将这个包发送到默认网关 所以 PC1 实际上的包内容应该是源 IP 192.168.10.1 目的IP 192.168.10.2源MAC:本机MAC地址 目的MAC:网关的MAC 地址,详解ARP,第二阶段:此时用PC1 PING 30.1 网段 icmp的包将会发送到网关 路由器。当路由器进行解包 发现IP 地址为30.1 于是则查看自己的路由表 确定了 30.1网段所在的接口。之后在自己的网管路由器和下一跳路由器之间发送ARP 包 获得下一跳的 MAC 地址 这样就可以PING通了,数据包在网络中传送时:源IP 和 目的IP 始终是不变的但是
26、 源 目的 MAC 地址 是始终改变的 十分重要 CCNA 考试内容,ARP欺骗,举例:局域网的网络流通不是根据IP地址进行,而是按照MAC地址进行传输。所以,那个伪造出来的MAC地址在A上被改变成一个不存在的MAC地址,这样就会造成网络不通,导致A不能Ping通C!这就是一个简单的ARP欺骗.ARP欺骗存在两种情况:一种是欺骗主机作为“中间人”,被欺骗主机的数据都经过它中转一次,这样欺骗主机可以窃取到被它欺骗的主机之间的通讯数据;另一种让被欺骗主机直接断网。防止ARP 欺骗的方法:静态绑定 IP 地址 和MAC 地址(缺点 工作量太大)arp a 可以查看arp缓存表的内容 arp d 可以
27、删除arp缓存表里的所有内容。arp s 可以手动在arp表中制定ip地址与mac地址的对应关系。,ARP攻击,ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信息,并因此造成网内其它计算机的通信故障。,RARP协议,工作原理:1.给主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并请求任何收到此请求的RARP服务器分配一个IP地址;2.本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址;3.如果存在,RARP服务器就给源主机发送一个响应数据包并将此IP地址提供给对方主机使用;4.如果不存在,RARP服务器对此不做任何的响应;5.源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。,本章总结,通过本章的学习,您应该掌握以下内容:掌握TCP/IP分层模型掌握IP协议原理理解OSI和TCP/IP模型的区别和联系,