第六章 因特网互连协议
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章因特网互连协议
本章重点
●因特网与TCP/IP ——因特网的协议
z DNS
z TCP、UDP
z IP、ICMP
z ARP与IP的交互
简介
TCP/IP是Internet上最广泛的网络协议
TCP/IP是一个协议簇
包括:
应用层:FTP, HTTP, DNS等
传输层:TCP, UDP
网络层:IP, ARP, ICMP, RARP, 各种路由协议
因特网的协议栈
Application Transport Internet Network Interface Physical 应用层
ftp, smtp, http (数据包、流) 传输层 tcp, udp (消息分组)
网络层 ip, 路由协议(ip 数据包) 网络链路/网络接口层 ppp, 以太网协议(数据帧) 物理层
6.1 因特网编址机制
z 因特网目前主要有三种不同形式但可以互相映射的地址管理机制:
z 域名地址:(帮助记忆)
z IP v4地址:202.204.192.222(32位逻辑编码,用来在因特网中定位主机和路由器的接口)
z 介质访问控制(MAC )地址:12-FA-9B-23-DB-11(48位物理编码,用来在局域网中定位主机和路由器的接口)
三者之间怎样进行相互影射?
6.1 因特网编址机制
z TCP/IP协议中各类地址的映射
z在广域网中主要使用逻辑编址。
按IP地址来确定网络、
网段和主机。
z依靠域名服务系统(DNS)来实现域名地址到IP地址
的映射和转换
z在局域网中,需要使用网卡的MAC地址来通信,MAC
地址是在网卡出厂时就固化在芯片中。
z在局域网中,由各主机上的地址解析协议(ARP)模块负
责完成IP地址到MAC地址间的转换。
6.1 因特网编址机制
z IP协议采用固定的地址方案来传送数据。
无论在哪种链路上传送IP数据包中的IP地址都是不变的。
z在局域网网段上使用ARP协议,将信宿的IP地址转换为该信宿主机使用的MAC地址,以便将IP数据包再封装在链路帧送到信
宿站点。
z IP和ARP互相配合,完成将数据包传送到目的地。
6.1 因特网编址机制
z域名服务(DNS)和地址解析(ARP)的比较z DNS是一种广域网中全局性的服务,由分布在全球的
DNS服务器形成一个服务链,提供关于广域网中的域
名到IP地址间的映射。
z ARP是在局域网中区域性的服务,其服务程序驻留在
局域网中的主机(接口)中,由各个主机负责解析IP到MAC地址间的映射。
6.1 因特网编址机制
z TCP/IP网络上的每一台主机都需要唯一
的IP地址。
这个IP地址在整个网络范围内必须是唯一的。
z对于大的、世界范围内的网络,例如因特网来说,地址分配的权限是必需集中处理的。
对因特网来说,因特网号码分配管理局(Internet Assigned Number Authority,IANA)确立IP地址分配的规则并且主管它们的分配。
6.1 因特网编址机制
z每台因特网中主机必须考虑四个重要参数:z IP地址,每个IP网中的主机都须要有一个独立的地址
z子网掩码,也是32 位信息,用来区分IP地址中的网络
和主机接口地址;
z默认网关的IP地址,可选的32位地址,用来标识路由
器的地址。
要送往另一个网络的数据包,由这个指定
的路由器转送。
z DNS服务器的IP地址,负责主机域名到IP地址的转换
6.1 因特网编址机制
z IP地址
z IP协议规定使用32位二进制数构成IP地址;
z一般将32位二进制数分为4组,每组8位,用一个等值
的十进制数来表示,十进制数之间用‘.’分隔;
z如:11001010011000110110000010001100
表示为:202.99.96.140
6.1 因特网编址机制
z IP地址由两部分组成:网络地址和主机(接口)地址;在广域传送时使用网络地址。
z Internet 将IP地址分为5类(A 、B、C、D、E),对一般的用户是使用A、B、C类地址;
6.1 因特网编址机制
z A类地址:网络地址为8位,主机(接口)地址为24位,属于大型网络。
A类地址的首位二进制数一定是0。
z可分配的A类地址共126个(全0全1地址不分配);
z每个A类地址可容纳主机16,777,214台。
z地址范围:1.0.0.0~126.255.255.255
z127.0.0.1为回路测试地址
6.1 因特网编址机制
z B类地址:网络地址为16位,主机(接口)地址为16位,属于中型网络。
z B类地址前2位二进制数一定是10。
z可分配的B类地址共16,384个(全0全1地址不分配);
z每个B类地址可容纳主机65,534台。
z地址范围:128.x.y.z~191.x.y.z
6.1 因特网编址机制
z C类地址:网络地址为24位,主机地址为8位,属于小型网络。
z C类地址的特征是前3位二进制数一定是110。
z可分配的C类地址共2,097,152个(全0全1地址不分配);
z每个C类地址可容纳主机254台。
z地址范围:192.x.y.z~223.x.y.z
6.1 因特网编址机制
z子网掩码可用来区分IP数据报是否发送到外部网络,每台主机必须设置正确的子网掩码
z对于A、B、C三类网络的确省子网掩码为:
A类:255.0.0.0 a.b.c.d/8
B类:255.255.0.0 a.b.c.d/16
C类:255.255.255.0 a.b.c.d/24
域名服务DNS
DNS用于将主机名转换为IP地址。
采用名字来标记一台主机便于记忆。
DNS服务主要基于UDP来实现,端口号=53。
三个组成部分:域名空间、名字服务器、解析程序
¾域名空间:分布式的、层次型(分级)的树形结构,根没有名字,顶层域由组织域(如org、com、edu)和国家域(如cn)构成。
在往下分还可分为若干层子域,如下页图。
通常用点来分隔域的层次,如
根
INT CN MIL NET COM JP ……
IBM intel eng www jack edu net
xjtu
www ftp
交大的Web 服务器:
DNS 名字服务器:存放域树结构和主机信息的数据库。
为减小查询流量负载,提高可靠性,DNS 名字空间被划分成若干不交叉的区域(Zone ),分别存放在该区域的DNS 服务器中。
解析程序:从名字服务器中提取信息把主机域名翻译成IP 地址。
解析过程为:首先从本地Hosts 文件查找。
没找到就向本地DNS 名字服务器发出请求;若本地DNS 服务器也找不到,它就把请求发给顶层域名字服务器,然后由顶层域名字服务器把请求传递给相应子域的名字服务器。
最后由该名字服务器把域名对应的IP 地址按相反的路径传递给发出请求的站点。
例如:
想要知道 的IP 地址
原始服务器eng ,ibm 服务器edu 服务器
xjtu, edu
服务器
cn 服务器
不同应用对基础协议的要求
z数据丢失(data loss)
z电子邮件、FTP、WWW和Telnet不能容忍数据丢失z而多媒体类的应用往往可以经得起部分数据的丢失z带宽(bandwidth)
z以IP电话为代表的多媒体交互式的应用对带宽是十分敏感的
z而文件传输类的应用则对带宽的要求比较具有“弹性”z实时性(timing)
z IP电话、视讯会议、“四国大战”的要求
网络基础协议中的关键问题
z网络基础协议指包括传输层及以下的各层中的各种协议,问题在于:
z某个网络基础协议的性质(或所提供的服务
)是面向连接的还是无连接的?
z虚电路与面向连接的关系,虚电路是面向连
接的,但面向连接的就一定是虚电路?
z如何理解在不可靠的协议上建立可靠的连接
服务?
传输层最基本的功能
z在不同主机中的应用进程之间建立“逻辑通信”
z应用进程使用由传输层提供的逻辑通信功能,在进程间互发报文,而不必考虑具体的通信细节
z传输层仅仅工作在端系统中,与交换节点(路由器)没有关系
传输层最基本的功能(续)
z传输层从应用层收到“报文”,将其装入4-PDU(如果报文太大,则需要分段),加上传输层的“段首部”后就送给网络层
z传输层有多个传输协议备选。
z如面向连接的TCP和无连接的UDP
z每个协议都使用其为应用层协议提供不同的传输服
务功能的集合
z传输层协议的主要功能是提供所谓“多道处理”的功能
传输层与网络层的关系
z传输层提供主机内进程间的“逻辑通信”;而网络层则提供网络中主机间的“逻辑通信”
z二者之间的差别微妙而又重要
z主机=单位的传达室
z进程=单位中的职员
z应用层报文=信的内容
z网络层协议=邮局的投递服务
z传输层协议=传达室的收发业务
Segment Datagram
应用层
传输层
网络层
M应用层
传输层
网络层
M’
应用层
传输层
网络层
M M’
p1
p3
p2
p4
H
n
Segment
H
1
M
应用层数据
段头
传输层与多道处理
服务器
客户端
客户端
传输层和多道作业处理
z在TCP和UDP的段头有两个端口号
z分别为源端口(source port-number)和宿端口(destination port-number)
z当把这两个字段合为一体时,就可以确定信宿主机中唯一的某个特定进程。
z所谓端口号是一个16比特的数字,其表达范围从0~65535。
从0~1023的端口号被称为常用端口号(well-known number)并限制使用。
这就意味着这些端口号仅限于最常用的一些网络应用,
z如HTTP和FTP。
HTTP用端口的是80,FTP是21和20。
常用端口号的定义见RFC 1700。
32bits
Source port #Dest port #
Other header fields
Data
(message)
传输层数据段中的源端口和目的端口号字段
传输层和多道作业处理(续)z 由此可知,在主机(服务器)中运行的每一种网络应用程序都有一个端口号
z 但是为什么在传输层协议PDU 的字段中会有两个端口号,源端口和宿端口?
z 这个问题的答案很简单,同一信源主机可能在同一个时刻在运行两个以上相同的应用程序进程(比如同时打开两个浏览器窗口),而一个应用程序的端口号则无法确定主机中相同类型应用程序进程中的某个具体的进程
端口号
TCP 和UDP 都用端口(socket)号把信息传到上层。
端口号指示了正在使用的上层协议。
F T P S M T P T F T P D N S T e l n e t S N
M
P
2123255369161TCP UDP 应用层传输层保留的端口号:
<255,公共应用255-1023,公司
>1023,未规定
传输层和多道作业处理(续)
z当用户启动一个Telnet会话时,Telnet服务的宿端口为23,而源端口则由操作系统生成一个未被使用的端口号x。
每个发送到Telnet服务器的段都将宿端口设为23,而源端口则设为x。
当段到达Telnet服务器时,在段中的宿端口和源端口使得服务器可以确定具体的应用进程。
宿端口为23确定了这是Telnet服务,而源端口则确定了具体的应用进程。
z当数据从服务器流向客户端时,这种情况则颠倒过来,这次源端口为23,宿端口为x(这个x与发送到服务器的源端口号相同)。
当该段到达客户端时,段中的源端口和宿端口使客户端主机可以确定正确的应用程序进程并将数据递交给它
传输层和多道作业处理(续)
z既然从客户端发送到服务器的源端口号是由各个网络上的主机随机选择的,如果两台主机所选择的源端口完全相同,那么服务器进程又如何区别?这个问题尤其是在一些大型Web网站上,好像是很容易发生的
z其实这个问题实际上很容易解决,因为服务器进程在对段数据进行甄别时要参考数据报的IP 地址。
虽然源端口号可能重复,但加上IP地址后,冲突就不会发生
两类服务: 面向连接的和无连接的服务目的:在主机系统之间传输数据。
TCP –传输控制协议[RFC 793]
用于因特网的面向连接的服务
传输前需建立连接
可靠的, 有序的字节流传输
流量控制与拥塞控制
UDP–用户数据报协议[RFC 768]:
用于因特网的无连接的服务
不可靠的数据传输
无流量控制
无拥塞控制
使用TCP服务的应用:
HTTP (WWW)
FTP (file transfer)
Telnet (remote login)
SMTP (email)
使用UDP服务的应用:
流媒体, 电信会议, 因特网电话
DNS
TCP协议RFCs: 793, 1122, 1323, 2018, 2581 点到点(端到端):
一个发送者, 一个接收者
面向连接:可靠的, 有序的字节流
无“消息边界”
流量受控:管道化的
TCP拥塞和流量控制设置窗口大小
全双工操作
TCP段格式
源端口
0 3 4 9 10
代码位目的端口
15 1631
顺序号
确认号
窗口大小
保留
报头长度
校验和紧急指针
选项(可省略)
数据
源端口(Source Port):呼叫端口的编号
目的端口(Destination Port):被叫端口的编号
顺序号(Sequence Number):数据的第一个字节的顺序号
确认号(Acknowledgment Number):所期待的下一段的顺序号报头长度(HLEN):以32字节为单位的报头的长度
保留域(Reserved):设置为0
编码位(Code Bits):用于控制段的传输(如会话的建立和中止)包括:URG、ACK、PSH、RST、SYN、FIN六个位
窗口大小(Window):接收方能够继续接收的字节数
校验和(Checksum):包括TCP报头和数据在内的校验和
紧急指针(Urgent Pointer):当前顺序号到紧急数据位置的偏移量选项(Option):
数据(Data):上层协议数据
TCP 连接的建立——三次握手例如:A 、B 两个主机要建立连接
A →
B 方向消息含义A ←B A ←B A →B SYN SYN ACK ACK 我的序号是X 序号用于跟踪通信顺序,确保多个包传输时无数据丢失。
通信双方在建立连接时必须互相交换各自的初始序号。
知道了,你的序号是X 我的序号是Y 知道了,你的序号是Y 握手12
3合并 1.2.3.4.TCP 通过三次握手来建立连接
A B
发送SYN 消息(SEQ=x)
收到SYN 消息(SEQ=x)
发送SYN 消息
(SEQ=y,ACK=x+1)收到SYN 消息(SEQ=y,ACK=x+1)
发送确认(ACK=y+1)
收到确认(ACK=y+1)
双方连接建立
A B
发送FIN 消息(SEQ=x)接收FIN 消息(SEQ=x)
TCP 发送确认(ACK=x+1)①
接收ACK 消息(ACK=x+1)
A →
B 的连接断开(半关闭) 但A 仍可接收数据
发送确认(ACK=y+1)
接收确认(ACK=y+1)
B →A 的连接断开
TCP 通过四次握手来释放连接
应用进程释放连接通知应用进程①应用进程释放连接②
发送FIN 消息②
(SEQ=y,ACK=x+1)接收FIN 消息(SEQ=y)
TCP的面向连接的实质
z TCP 是面向连接的协议
z TCP的面向连接是建立在相互连接的主机内,而与中间的转接节点(路由器)没有关系
z TCP的面向连接与所谓的“虚电路”没有关系
z TCP所提供的可靠服务是建立在IP所提供的“不可靠的服务”的基础上的
UDP段格式
UDP不用确认,功能十分简单。
传输可靠性由应用层协议保证。
使用UDP的协议包括:TFTP、SNMP、NFS、DNS等16b16b16b16b
源端口目的端口长度校验和数据
网络层与IP 协议
互联网层功能:
路由表路由协议•路由选择•RIP, OSPF, BGP IP 协议
•地址转换
•数据报格式•分组处理
ICMP 协议
•错误报告•路由器“信令”
传输层: TCP, UDP
数据链路层
物理层
网络层IP 数据报(IP 分组、IP 包)
版本号报头长度服务类型数据报长度
DF MF 段偏移
0 3 7 15 19 31 标识生存时间TTL 协议报头校验和
源IP 地址
目的IP 地址
选项和填充(最大为40字节)
数据区
IP地址
¾IP网络中每台主机都必须有一个惟一的IP地址;
¾IP地址是一个逻辑地址;(与MAC地址比较一下)
¾因特网上的IP地址具有全球唯一性;
¾32位,4个字节,常用点分的十进制标记法:
如00001010000000100000000000000001记为10.2.0.1¾IP地址划分为五类:A-E类,常用的为A、B、C类
A类地址:允许27-2个网络,每个网络224-2个主机;
B类地址:允许214个网络,每个网络216-2个主机;
C类地址:允许221个网络,每个网络28-2个主机;IP地址分类
A类B类C类0
1
11
7bits24 bits
14 bits16 bits
网络号主机(接口)号
网络号主机(接口)号
21bits8bits 网络号主机(接口)号
A类0.0.0.0 ~126.255.255.255 B类128.0.0.0 ~191.255.255.255
C类192.0.0.0 ~223.255.255.255 地址范围
保留的IP 地址
00...000000 ... 000011...111111 ... 1111本机本网中的主机
局域网中的广播对指定网络的广播回路
00...00主机号1111 ... 1111网络号127任意值以下这些IP 地址具有特殊的含义:
一般来说,主机号部分为全“1 ”的IP 地址保留用作广播地址;
主机号部分为全“0 ”的IP 地址保留用作网络地址。
0000 ... 0000网络号网络地址子网掩码计算
缺省子网掩码:A 类:255.0.0.0
B 类:255.255.0.0
C 类:255.255.255.0
网际控制报文协议(ICMP )
ICMP 消息被封装在IP 数据报里,用来发送差错报告和控制信息。
ICMP 定义了如下消息类型:
目的端无法到达(Destination unreachable )数据报超时(Time exceeded )
数据报参数错(Parameter problem )
重定向(Redirect )
回声请求(Echo )
回声应答(Echo reply )
信息请求(Information request )
信息应答(Information reply )
地址请求(Address request )
地址应答(Address reply )
……
最常用的是“目的无法到达”和“回声”消息。
A B
数据网
发数据给Z 到Z 的数据
我不知道如何
到达Z ?
用ICMP 通知A
目的端无法到达
路由器用ICMP 通知目的地不可达的示意图
A B
B 可以到达吗?ICMP 回声请求
可以,
我在这里。
ICMP 回声应答
用PING 命令产生的回声及其应答示意图
地址解析协议(ARP, Address Resolution Protocol )ARP 用于将一个已知的IP 地址映射到MAC 地址。
方法:1)检查ARP 高速缓存表;2)若地址不包含在表中,就向网上发广播来寻找。
具有该IP 地址的目的站用其MAC 地址作为响应。
9ARP 只能用于具有广播能力的网络。
A C
我需要10.1.0.5的MAC 地址IP = 10.1.0.5 MAC =
我就是。
这是我的MAC 地址
IP = 10.1.0.5MAC = 0800.0020.2C0A
B 10.1.0.110.1.0.510.1.0.2
为什么需要地址解析协议?
z在因特网中,IP地址是所有数据分组传输的逻辑地址
z在局域网中,一般使用物理(MAC)地
址进行数据通信
z许多因特网的主机位于局域网络中,当数据分组到达时,需要把IP地址转换成MAC 地址,把网络层的分组再封装在局域网链路帧中,才能发送到该主机
域名服务(DNS)和地址解析(ARP)的比较
z DNS是一种广域网中全局性的服务,由分布
在全球的DNS服务器形成一个服务链,提供
关于广域网中的域名到IP地址间的映射。
z ARP是在局域网中区域性的服务,其服务程
序驻留在局域网中的主机(接口)中,由各
个主机负责解析IP到MAC地址间的映射。
Routing to another LAN walkthrough: routing from A to B via R
A
R
B
ARP与IP的交互
z在LAN1中,所有的主机都有111.111.111.xxx的地址形式,而LAN2则所有主机具有222.222.222.xxx的地址形式。
z现在假设主机111.111.111.111要发送一个数据报到主机222.222.222.222。
发送主机一如既往将数据报发送到了接口上,但发送主机需要指出相应的信宿的LAN地址。
那么发送主机会使用哪个LAN地址。
z可能猜测是是222.222.222.222的LAN地址,49-BD-D2-C7-56-2A。
可惜,这个答案是错误的。
如果发送适配器使用这个LAN地址,LAN1上没有一个适配器会将该数据报传送到网络层,由于数据帧中的地址将在LAN1中找不到匹配的适配器地址,该数据报将无疾而终并送到数据报天堂。
z从IP子网掩码的作用可知,发送主机在发送数据报之前,就已经知道信宿主机不在同一LAN上,(将信宿主机和发送主机的IP地址的的网络地址部分进行比较),其结果只能将数据报发送给路由器,由路由器转发,而路由器的IP地址(在Windows系统中称为缺省网关)在发送主机中早有预置(在本例中为111.111.111.110)。
z发送主机如何得到路由器接口的LAN地址呢?当然是使用ARP程序模块。
一旦发送端的适配器获得了路由器接口的LAN地址,就可以生成一个数据帧,发送给路由器。
z LAN1上的路由器接口见到了发给它的数据帧,就将其传送到网络层。
就这样,数据报就成功地从主机发送到了路由器上!
z还必须将数据报从路由器发送到目的地。
路由器首先需要选择适当的接口来转发,这项工作路由器可以通过查询路由表来完成。
路由表告诉路由器,数据报可以通过路由器的
222.222.222.220接口转发。
该接口将数据报传送到其适配器,组成新的数据帧,并送入LAN2 z这次,数据帧的信宿地址才是真正的最终目的地的LAN地址。
z路由器又是如何知道最终目的地的LAN地址呢因为,路由器可以识别数据报中的目的地的IP地址,所以,它可以通过ARP来获得最终目的地的LAN地址。
路由选择
路由表的维护有两种基本方式:
静态路由——由人工预先设置好,只适用于
小型网络
动态路由——路由器运行过程中根据网络情
况自动地动态维护
路由表——存放到达其他网络的路由信息,
路由器根据路由表转发分组。
路由表的基本内容
网络路由(下一站点)距离172.16.0.0202.168.0.0
10.0.0.0202.168.0.2202.168.0.0直接172.16.0.010.0.0.0A B
A 的路由表
直接.1.1.2.1001
ICMP工具程序z PING
PING工具程序可用来发
出ICMP Echo Request包,
以初步排查网络联网异常。
A B
Echo Request
Echo Reply
利用PING来诊断网络问题
1.Ping 127.0.0.1——用于测试TCP/IP协议是否运行正常
2.Ping 本机地址——测试网络设置(网卡)是否正常
3.Ping 对外连接的路由器(网关)——测试内部网络与
对外连网的路由器是否正常
4.Ping Internet上计算机的IP地址——随便找一台
Internet上的计算机,如果有响应,代表IP设置全部
正常。
5.Ping Internet上计算机的网址——例如ping
,如果有响应,代表DNS设置无误。
z TRACERT
TRACERT 工具可找出至目
的IP 地址所经过的路有器。
TRACERT 的工作原理:
1.A 发出Echo Request 1,目的地址为B ,TTL=1;
2.R1路由器收到Echo Request 1后,因TTL=1便丢弃
此封包,然后传送Timer Exceeded 1给A;
3.A 收到Timer Exceeded 1之后,便可知道RI 位路由
过程中的第一个路由器。
接着,A 再发出Echo Request 2,目的地址仍为B ,TTL=2;
A B R1R24.Echo Request 2先送到R1,然后转送至R2,到达R2
时,Echo Request 2的TTl=1,因此R2便丢弃此封包,然后传送Timer Exceeded 2给A;
5.A 收到Timer Exceeded 2之后,便可知道RI 位路由过程中的第二个路由器。
接着,A 再发出Echo Request
3,目的地址仍为B ,TTL=3;
6.Echo Request 3经R1、R2,然后转送至B ,B 收到此
封包后回应Echo Reply 1给A 。
A 收到Echo Reply 1之后便大功告成。
z
PATHPING
z PATHPING可以认为是PING和TRACERT的结合,先找出至目的地IP地址所经过的路有器,然后依次对每部路z由器发出Echo Request包,以监测路由器是否正常。
本章小结
z因特网与TCP/IP ——因特网的协议z DNS
z TCP、UDP
z IP、ICMP
z ARP与IP的交互。