第9章 因特网与TCP/IP协议
本章为次重点章节,其中TCP/IP体系结构的网络接口层协议、应用层协议、因特网服务资源考核要求均为“简单应用”。本章介绍因特网的TCP/IP体系结构、因特网的接入方式、因特网的服务资源等。要求重点掌握TCP/IP协议族。
1、概述
TCP/IP协议族是因特网的核心。TCP/IP体系结构是专门用来描述TCP/IP协议族的,从低到高共有五层:物理层、网络接口层、网络互联层、传输层、应用层。
· 应用层:包含了所有的高层协议,如FTP、TELNET、DNS、SMTP等。
· 传输层:负责在源主机和目的主机的应用程序之间提供端-端的数据传输服务,主要有传输控制协议TCP和用户数据报协议UDP。
· 网络互联层:负责将数据报独立地从信息源送到信宿,主要解决路由选择、阻塞控制、网络互联等问题,主要有互联网协议IP。
· 网络接口层:负责将IP数据报封装成适合在物理网络上传输地帧格式并传输,或将从物理网络接收到地帧解封,取出IP数据报交给上层地网络互联层。
· 物理层:只要能传输IP数据报,允许任何协议。
2、网络接口层协议
SLIP 的全称是 Serial Line IP 。它是一种在串行线路上对 IP 数据报进行封装的简单形式。在IP数据报以一个称作END(0xc0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个END字符。如果 IP 报文中某个字符为 END ,那么就要连续传输两个字节 0xdb, 0xdc 来取代它。 0xdb 这个特殊字符被称作 SLIP 的 ESC 字符,但是它的值与 ASCII 码的 ESC 字符( 0x1b )不同。如果 IP 报文中某个字符为 SLIP 的 ESC 字符,那么就要连续传输两个字节 0xdb,0xdd 来取代它。
SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:
1.每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
2.数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP,那么它不能同时使用其他协议。
3. SLIP没有在数据帧中加上检验和(类似于以太网中的CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现。(另一种方法是,新型的调制解调器可以检测并纠正错误报文。)这样,上层协议提供某种形式的CRC就显得很重要。
PPP ,点对点通信协议修改了 SLIP 协议中的所有缺陷。 PPP 包括以下三个部分:
1 .在串行通信线路上组帧的方法。 PPP 既支持数据为 8 位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
2 .建立、配置及测试数据链路的链路控制协议( LCP : Link Control Protocol )。它允许通信双方进行协商,以确定不同的选项。
3 .针对不同网络层协议的网络控制协议( NCP : Network Control Protocol )体系。PPP数据帧的格式看上去很像ISO的HDLC(高层数据链路控制)标准。每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。接下来是协议字段,类似于以太网中类型字段的功能。当它的值为0x0021时表示信息字段是一个IP数据报,值为0xc021时表示信息字段是链路控制数据,值为0x8021时表示信息字段是网络控制数据。CRC字段(或FCS,帧校验序列)是一个循环冗余检验码,以检测数据帧中的错误。由于标志字符的值是0x7e,因此当该字符出现在信息字段中时,PPP需要对它进行转义。在同步链路中,该过程是通过一种称作比特填充(bit stuffing)的硬件技术来完成的。在异步链路中,特殊字符0x7d用作转义字符。
因特网地接入方式:终端方式、SLIP/PPP方式、DDN专线、代理服务器方式、其他通信线路入网。 [NextPage]
3、网络互联层协议
IP协议:实现的是不可靠无连接的数据报服务,它是TCP/IP协议族的核心,传输层上的数据信息和网络层上的控制信息都以IP数据报的形式传输。在Ipv4 中, IP 地址由四个八位域(叫作 octets )组成。 Octets 被点号分开代表在 0 到达 55 范围内的十进制数字。用二进制格式时共有 32 位组成,为了方便记忆,用点号每八位一分割,称为点分十进制。因为TCP/IP网络是为大规模的互连网络设计的,所以不能用全部的32位来表示网络上主机的地址。用IP地址的一部分来标识网络,剩下的部分标识其中的网络设备。IP地址中用来标识设备所在网络的部分叫做网络ID,标识网络设备的部分叫做主机ID。这些ID包含在同一个IP地址之中。 Internet组织定义了5种IP地址类,以容纳不同大小的网络。
· A类地址用于主机数目非常多的网络。A 类地址的最高位为 0 ,接下来的 7 位完成网络 ID ,剩余的 24 位二进制位代表主机 ID 。 A 类地址允许 126 个网络,每个网络大约一千七百万台主机 ; 第一个八位体是 1~126 。 127 是一个特殊的网络 ID ,是用来检查, TCP / IP 协议工作状态。
· B 类地址用于中型到大型的网络。B类地址的最高位为10,接下来的14位完成网络ID,剩余的14位二进制位代表主机ID。B类地址允许16384个网络,每个网络大约65000台主机;第一个八位体是128~191。
· C 类地址用于小型本地网络。 C 类地址的最高位为 110 ,接下来的 21 位完成网络 ID ,剩余的 8 位二进制位代表主机 ID 。 C 类地址允许大约二百万个网络,每个网络有 254 台主机;第一个八位体是 192~223 。
· D 类地址用于多重广播组。一个多重广播组可能包括 1 台或更多主机,或根本没有。 D 类地址的最高位为 1110; 第一个八位体是 224~239 。剩余的位设计客户机参加的特定组。在多重广播操作中没有网络或主机位,数据包将传送到网络中选定的主机子集中。只有注册了多重广播地址的主机才能接收到数据包。 Microsoft 支持 D 类地址,用于应用程序将多重广播数据发送到网络间的主机上,包括 WINS 和 Microsoft NetShow 。
· E 类是一个通常不用的实验性地址:它保留作为以后使用。 E 类地址的最高四位通常为 11110 ;第一个八位体是 240~247 。248~254 无规定。
子网是一个逻辑概念,子网中的各主机的 NetID 是相同的。网段是一个物理概念,是指在物理上独立的一段网络。子网与网段之间,可以是多对多的关系。
划分子网( subnetworking )的好处:a、 混合使用多种技术,如以太网和令牌网。b、 克服已有技术的缺陷,如超过每段中最大主机数目。c、 通过对交通重定向和减少广播来减少网络阻塞。
子网掩码:将IP地址的各位,NetID全改为1,HostID全改为0,则是子网掩码。与IP地址进行“与”或“and”运算,用来分辩网络ID和主机ID。
标准子网掩码: A 类: 255.0.0.0 B 类: 255.255.0.0 C 类: 255.255.255.0
IP路由选择: IP 搜索路由表的几个步骤: 1. 搜索匹配的主机地址(即网络标识和主机标识都相同); 2. 如果1不成功, 搜索匹配的网络地址; 3. 如果2不成功, 搜索路由表中目的地址为“默认”的表项。
地址解析协议( ARP ):地址解析协议是一个位于 IP 协议中的低层协议。它把 IP 地址解析成 MAC 地址。当一个基于 TCP/IP 的应用程序需要从一台主机发送数据给另一台主机时,它把信息分割并且封装成包,附加上目的主机的 IP 地址。然后寻找 IP 地址到实际 MAC 地址的映射。当 ARP 找到了 MAC 地址后,它就把这个信息传给 IP ,由 IP 把包发送出去。
ICMP协议: ICMP 经常被认为是 IP 层的一个组成部分。它传递错误信息以及其它询问信息。 ICMP 报文通常被 IP 层或更高层协议( TCP 或 UDP )使用。一些 ICMP 报文把差错信息返回给用户进程。 ICMP 信息是在 IP 数据报内部被传输的。当发送一份 ICMP 差错报文时,报文始终包含 IP 的首部和产生 ICMP 差错报文的 IP 数据报的前 8 个字节。这样,接收 ICMP 差错报文的模块就会把它与某个特定的协议(根据 IP 数据报首部中的协议字段来判断)和用户进程(根据包含在 IP 数据报前 8 个字节中的 TCP 或 UDP 报文首部中的 TCP 或 UDP 端口号来判断)联系起来。
4、传输层协议
主要有两个协议:UDP协议和TCP协议。
UDP ( User Datagram Protocol ):提供无连接的通信,并不保证数据包被发送到。典型的即时传输少量数据的应用程序使用 UDP 。 UDP 是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个 UDP 数据报,并组装成一份待发送的 IP 数据报。这与面向流字符的协议不同,如 TCP ,应用程序产生的全体数据与真正发送的单个 IP 数据报可能没有什么联系。UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。端口号表示发送进程和接收进程。UDP长度字段指的是UDP首部和UDP数据的字节长度。该字段的最小值为8字节。(发送一份0字节的UDP数据报是OK。)这个UDP长度是有冗余的。IP数据报长度指的是数据报全长,因此UDP数据报长度是全长减去IP首部的长度(该值在首部长度字段中指定)。
UDP报头格式报头字段名 位数 说 明 源端口号 16 发送主机的UDP端口 目的端口号 16 目标主机的UDP端口 消息长度 16 UDP消息的长度 校验和 16 验证报头是否损坏
TCP ( Transmission Control Protocol ):为典型的传输大量数据或需要接收数据许可的应用程序提供连接定向和可靠的通信。
由于 TCP 连接是一个全双工的数据通道,一个连接的关闭必须由通信双方共同完成。当通信的一方没有数据需要发送给对方时,可以使用 FIN 段 向对方发送关闭连接请求。这时,它虽然不再发送数据,但并不排斥在这个连接上继续接收数据。只有当通信的对方也递交了关闭连的请求后,这个 TCP 连接才会完全关闭。在关闭连接时,既可以由一方发起而另一方响应,也可以双方同时发起。无论怎样,收到关闭连接请求的一方必须使用 ACK 段 给予确认。实际上, TCP 连接的关闭过程也是一个三次握手的过程。
滑动窗口:是两台主机间传送数据时的缓冲区。每台 TCP/IP 主机支持两个滑动窗口:一个用于接收数据,另一个用于发送数据。窗口尺寸表示计算机可能缓冲的数据量大小。当 TCP 从应用层中接收数据时,数据们于 Send 窗口。 TCP 将一个带序列号的报头加入数据包并将其交给 IP ,由 IP 将它发送到目标主机。当每一个数据包传送时,源主机设置重发计时器(描述在重新发送数据包之前将等待 ACK 的时间)。在 Send 窗口中有每一个数据包的备份,直到收到 ACK 。当数据包到达服务器 Receive 窗口,它们按照序列号放置。当接收到连续的段时就向源主机发送一个关于数据的认可( ACK ),其中带有当前窗口尺寸。一旦源主机接收到认可, Send 窗口将由已获得认可的数据滑动到等待发送的数据。如果有重发计时器设定的时间内,源主机没有接收到对现存数据的认可,数据将重新传送。重发数据包将加重网络和源主机的负担。如果 Receive 窗口接收数据包的顺序错乱,那么将强制启动,延迟发送认可 。
TCP段头结构 报头字段名 位数 说 明 源端口号 16 本地通信端口,支持TCP的多路复用机制 目的端口号 16 远地通信端口,支持TCP的多路复用机制 序号(SEQ) 32 数据段第一个数据字节的序号(除含有SYN的段外);SYN段的SYN序号(建立本次连接的初始序号) 确认号(ACK) 32 表示本地希望接收的下一个数据字节的序号 数据偏移 32 指出该段中数据的超始位置(以32位为单位) 控制字段URG 1 紧急指针字段有效标志,即该段中携带紧急数据 控制字段 ACK 1 确认号字段有效标志 控制字段 PUSH 1 PUSH操作的标志 控制字段 RST 1 要求异常终止通信连接的标志 控制字段 SYN 1 建立同步连接的标志 控制字段 FIN 1 本地数据发送已结束,终止连接的标志 窗口 16 本地接收窗口尺寸,即本地接收缓冲区大小 校验和 16 包括TCP报头和数据在内的校验和 紧急指针 16 从段序号开始的正向位移,指向紧急数据的最后一个字节 选项 可变 提供任选的服务 填充 可变 保证TCP报头以32位为边界对齐。
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|