计算机网络通信协议.ppt_第1页
计算机网络通信协议.ppt_第2页
计算机网络通信协议.ppt_第3页
计算机网络通信协议.ppt_第4页
计算机网络通信协议.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机网络通信协议 教师 谢先忠 计算机网络通信协议 关于通信协议通信协议就是通信标准 它能实现不同结构的设备之间的通信 有了通信协议 就可以在同一网络中使用各种硬件和不同的应用程序 也可以在运行不同操作系统的计算机之间进行通信 TCP IP是发展至今最成功的通信协议 刚开始时TCP IP是美国国防部高等研究计划局开发研究计划的一部分 其原始目的是为DARPA提供通信 现在它已被广泛应用于全球最大的开放式网络系统internet之上 使全球计算机得以互通联系 TCP IP的应用层协议介绍 TCP IP应用层对应了OSI参考模型的上三层 它包括了一些服务 这些服务是与终端用户相关的认证 数据处理及压缩 应用层还要告诉传输层哪个数据流是由哪个应用程序发出的 应用层主要包括以下协议 文件传输类 HTTP 超文本传输协议 FTP 文件传输协议 TFTP 简单文件传输协议 远程登录类 Telnet电子邮件类 SMTP域名解析类 DNS下面将对以上协议进行详细介绍 HTTP HTTP是一个应用层的 面向对象的协议 它适用于分布式超媒体信息系统 WWW服务器使用的主要协议就是HTTP WEB服务器 WEB服务器 FTP服务器 WEB客户机 TCP端口80 TCP端口23 TCP端口80 超文本链接 超文本链接 FTP FTP是一个用于简化IP网络上系统之间文件传送的协议 采用FTP协议 用户可以高效地从Internet上的FTP服务器下载大量的数据文件 以达到资源共享和传递信息的目的 一个FTP站点可以是公用的 私有的 或者两者兼有之 用户可以为FTP账号定义权限 让它们可以访问整个FTP服务的目录结构 或者只是特定的区域 FTP服务的主动模式和被动模式 FTP包含两种连接模式 控制连接和数据连接控制连接用于传递客户端的命令和服务器端对命令的响应 它使用服务器的21端口数据连接数据连接用于传输文件和其他数据 如目录列表等 这种连接在需要数据传输时建立 而一旦数据传输完毕就关闭 每次使用的端口也不一定相同 而且 数据连接既可能是客户端发起的 也可以是服务器端发起的 FTP数据连接主动模式和被动模式 主动模式是从服务器端向客户端发起连接 客户端 FTP服务器 请求建立控制连接Port 21 接受请求 我打开了9999端口 你来连接我 好的 建立连接Port 20 控制连接 数据连接 FTP的主动模式 FTP数据连接主动模式和被动模式 被动模式是客户端向服务器发起连接 客户端 FTP服务器 请求建立控制连接Port 21 接受请求 我打开了9999端口 你来连接我 好的 建立连接Port 9999 控制连接 数据连接 FTP的被动模式 FTP数据连接主动模式和被动模式 当进行FTP连接时 IE通常被设置为被动模式 而FTP客户端软件 如 FlashFXP cutFTP等 一般为主动模式 如果服务器和客户端之间存在防火墙 主动模式经常会引起一些麻烦 如 客户端位于防火墙之后 通常防火墙允许所有内部向外部连接通过 但是对于外部访问内部发起的连接却有很多限制 在这种情况下 客户端可以正常地和服务器建立控制连接 而如果使用主动模式的数据连接 一些数据传输命令就很难成功运行 因为防火墙会阻塞从服务器向客户发起的数据传输连接 因此在使用主动模式的FTP数据连接时 防火墙上的配置会比较麻烦 TFTP TFTP是基于UDP的应用特点 用于小文件传输对内存和处理器要求很低 速度快不具备FTP的许多功能 它只能从文件服务器上获得或写入文件 不能列出目录 也不能进行认证 应用实例 使用TFTP服务器来备份或恢复Cisco路由器 Catalyst交换机的IOS镜像和配置文件 DNS 域名管理系统DNS是一台域名解析服务器在互联网中通常用域名来代替难记的IP地址以定位计算机和服务 DNS服务器中包含了域名和相应的IP地址映射 DNS作用是把域名转换成网络可以识别的IP地址 在windows中可以使用nslookup命令查询对应某个域名的IP地址 TCP IP的传输层协议 问题 当在windowsxp中同时运行多个网络应用程序时 每个程序都会产生自己的数据流 传输层用什么方法区分不同应用程序的数据流呢 在数据流被分段以后 传输层依靠什么来重新组装这些数据段呢 如果某个数据段在传输过程中丢失了或重复了 可靠的传输协议依据什么去要求重传这些数据或丢弃多余的数据呢 TCP IP的传输层协议 传输层的主要功能 分割并重新组装上层提供的数据流为数据流提供端到端的传输服务在TCP IP协议中 有两个传输层协议 传输控制协议TCPTCP是一个可靠的面向连接的协议 如 打电话的双方在正式通话之前都会说 喂 确定对方在线以后才开始通话 会话结束时都要说 再见 然后才挂电话 用户数据报协议UDPUDP是不可靠的或非连接的协议 如 寄明信片 寄出去了 但不管对方是否收到 TCP IP的传输层协议 端口号 每个应用程序都会产生自己的数据流 这些数据流可以把目标主机上相应的服务程序看作自己的目的地 对于传输层来说 它只需要知道目标主要上的哪个服务程序来响应这个应用程序 而不需要知道这个服务程序具体是干什么的 因此 传输层使用一个抽象的端口标识这些应用程序和服务程序 TCP IP的传输层协议 端口号的功能及应用特点 端口号用来跟踪网络间同时发生的不同会话 TCP和UDP可以同时接收多个应用程序送来的数据流 用端口号来标识它们 然后把它们送给网际层处理 同时TCP和UDP接受来自网际层送来的数据包 用端口号来区分它们 然后送给适当的应用程序处理 这是多路分解技术的体现 它可以确保正确的用户程序收到正确的数据 因此 每个应用程序在发送数据前都会与操作系统进行协商 获得相应的源端口号和目标端口号 多路分解 多路分解 进程1 进程2 进程3 基于端口分解 IP数据报 应用层 传输层 网际层 TCP IP的传输层协议 在主机发送应用程序的数据之前 都必须确认端口号 如何分配这些端口号呢 使用中央管理机构统一分配的端口号应用程序开发者都默认在RFC1700中定义的特殊端口号 在进行软件设计时 都要遵从RFC1700中定义的规则 不能随便使用已定义的端口号 如 任何telnet应用中的会话都要用标准端口号23 使用动态绑定如果一个应用程序的会话没有涉及到特殊端口号 那么系统将在一个特定的取值范围内随机为应用程序分配一个端口号 在应用程序进行通信之前 如果不知道对方的端口号 就必须发送请求以获得对方的端口号 TCP IP的传输层协议 常有端口号介绍 小于255的端口号用于公共应用255 1023是特定供应商应用程序的注册端口号高于1023的端口号未作规定 常用端口号 常用端口号的使用情况 端口号的使用过程 主机A要Telnet到主要B 主机A首先向TCP请求一个可用端口 TCP分配一个为1088的端口号给它 主机A将目标端口号置为23 A和B通信后 B看到A过来的端口号为23 就知道这是一个Telnet应用 它会为它创建一个Telnet会话 A B 我要TelnetB 请给我一个源端口号 目标端口为23 它发给我的是Telnet应用 TCP 给你1088端口 创建telnet会话本地端口 23远程端口 1088 Sport Dport 端口号的使用过程 假如同一系统中有多个Telnet用户 会发生什么情况呢 当主机A上第二个用户要Telnet到主机B时 其实是在主机A与主机B之间建立第二个Telnet进程 主机A的第二个用户向TCP发出请求时 TCP会选出另一个可使用的端口号 如1099给第二个Telnet用户 主机B上便会创建第二个Telnet会话 B TCP 用户1的会话 本地端口 23远程端口 1088 用户1的会话 本地端口 23远程端口 1099 创建新的Telnet会话 所以在同一IP地址上具有不同端口号的两个连接是不同的 IP地址和端口号被用来惟一地确定数据连接的途径 UDP UDP提供主机之间的不可靠数据传输 它的特点如下 无连接不可靠传输报文 即用户数据报不为报文发送提供软件级的检查 即不可靠对接收到的报文不进行重组不使用确认技术不提供流量控制技术使用UDP的协议有 TFTP 简洁文件传输协议 SNMP 简单网络管理协议 DHCP 动态主机控制协议 DNS 域名系统 BOOTP UDP头格式 UDP数据域的头格式 UDP数据域的头格式描述 TCP 传输控制协议在终端用户的应用程序之间提供一个虚电路 它有如下特点 面向连接的是可靠的可将发出的报文分成段在目的节点把进入的段重组为报文对任何没有收到的信息进行重传 TCP头格式 TCP数据域的头格式描述 建立TCP连接 三次握手 A B 发送SYN seq X 主机A发送SYN给主机B 我的序号seq是X主机B发送SYN ACK给主机A 我的序列号seq是Y 应答号ack是X 1主机A发送SYN AC 给主机 我的序列号seq是 1 应答号ack是Y 1 接收SYN seq X 发送SYN seq YACK x 1 N seq YACK x 1 发送确认 ack x 1 接收确认 ACK x 1 关闭TCP连接 改进的三次握手 对于一个已经建立的连接 TCP使用改进的三次握手来结束通话 使用一个带有FIN finish 附加标记的报文段 当主机A的应用程序通知TCP数据已经发送完毕时 TCP向主机B发送一个带有FIN附加标记的报文段主机B收到这个FIN报文段之后 并不立即用FIN报文段回复主机A 而是先向主机A发送一个确认ACK 同时通知自己相应的应用程序 对方要求关闭连接 先发送ACK为了防止在这段时间内 对方重传FIN报文段 主机B的应用程序告诉TCP 我要彻底的关闭连接 TCP向主机A发送第二个FIN报文段主机A收到第二个FIN报文段后 向主机B发送一个ACK表示连接彻底关闭 A B 发送FIN seq X 发送ACK ACK x 1 发送确认 ack x 1 接收确认 ACK x 1 发送FIN seq Y ACK ACK x 1 应用程序关闭连接 通知自己的应用程序 对方要求关闭连接应用程序关闭连接 TCP的可靠性 发送方等待每个数据段的确认信息 A B Seq 10ack 1 Seq 1ack 11 Seq 11ack 2 Seq 2ack 12 我发送了10 数据段期望收到你的1 我收到了10 数据段期望收到你的11 超时与重传 A B 发送seq X ack Y 数据段丢失 数据段没有到达ACK不会被发送 正常情况下ACK应该到达 发送seq X ack Y 定时器超时重发 接收到数据段发送ACK 发送seq Y ack X 1 接受到ACK继续发送下一段 Seq序列号的作用 重组数据段在一个高速链路和低速链路并存的网络上 可能会出现高速链路上的数据段比低速链路提前到达的情况 此时就必须依靠序列号来重组数据段 消除网络中的重复包在网络拥塞时 发送端迟迟没有收到接收端发来的某个数据段的ACK包 它可能会认为这个序列号的数据丢失了 于是它会重新发送 这种情况可能导致接收端在网络恢复正常后收到两个同样序列号的数据段 此时接收端会自动丢弃第二个一样的数据段 序列号和应答号为TCP提供了一种纠错机制 提高了TCP的可靠性 窗口技术 前面介绍了可靠性的实现方法是 发送方发出一个数据段之后要等待接收方相应的确认信息 而不是直接发送下一个分组 那么吞吐量就会变低 TCP使用窗口技术来改善流量控制 以便通信双方能够充分利用带宽 窗口大小决定了在收到接收方确认之前 一次可以传送的数据段的最大数目 窗口超大 主机一次可以传输的数据段就越多 A B 窗口 窗口 ACK 11 Windows 3 流量控制 窗口的大小在通信双方连接期间是可变的 通信双方可以通过协商动态地修改窗口大小 在TCP的每个确认中 除了指出希望收到的下一个数据段的序列号之外 还包括一个窗口通告 通告中指出了接收方还能再接收多少数据段 可以把通告看成接收缓冲区大小 如果通告值增大 窗口大小也相应增大 这种机制也可以防止网络拥塞 如 当网络拥塞导致数据包丢失时 窗口大小自动减小一半 以保证数据传输 A B 窗口 窗口 ACK 10 Windows 2 Windows 2 ACK 12 窗口 TCP的应用特点 TCP的连接分为3个阶段 三次握手 数据传输 结束通话 其中 三次握手 和 结束通话 过程就需要交换不少数据 如果中间的 数据传输 只传输几个字节的信息 这种开销将显得十分昂贵 如 在进行DNS域名查询时 中间只要传输几个字节的消息 些时 三次握手 和 结束通话 的开销就显得非常大了 因此DNS使用UDP作为其传输层协议 而不是TCP像DNS这种需要传输很少字节的通信被称为轻权通信 轻权通信一般交由UDP来完成 TCP IP的网际层协议 TCP IP协议栈的网际层提供寻址和路由选择协议 路由器主要工作在该层 TCP IP协议栈的网际层对应OSI参考模型的网络层 该层主要运行以下几个协议 网际协议 IP 对数据包进行非连接的最佳路由选择 它不关心数据包的内容 只选择一个路径将数据包送到目的地 网际报文控制协议 ICMP 提供控制和传递消息的功能 地址解析协议 ARP 由已知的IP地址确定数据链路层的MAC地址 反向地址解析协议 RARP 由已知的数据链路层和MAC地址确定IP地址 动态主机配置协议 DHCP 将IP地址和一些TCP IP配置分配给网络中的计算机的一项服务和协议 IP 在TCP IP协议栈中 IP主要负责逻辑寻址 通过相应管理机制 可以使不同的设备之间利用IP地址进行通信 IP数据包由IP头和数据组成 IP头格式 什么是最大传输单元 MTU TCP IP怎样选择数据包的MTU 数据包的分片 数据包是被封装在物理帧中传输的 对于网络硬件来说 它们对一个物理帧的可传输数据量都规定了一下上限值 这个上限值就是最大传输单元 MTU 例如 源于令牌环网的数据包最大传输单元为4500字节 而以太网的数据包最大传输单元为1500字节 FDDI的数据包最大传输单元为4770字节 如果数据包的大小比互联网的最大网络的MTU要大 它是无法被封装到帧中去的 相反如果数据包的大小被限制为互联网中最小网的的MTU 这种做法也不是很经济的 因为在大的MTU的网络上 会造成带宽浪费 TCP IP怎样选择数据包的MTU TCP IP怎样选择数据的MTU TCP IP选择接近相连网络的MTU值为初始数据包大小 如 某台主机连接在以太网上 那么TCP IP会选择某个接近1500字节的值为初始值 如140014401480等 TCP IP同时也提供一种机制 在MTU较小的网络上 可以把大数据包划分成更小的数据包片 分片 即如果TCP选择初始数据包大小为1500字节 在中途有个MTU为620的网络 处于两种网络分界处的路由器会对数据包进行分片操作如图 A B MTU 1500 原始数据包 分片以后的数据包 段位移0 段位移600 段位移1200 数据包分片 数据包需要分片 数据包分片后的重组 数据包分片以后的重组是发生在分片到达目标主机之后 而不是在通过MTU较小的网络之后的路由器上 一但数据包分片之后 每个数据包片将被作为独立的数据包传输 即使遇到具有大MTU的网络 重组依然发生在分片到达目标主机之后 如果在传输过程中某个分片丢失了 目标主机将会丢弃整个数据包 所以分片增加了数据包的丢失概率 应尽量避免数据包分片 虽然在目标主机上重组数据包存在缺点 但是每个数据包片可以像数据包一样选择路由可以在多路环境下实现负载平衡 ICMP 设计ICMP协议的目的ICMP的特点 ICMP本身是网络层的一个协议 但报文不是直接传给链路层 而是要封装成IP数据报 然后再传给数据链路层 从协议体系上看 ICMP的差错和控制信息传输只是要解决IP协议可能出现的不可靠问题 它不能独立于IP协议而单独存在 因此我们把它看作是IP协议的一个部分归于IP协议的体系 ICMP差错报告采用路由器 源主机的模式 路由器在发现数据报传输出现错误时只向源主机报告差错原因 ICMP不能纠正差错 它只是报告差错 差错处理需要由高层协议去完成 ICMP不可到达的原因及分析 A B 192 168 1 0 24 网络不可到达 192 168 1 2 RtA 1 1 192 168 2 0 24 2 1 192 168 3 0 24 192 168 3 2 24 RtB E0 E1 A B 192 168 1 0 24 192 168 1 2 RtA 1 1 192 168 2 0 24 2 1 192 168 3 0 24 192 168 3 2 24 RtB E0 E1 主机不可到达 ICMP不可到达的原因及分析 禁止分割在前面介绍IP层的数据包大小时 曾提到在MTU较小的网络上 需要把大数据包划分成更小的数据包 分片 以保证数据包正常通过网络 假如路由器A在将客户机的数据发往服务器时 需要分割客户机的数据包 但是数据包的IP头中却设置了拒绝分片位 哪么路由器会向客户机返回一个代码为4的 禁止分割 的ICMP消息 协议不可到达如果数据包成功到达了WEB服务器 但是服务器上没有运行TCP或者UDP协议 哪么WEB服务器将返回一个代码为2的 协议不可到达 的ICMP消息端口不可到达如果数据包成功到达了WEB服务器 服务器上也运行有TCP协议 但是服务器上的相关软件没有运行 无法处理客户机连接 于是服务器上的TCP IP将返回一个代码为3的 端口不可到达 的ICMP消息 ICMP不可到达消息总结 ICMP超时的原因分析 超时ICMP报文与IP报头中的TTL字段一起使用 当数据包到达路由器时 路由器都需要把数据包IP头中的TTL值减1 当TTL值被减到0时 数据包就会被丢弃 TTL值可以防止数据包在网络上被循环反复地传输 Windows操作系统中的tracert traceroute 命令可以让用户看到IP数据包从一台主机传输到另一台主机的过程中所经过的路由 Traceroute命令利用了 TTL超时 的报文 当使用Traceroute命令时 发送方使用UDP故意发送一份TTL为1的IP数据包给目标主机 处理这份数据包的第一个路由器将TTL值减1 然后丢弃数据包 并向发送方返回一份超时ICMP报文 这样trace命令就得到了该路径中的第一个路由器地址 然后Traceroute命令发送一份TTL值为2的数据包 第一个路由器将数据包转发给第二个路由器 而在第二个路由器上 数据包的TTL值会被减为0 因此这个路由器将丢弃这个数据包并向发送方返回ICMP超时消息 这样就可以得到第二个路由器地址 ICMP超时消息的应用 A B 10 21 3 90 16 10 21 0 1 16 192 168 12 1 24 192 168 12 2 24 192 168 11 2 24 192 168 11 1 24 202 119 230 10 ICMP重定向功能及应用 当主机向非本地子网发送数据包时 TCP IP会自动将数据包发送给它的默认网关 但是如果网络中还存在一个相对来说更好的本地路由器时 ICMP重定向功能会通知主机以后将这些数据包发送给那个更好的路由器 主机使用路由器B作为默认网头 但是对于到某个子网的路由器 如 192 168 3 0 24 路由器A才是最好的选择 默认情况下 主机还是会将数据包转发给路由器B 路由器B从E0口收到主机发来的数据包并且检查自已的路由表 它发现路由器A是去往目标地址的下一跳 于是路由器B又从E0口把数据包转发给路由器A 此时路由器B会检测到它正在发送数据的接口和此数据包到达的接口是同一个接口路由器B发送一份ICMP重定向报文给主机 告诉它以后把这类数据包发送给路由器A而不是它自已 RtA RtC RtB 192 168 3 0 24 192 168 1 253 24 192 168 1 254 24 E0 ARP 介质访问控制层地址对于每一台设备是全球唯一的 该地址被烧录在网卡的硬件电路上 MAC地址由12位十六进制数表示 其中前6位标识网卡的制造商 后6位是网卡的序列号 在以太网中 一个主机要和另一个主机进行直接通信 必须知道目标主机的MAC地址 什么是ARP ARP用来将IP地址映射到MAC地址 以便设备能在多路访问介质上通信 ARP工作原理举例说明 老师要将一封信交线路教室里的某个学生 但是老师并不认识这个学生 他只知道这个学生的姓名 IP地址 于是她对教室里所有的人说 谁是张XX 有你的信 ARP请求 当张XX听到这个消

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论