2010/5/16 page 1
第 7章 因特网的重要协议
本章重点
● 因特网与 TCP/IP —— 因特网的协议
? DNS
? TCP,UDP
? IP,ICMP
2010/5/16 page 2
9.2 因特网与 TCP/IP
?TCP/IP是一个协议簇
?包括:
? 应用层,FTP,HTTP,DNS等
? 传输层,TCP,UDP
? 网络层,IP,ARP,ICMP,RARP,各种路由协议
2010/5/16 page 3
因特网的协议栈
application
transport
network
link
physical
? 应用层
? ftp,smtp,http
? 传输层
? tcp,udp
? 网络层
? ip,路由协议
? 数据链路层
? ppp,以太网协议
? 物理层
2010/5/16 page 4
域名服务 DNS 教学片
? DNS用于将主机名转换为 IP地址 。
?采用名字来标记一台主机便于记忆 。
? DNS服务主要基于 UDP来实现, 端口号 =53。
?三个组成部分:域名空间, 名字服务器, 解析程序
?域名空间,分布式的, 层次型 ( 分级 ) 的树形结构, 根
没有名字, 顶层域由组织域 ( 如 org,com,edu) 和国家域
( 如 cn) 构成 。 在往下分还可分为若干层 子域, 如下页图
。 通常用点来分隔域的层次, 如
www.xyz.com
2010/5/16 page 5
根
INT CNMIL NET COM JP… …
IBM intel
eng www
jack
edu net
xjtu
www ftp
交大的 Web服务器,WWW.XJTU.EDU.CN
2010/5/16 page 6
? DNS名字服务器,存放域树结构和主机信息的数据库
。 为减小查询流量负载, 提高可靠性, DNS名字空间被
划分成若干不交叉的区域 ( Zone), 分别存放在该区域
的 DNS服务器中 。
? 解析程序,从名字服务器中提取信息把主机域名翻译
成 IP地址 。
解析过程为:首先从本地 Hosts文件查找 。 没找到就向
本地 DNS名字服务器发出请求;若本地 DNS服务器也找
不到, 它就把请求发给顶层域名字服务器, 然后由顶层
域名字服务器把请求传递给相应子域的名字服务器 。 最
后由该名字服务器把域名对应的 IP地址按相反的路径传
递给发出请求的站点 。
2010/5/16 page 7
例如:
jack.eng.ibm.com想要知道 www.xjtu.edu.cn的 IP地
址
jack.eng.ibm.com
eng.ibm.com
edu-server.net
www.xjtu.edu.cn
xjtu.edu.cn
原始服务器
eng,ibm
服务器
edu服务器
xjtu,edu
服务器
cn服务器
2010/5/16 page 8
2010/5/16 page 9
不同应用对基础协议的要求
? 数据丢失( data loss)
? 电子邮件,FTP,WWW和 Telnet不能容忍数据丢失
? 而多媒体类的应用往往可以经得起部分数据的丢失
? 带宽 (bandwidth)
? 以 IP电话为代表的多媒体交互式的应用对带宽是十分
敏感的
? 而文件传输类的应用则对带宽的要求比较具有“弹
性”
? 实时性( timing)
? IP电话、视讯会议、“四国大战”的要求
2010/5/16 page 10
网络基础协议中的关键问题
? 网络基础协议指包括传输层及以下的各层
中的各种协议,问题在于:
? 某个网络基础协议的性质(或所提供的服务
)是面向连接的还是无连接的?
? 虚电路与面向连接的关系,虚电路是面向连
接的,但面向连接的就一定是虚电路?
? 如何理解在不可靠的协议上建立可靠的连接
服务?
2010/5/16 page 11
传输层最基本的功能
? 在不同主机中的应用进程之间建立“逻辑
通信”
? 应用进程使用由传输层提供的逻辑通信功
能,在进程间互发报文,而不必考虑具体
的通信细节
? 传输层仅仅工作在端系统中,与交换节
点(路由器)没有关系
2010/5/16 page 12
传输层最基本的功能(续)
? 传输层从应用层收到“报文”,将其装入
4-PDU(如果报文太大,则需要分段 ),加
上传输层的“段首部”后就送给网络层
? 传输层有多个传输协议备选。
? 如面向连接的 TCP和无连接的 UDP
? 每个协议都使用其为应用层协议提供不同的传输服
务功能的集合
? 传输层协议的主要功能是提供所谓“多道
处理”的功能
2010/5/16 page 13
传输层与网络层的关系
? 传输层提供主机内进程间的“逻辑通信”;而网络层则提供网络中主机间的“逻辑
通信”
? 二者之间的差别微妙而又重要
? 主机 =单位的传达室
? 进程 =单位中的职员
? 应用层报文 =信的内容
? 网络层协议 =邮局的投递服务
? 传输层协议 =传达室的收发业务
2010/5/16 page 14
Segment
Datagram
应用层
传输层
网络层
M
应用层
传输层
网络层
M’
应用层
传输层
网络层
M M’
p1
p3
p2
p4
H
n
Segment
H
1
M
应用层数据段头
图 8 - 1 8 传 输 层 与 多 道 处 理
服务器
客户端
客户端
2010/5/16 page 15
传输层和多道作业处理
? 在 TCP和 UDP的段头有两个端口号
? 分别为源端口 (source port-number)和宿端口
(destination port-number)
? 当把这两个字段合为一体时,就可以确定信宿主机中唯
一的某个特定进程。
? 所谓端口号是一个 16比特的数字,其表达范围从 0~
65535。从 0~ 1023的端口号被称为常用端口号( well-
known number)并限制使用。这就意味着这些端口号
仅限于最常用的一些网络应用,
? 如 HTTP和 FTP。 HTTP用端口的是 80,FTP是 21和 20
。常用端口号的定义见 RFC 1700。
2010/5/16 page 16
32bits
Source port # Dest port #
Other header fields
Data
(message)
图 8 - 1 7 传 输 层 数 据 段 中 的 源 端 口 和 目 的 端 口 号 字 段
2010/5/16 page 17
传输层和多道作业处理(续)
? 由此可知,在主机 (服务器 )中运行的每一种网络
应用程序都有一个端口号
? 但是为什么在传输层协议 PDU的字段中会有两
个端口号,源端口和宿端口?
? 这个问题的答案很简单,同一信源主机可能在
同一个时刻在运行两个以上相同的应用程序进
程(比如同时打开两个浏览器窗口),而一个
应用程序的端口号则无法确定主机中相同类型
应用程序进程中的某个具体的进程
2010/5/16 page 18
端口号
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
21 23 25 53 69 161
TCP UDP
应用层
传输层
保留的端口号:
< 255,公共应用
255-1023,公司
> 1023,未规定
2010/5/16 page 19
工 作 站
服 务 器
源 端 口, x
宿 端 口, 2 3
源 端 口, 2 3
宿 端 口, x
图 8 - 1 9 在 客 户 端 / 服 务 器 应 用 中 的 源 端 口 和 宿 端 口 的 应 用
2010/5/16 page 20
传输层和多道作业处理(续)
? 当用户启动一个 Telnet会话时,Telnet服务的宿端口为
23,而源端口则由操作系统生成一个未被使用的端口号
x。每个发送到 Telnet服务器的段都将宿端口设为 23,
而源端口则设为 x。当段到达 Telnet服务器时,在段中
的宿端口和源端口使得服务器可以确定具体的应用进程
。宿端口为 23确定了这是 Telnet服务,而源端口则确定
了具体的应用进程。
? 当数据从服务器流向客户端时,这种情况则颠倒过来,
这次源端口为 23,宿端口为 x(这个 x与发送到服务器的
源端口号相同 )。当该段到达客户端时,段中的源端口
和宿端口使客户端主机可以确定正确的应用程序进程并
将数据递交给它
2010/5/16 page 21
传输层和多道作业处理(续)
? 既然从客户端发送到服务器的源端口号是由各
个网络上的主机随机选择的,如果两台主机所
选择的源端口完全相同,那么服务器进程又如
何区别?这个问题尤其是在一些大型 Web网站
上,好像是很容易发生的
? 其实这个问题实际上很容易解决,因为服务器
进程在对段数据进行甄别时要参考数据报的 IP
地址。虽然源端口号可能重复,但加上 IP地址
后,冲突就不会发生
2010/5/16 page 22
两类服务, 面向连接的和无连接的服务
目的:在主机系统之间传输数据。
? TCP – 传输控制协议 [RFC 793]
? 用于因特网的 面向连接的服务
? 传输前需建立连接
? 可靠的,有序的 字节流传输
? 流量控制与拥塞控制
? UDP – 用户数据报协议 [RFC 768],
? 用于因特网的 无连接的服务
? 不可靠的 数据传输
? 无流量控制
? 无拥塞控制
2010/5/16 page 23
使用 TCP服务的应用,
? HTTP (WWW)
? FTP (file transfer)
? Telnet (remote login)
? SMTP (email)
使用 UDP服务的应用,
? 流媒体,电信会议,因特网电话
? DNS
2010/5/16 page 24
TCP协议 RFCs,793,1122,1323,2018,2581
? 点到点(端到端),
? 一个发送者,一个接收者
? 面向连接:可靠的,有序的字节流
? 无, 消息边界,
? 流量受控:管道化的
? TCP拥塞和流量控制设置窗口大小
? 全双工操作
2010/5/16 page 25
TCP段格式
源端口
0 3 4 9 10
代码位
目的端口
15 16 31
顺序号
确认号
窗口大小保留报头长度
校验和 紧急指针
选项(可省略)
数据
2010/5/16 page 26
源端口 (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):上层协议数据
2010/5/16 page 27
TCP连接的建立 ——三次握手
例如,A,B两个主机要建立连接
A→ B
方向 消息 含义
A← B
A← B
A→ B
SYN
SYN
ACK
ACK
我的序号是 X
序号用于跟踪通信顺序,确保多个包传输时无数据丢失。
通信双方在建立连接时必须互相交换各自的初始序号。
知道了,你的序号是 X
我的序号是 Y
知道了,你的序号是 Y
握手
1
2
3
合
并
1.
2.
3.
4.
2010/5/16 page 28
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)
双方连接建立
2010/5/16 page 29
红蓝军的故事
2010/5/16 page 30
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)
2010/5/16 page 31
TCP的面向连接的实质
? TCP 是面向连接的协议
? TCP的面向连接是建立在相互连接的主机
内,而与中间的转接节点(路由器)没有
关系
? TCP的面向连接与所谓的“虚电路”没有
关系
? TCP所提供的可靠服务是建立在 IP所提供
的“不可靠的服务”的基础上的
2010/5/16 page 32
UDP段格式
UDP不用确认,功能十分简单。
传输可靠性由应用层协议保证。
使用 UDP的协议包括,TFTP,SNMP,NFS,DNS等
源端口 目的端口 长度 校验和 数据
16b 16b 16b 16b
2010/5/16 page 33
网络层与 IP协议
互联网层功能,
路由表
路由协议
?路由选择
?RIP,OSPF,BGP
IP 协议
?地址转换
?数据报格式
?分组处理
ICMP 协议
?错误报告
?路由器,信令”
传输层, TCP,UDP
数据链路层
物理层
网络层
2010/5/16 page 34
IP数据报( IP分组,IP包)
版本号 报头长度 服务类型 数据报长度
DF MF 段偏移
0 3 7 15 19 31
标识
生存时间 TTL 协议 报头校验和
源 IP地址
目的 IP地址
选项和填充(最大为 40字节)
数据区
2010/5/16 page 35
IP地址
?IP网络中每台主机都必须有一个惟一的 IP地址;
?IP地址是一个逻辑地址; (与 MAC地址比较一下 )
?因特网上的 IP地址具有全球唯一性;
?32位,4个字节,常用点分的十进制标记法:
如 00001010 00000010 00000000 00000001 记为 10.2.0.1
?IP地址划分为五类,A-E类,常用的为 A,B,C类
A类地址:允许 27-2个网络,每个网络 224-2个主机;
B类地址:允许 214个网络,每个网络 216-2个主机;
C类地址:允许 221个网络,每个网络 28-2个主机;
2010/5/16 page 36
IP地址分类
A类
B类
C类
0
0
0
1
1 1
7bits 24 bits
14 bits 16 bits
网络号 主机 ( 接口 ) 号
网络号 主机 ( 接口 ) 号
21bits 8bits
网络号 主机 ( 接口 ) 号
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
地址范围
2010/5/16 page 37
保留的 IP地址
00...00 0000,.,0000
11...11 1111,.,1111
本机
本网中的主机
局域网中的广播
对指定网络的广播
回路
00...00 主 机 号
1111,.,1111网络号
127 任 意 值
以下这些 IP地址具有特殊的含义,
一般来说,主机号部分为全, 1,的 IP地址保留用作广播地址;
主机号部分为全, 0,的 IP地址保留用作网络地址。
0000,.,0000网络号 网络地址
2010/5/16 page 38
子网掩码计算
缺省子网掩码,A类,255.0.0.0
B类,255.255.0.0
C类,255.255.255.0
2010/5/16 page 39
网际控制报文协议( ICMP)
ICMP消息被封装在 IP数据报里,用来发送差错报告
和控制信息。
ICMP定义了如下消息类型:
目的端无法到达( Destination unreachable)
数据报超时( Time exceeded)
数据报参数错( Parameter problem)
重定向( Redirect)
回声请求( Echo)
回声应答( Echo reply)
信息请求( Information request)
信息应答( Information reply)
地址请求( Address request)
地址应答( Address reply)
……
2010/5/16 page 40
最常用的是, 目的无法到达, 和, 回声, 消息。
A B
数据网
发数据给 Z
到 Z的数据
我不知道如何
到达 Z?
用 ICMP通知 A
目的端无法到达
路由器用 ICMP通知目的地不可达的示意图
2010/5/16 page 41
A B
B可以到
达吗?
ICMP回声请求
可以,
我在这里。
ICMP回声应答
用 PING命令产生的回声及其应答示意图
2010/5/16 page 42
地址解析协议 (ARP,Address Resolution Protocol)
ARP用于将一个已知的 IP地址映射到 MAC地址。方法:
1)检查 ARP高速缓存表;
2)若地址不包含在表中,就向网上发广播来寻找。具有
该 IP地址的目的站用其 MAC地址作为响应。
?ARP只能用于具有广播能力的网络。
A C
我需要 10.1.0.5
的 MAC地址
IP = 10.1.0.5
MAC =
我就是。
这是我的 MAC地址
IP = 10.1.0.5
MAC = 0800.0020.2C0A
B
10.1.0.1 10.1.0.510.1.0.2
2010/5/16 page 43
为什么需要地址解析协议?
? 在因特网中,IP地址是所有数据分组传输
的逻辑地址
? 在局域网中,一般使用物理( MAC)地
址进行数据通信
? 许多因特网的主机位于局域网络中,当数
据分组到达时,需要把 IP地址转换成 MAC
地址,把网络层的分组再封装在局域网链
路帧中,才能发送到该主机
2010/5/16 page 44
域名服务 (DNS)和地址解析( ARP)的比较
? DNS是一种广域网中全局性的服务,由分布
在全球的 DNS服务器形成一个服务链,提供
关于广域网中的域名到 IP地址间的映射。
? ARP是在局域网中区域性的服务,其服务程
序驻留在局域网中的主机(接口)中,由各
个主机负责解析 IP到 MAC地址间的映射。
2010/5/16 page 45
Routing to another LAN
walkthrough,routing from A to B via R
A
R
B
2010/5/16 page 46
ARP与 IP的交互
? 在 LAN1中,所有的主机都有 111.111.111.xxx的地址形
式,而 LAN2则所有主机具有 222.222.222.xxx的地址形
式。
? 现在假设主机 111.111.111.111要发送一个数据报到主
机 222.222.222.222。发送主机一如既往将数据报发送
到了接口上,但发送主机需要指出相应的信宿的 LAN地
址。那么发送主机会使用哪个 LAN地址。
? 可能猜测是是 222.222.222.222的 LAN地址,49-BD-D2-
C7-56-2A。可惜,这个答案是错误的。如果发送适配
器使用这个 LAN地址,LAN1上没有一个适配器会将该
数据报传送到网络层,由于数据帧中的地址将在 LAN1
中找不到匹配的适配器地址,该数据报将无疾而终并送
到数据报天堂。
2010/5/16 page 47
? 从 IP子网掩码的作用可知,发送主机在发送数据
报之前,就已经知道信宿主机不在同一 LAN上,
(将信宿主机和发送主机的 IP地址的的网络地址
部分进行比较),其结果只能将数据报发送给路
由器,由路由器转发,而路由器的 IP地址(在
Windows系统中称为缺省网关)在发送主机中
早有预置(在本例中为 111.111.111.110)。
? 发送主机如何得到路由器接口的 LAN地址呢?
当然是使用 ARP程序模块。一旦发送端的适配
器获得了路由器接口的 LAN地址,就可以生成一
个数据帧,发送给路由器。
2010/5/16 page 48
? LAN1上的路由器接口见到了发给它的数据帧,
就将其传送到网络层。就这样,数据报就成功
地从主机发送到了路由器上!
? 还必须将数据报从路由器发送到目的地。路由
器首先需要选择适当的接口来转发,这项工作
路由器可以通过查询路由表来完成。路由表告
诉路由器,数据报可以通过路由器的
222.222.222.220接口转发。该接口将数据报传
送到其适配器,组成新的数据帧,并送入 LAN2
? 这次,数据帧的信宿地址才是真正的最终目的
地的 LAN地址。
? 路由器又是如何知道最终目的地的 LAN地址呢
?因为,路由器可以识别数据报中的目的地的
IP地址,所以,它可以通过 ARP来获得最终目
的地的 LAN地址。
2010/5/16 page 49
路由选择
?路由表的维护有两种基本方式:
?静态路由 —— 由人工预先设置好,只适用于
小型网络
?动态路由 —— 路由器运行过程中根据网络情
况自动地动态维护
路由表 —— 存放到达其他网络的路由信息,
路由器根据路由表转发分组。
2010/5/16 page 50
路由表的基本内容
网 络 路由 (下一站点 ) 距 离
172.16.0.0
202.168.0.0
10.0.0.0 202.168.0.2
202.168.0.0
直接
172.16.0.0 10.0.0.0
A B
A的路由表
直接
.1,1,2,1
0
0
1
2010/5/16 page 51
ICMP工具程序
? PING
PING工具程序可用来发
出 ICMP Echo Request包
,
以初步排查网络联网异常。
A B
Echo Request
Echo Reply
2010/5/16 page 52
利用 PING来诊断网络问题
1,Ping 127.0.0.1—— 用于测试 TCP/IP协议是否运行正常
2,Ping 本机地址 —— 测试网络设置(网卡)是否正常
3,Ping 对外连接的路由器(网关) —— 测试内部网络与
对外连网的路由器是否正常
4,Ping Internet上计算机的 IP地址 —— 随便找一台
Internet上的计算机,如果有响应,代表 IP设置全部
正常。
5,Ping Internet上计算机的网址 —— 例如 ping
www.sina.com.cn,如果有响应,代表 DNS设置无误
。
2010/5/16 page 53
? 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 BR1 R2
2010/5/16 page 54
4,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之
后便大功告成。
?
2010/5/16 page 55
PATHPING
? PATHPING可以认为是 PING和
TRACERT的结合,先找出至目的地 IP地
址所经过的路有器,然后依次对每部路
? 由器发出 Echo Request包,以监测路由
器是否正常 。
2010/5/16 page 56
本章小结
? 因特网与 TCP/IP —— 因特网的协议
? DNS
? TCP,UDP
? IP,ICMP
? ARP与 IP的交互
第 7章 因特网的重要协议
本章重点
● 因特网与 TCP/IP —— 因特网的协议
? DNS
? TCP,UDP
? IP,ICMP
2010/5/16 page 2
9.2 因特网与 TCP/IP
?TCP/IP是一个协议簇
?包括:
? 应用层,FTP,HTTP,DNS等
? 传输层,TCP,UDP
? 网络层,IP,ARP,ICMP,RARP,各种路由协议
2010/5/16 page 3
因特网的协议栈
application
transport
network
link
physical
? 应用层
? ftp,smtp,http
? 传输层
? tcp,udp
? 网络层
? ip,路由协议
? 数据链路层
? ppp,以太网协议
? 物理层
2010/5/16 page 4
域名服务 DNS 教学片
? DNS用于将主机名转换为 IP地址 。
?采用名字来标记一台主机便于记忆 。
? DNS服务主要基于 UDP来实现, 端口号 =53。
?三个组成部分:域名空间, 名字服务器, 解析程序
?域名空间,分布式的, 层次型 ( 分级 ) 的树形结构, 根
没有名字, 顶层域由组织域 ( 如 org,com,edu) 和国家域
( 如 cn) 构成 。 在往下分还可分为若干层 子域, 如下页图
。 通常用点来分隔域的层次, 如
www.xyz.com
2010/5/16 page 5
根
INT CNMIL NET COM JP… …
IBM intel
eng www
jack
edu net
xjtu
www ftp
交大的 Web服务器,WWW.XJTU.EDU.CN
2010/5/16 page 6
? DNS名字服务器,存放域树结构和主机信息的数据库
。 为减小查询流量负载, 提高可靠性, DNS名字空间被
划分成若干不交叉的区域 ( Zone), 分别存放在该区域
的 DNS服务器中 。
? 解析程序,从名字服务器中提取信息把主机域名翻译
成 IP地址 。
解析过程为:首先从本地 Hosts文件查找 。 没找到就向
本地 DNS名字服务器发出请求;若本地 DNS服务器也找
不到, 它就把请求发给顶层域名字服务器, 然后由顶层
域名字服务器把请求传递给相应子域的名字服务器 。 最
后由该名字服务器把域名对应的 IP地址按相反的路径传
递给发出请求的站点 。
2010/5/16 page 7
例如:
jack.eng.ibm.com想要知道 www.xjtu.edu.cn的 IP地
址
jack.eng.ibm.com
eng.ibm.com
edu-server.net
www.xjtu.edu.cn
xjtu.edu.cn
原始服务器
eng,ibm
服务器
edu服务器
xjtu,edu
服务器
cn服务器
2010/5/16 page 8
2010/5/16 page 9
不同应用对基础协议的要求
? 数据丢失( data loss)
? 电子邮件,FTP,WWW和 Telnet不能容忍数据丢失
? 而多媒体类的应用往往可以经得起部分数据的丢失
? 带宽 (bandwidth)
? 以 IP电话为代表的多媒体交互式的应用对带宽是十分
敏感的
? 而文件传输类的应用则对带宽的要求比较具有“弹
性”
? 实时性( timing)
? IP电话、视讯会议、“四国大战”的要求
2010/5/16 page 10
网络基础协议中的关键问题
? 网络基础协议指包括传输层及以下的各层
中的各种协议,问题在于:
? 某个网络基础协议的性质(或所提供的服务
)是面向连接的还是无连接的?
? 虚电路与面向连接的关系,虚电路是面向连
接的,但面向连接的就一定是虚电路?
? 如何理解在不可靠的协议上建立可靠的连接
服务?
2010/5/16 page 11
传输层最基本的功能
? 在不同主机中的应用进程之间建立“逻辑
通信”
? 应用进程使用由传输层提供的逻辑通信功
能,在进程间互发报文,而不必考虑具体
的通信细节
? 传输层仅仅工作在端系统中,与交换节
点(路由器)没有关系
2010/5/16 page 12
传输层最基本的功能(续)
? 传输层从应用层收到“报文”,将其装入
4-PDU(如果报文太大,则需要分段 ),加
上传输层的“段首部”后就送给网络层
? 传输层有多个传输协议备选。
? 如面向连接的 TCP和无连接的 UDP
? 每个协议都使用其为应用层协议提供不同的传输服
务功能的集合
? 传输层协议的主要功能是提供所谓“多道
处理”的功能
2010/5/16 page 13
传输层与网络层的关系
? 传输层提供主机内进程间的“逻辑通信”;而网络层则提供网络中主机间的“逻辑
通信”
? 二者之间的差别微妙而又重要
? 主机 =单位的传达室
? 进程 =单位中的职员
? 应用层报文 =信的内容
? 网络层协议 =邮局的投递服务
? 传输层协议 =传达室的收发业务
2010/5/16 page 14
Segment
Datagram
应用层
传输层
网络层
M
应用层
传输层
网络层
M’
应用层
传输层
网络层
M M’
p1
p3
p2
p4
H
n
Segment
H
1
M
应用层数据段头
图 8 - 1 8 传 输 层 与 多 道 处 理
服务器
客户端
客户端
2010/5/16 page 15
传输层和多道作业处理
? 在 TCP和 UDP的段头有两个端口号
? 分别为源端口 (source port-number)和宿端口
(destination port-number)
? 当把这两个字段合为一体时,就可以确定信宿主机中唯
一的某个特定进程。
? 所谓端口号是一个 16比特的数字,其表达范围从 0~
65535。从 0~ 1023的端口号被称为常用端口号( well-
known number)并限制使用。这就意味着这些端口号
仅限于最常用的一些网络应用,
? 如 HTTP和 FTP。 HTTP用端口的是 80,FTP是 21和 20
。常用端口号的定义见 RFC 1700。
2010/5/16 page 16
32bits
Source port # Dest port #
Other header fields
Data
(message)
图 8 - 1 7 传 输 层 数 据 段 中 的 源 端 口 和 目 的 端 口 号 字 段
2010/5/16 page 17
传输层和多道作业处理(续)
? 由此可知,在主机 (服务器 )中运行的每一种网络
应用程序都有一个端口号
? 但是为什么在传输层协议 PDU的字段中会有两
个端口号,源端口和宿端口?
? 这个问题的答案很简单,同一信源主机可能在
同一个时刻在运行两个以上相同的应用程序进
程(比如同时打开两个浏览器窗口),而一个
应用程序的端口号则无法确定主机中相同类型
应用程序进程中的某个具体的进程
2010/5/16 page 18
端口号
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
21 23 25 53 69 161
TCP UDP
应用层
传输层
保留的端口号:
< 255,公共应用
255-1023,公司
> 1023,未规定
2010/5/16 page 19
工 作 站
服 务 器
源 端 口, x
宿 端 口, 2 3
源 端 口, 2 3
宿 端 口, x
图 8 - 1 9 在 客 户 端 / 服 务 器 应 用 中 的 源 端 口 和 宿 端 口 的 应 用
2010/5/16 page 20
传输层和多道作业处理(续)
? 当用户启动一个 Telnet会话时,Telnet服务的宿端口为
23,而源端口则由操作系统生成一个未被使用的端口号
x。每个发送到 Telnet服务器的段都将宿端口设为 23,
而源端口则设为 x。当段到达 Telnet服务器时,在段中
的宿端口和源端口使得服务器可以确定具体的应用进程
。宿端口为 23确定了这是 Telnet服务,而源端口则确定
了具体的应用进程。
? 当数据从服务器流向客户端时,这种情况则颠倒过来,
这次源端口为 23,宿端口为 x(这个 x与发送到服务器的
源端口号相同 )。当该段到达客户端时,段中的源端口
和宿端口使客户端主机可以确定正确的应用程序进程并
将数据递交给它
2010/5/16 page 21
传输层和多道作业处理(续)
? 既然从客户端发送到服务器的源端口号是由各
个网络上的主机随机选择的,如果两台主机所
选择的源端口完全相同,那么服务器进程又如
何区别?这个问题尤其是在一些大型 Web网站
上,好像是很容易发生的
? 其实这个问题实际上很容易解决,因为服务器
进程在对段数据进行甄别时要参考数据报的 IP
地址。虽然源端口号可能重复,但加上 IP地址
后,冲突就不会发生
2010/5/16 page 22
两类服务, 面向连接的和无连接的服务
目的:在主机系统之间传输数据。
? TCP – 传输控制协议 [RFC 793]
? 用于因特网的 面向连接的服务
? 传输前需建立连接
? 可靠的,有序的 字节流传输
? 流量控制与拥塞控制
? UDP – 用户数据报协议 [RFC 768],
? 用于因特网的 无连接的服务
? 不可靠的 数据传输
? 无流量控制
? 无拥塞控制
2010/5/16 page 23
使用 TCP服务的应用,
? HTTP (WWW)
? FTP (file transfer)
? Telnet (remote login)
? SMTP (email)
使用 UDP服务的应用,
? 流媒体,电信会议,因特网电话
? DNS
2010/5/16 page 24
TCP协议 RFCs,793,1122,1323,2018,2581
? 点到点(端到端),
? 一个发送者,一个接收者
? 面向连接:可靠的,有序的字节流
? 无, 消息边界,
? 流量受控:管道化的
? TCP拥塞和流量控制设置窗口大小
? 全双工操作
2010/5/16 page 25
TCP段格式
源端口
0 3 4 9 10
代码位
目的端口
15 16 31
顺序号
确认号
窗口大小保留报头长度
校验和 紧急指针
选项(可省略)
数据
2010/5/16 page 26
源端口 (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):上层协议数据
2010/5/16 page 27
TCP连接的建立 ——三次握手
例如,A,B两个主机要建立连接
A→ B
方向 消息 含义
A← B
A← B
A→ B
SYN
SYN
ACK
ACK
我的序号是 X
序号用于跟踪通信顺序,确保多个包传输时无数据丢失。
通信双方在建立连接时必须互相交换各自的初始序号。
知道了,你的序号是 X
我的序号是 Y
知道了,你的序号是 Y
握手
1
2
3
合
并
1.
2.
3.
4.
2010/5/16 page 28
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)
双方连接建立
2010/5/16 page 29
红蓝军的故事
2010/5/16 page 30
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)
2010/5/16 page 31
TCP的面向连接的实质
? TCP 是面向连接的协议
? TCP的面向连接是建立在相互连接的主机
内,而与中间的转接节点(路由器)没有
关系
? TCP的面向连接与所谓的“虚电路”没有
关系
? TCP所提供的可靠服务是建立在 IP所提供
的“不可靠的服务”的基础上的
2010/5/16 page 32
UDP段格式
UDP不用确认,功能十分简单。
传输可靠性由应用层协议保证。
使用 UDP的协议包括,TFTP,SNMP,NFS,DNS等
源端口 目的端口 长度 校验和 数据
16b 16b 16b 16b
2010/5/16 page 33
网络层与 IP协议
互联网层功能,
路由表
路由协议
?路由选择
?RIP,OSPF,BGP
IP 协议
?地址转换
?数据报格式
?分组处理
ICMP 协议
?错误报告
?路由器,信令”
传输层, TCP,UDP
数据链路层
物理层
网络层
2010/5/16 page 34
IP数据报( IP分组,IP包)
版本号 报头长度 服务类型 数据报长度
DF MF 段偏移
0 3 7 15 19 31
标识
生存时间 TTL 协议 报头校验和
源 IP地址
目的 IP地址
选项和填充(最大为 40字节)
数据区
2010/5/16 page 35
IP地址
?IP网络中每台主机都必须有一个惟一的 IP地址;
?IP地址是一个逻辑地址; (与 MAC地址比较一下 )
?因特网上的 IP地址具有全球唯一性;
?32位,4个字节,常用点分的十进制标记法:
如 00001010 00000010 00000000 00000001 记为 10.2.0.1
?IP地址划分为五类,A-E类,常用的为 A,B,C类
A类地址:允许 27-2个网络,每个网络 224-2个主机;
B类地址:允许 214个网络,每个网络 216-2个主机;
C类地址:允许 221个网络,每个网络 28-2个主机;
2010/5/16 page 36
IP地址分类
A类
B类
C类
0
0
0
1
1 1
7bits 24 bits
14 bits 16 bits
网络号 主机 ( 接口 ) 号
网络号 主机 ( 接口 ) 号
21bits 8bits
网络号 主机 ( 接口 ) 号
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
地址范围
2010/5/16 page 37
保留的 IP地址
00...00 0000,.,0000
11...11 1111,.,1111
本机
本网中的主机
局域网中的广播
对指定网络的广播
回路
00...00 主 机 号
1111,.,1111网络号
127 任 意 值
以下这些 IP地址具有特殊的含义,
一般来说,主机号部分为全, 1,的 IP地址保留用作广播地址;
主机号部分为全, 0,的 IP地址保留用作网络地址。
0000,.,0000网络号 网络地址
2010/5/16 page 38
子网掩码计算
缺省子网掩码,A类,255.0.0.0
B类,255.255.0.0
C类,255.255.255.0
2010/5/16 page 39
网际控制报文协议( ICMP)
ICMP消息被封装在 IP数据报里,用来发送差错报告
和控制信息。
ICMP定义了如下消息类型:
目的端无法到达( Destination unreachable)
数据报超时( Time exceeded)
数据报参数错( Parameter problem)
重定向( Redirect)
回声请求( Echo)
回声应答( Echo reply)
信息请求( Information request)
信息应答( Information reply)
地址请求( Address request)
地址应答( Address reply)
……
2010/5/16 page 40
最常用的是, 目的无法到达, 和, 回声, 消息。
A B
数据网
发数据给 Z
到 Z的数据
我不知道如何
到达 Z?
用 ICMP通知 A
目的端无法到达
路由器用 ICMP通知目的地不可达的示意图
2010/5/16 page 41
A B
B可以到
达吗?
ICMP回声请求
可以,
我在这里。
ICMP回声应答
用 PING命令产生的回声及其应答示意图
2010/5/16 page 42
地址解析协议 (ARP,Address Resolution Protocol)
ARP用于将一个已知的 IP地址映射到 MAC地址。方法:
1)检查 ARP高速缓存表;
2)若地址不包含在表中,就向网上发广播来寻找。具有
该 IP地址的目的站用其 MAC地址作为响应。
?ARP只能用于具有广播能力的网络。
A C
我需要 10.1.0.5
的 MAC地址
IP = 10.1.0.5
MAC =
我就是。
这是我的 MAC地址
IP = 10.1.0.5
MAC = 0800.0020.2C0A
B
10.1.0.1 10.1.0.510.1.0.2
2010/5/16 page 43
为什么需要地址解析协议?
? 在因特网中,IP地址是所有数据分组传输
的逻辑地址
? 在局域网中,一般使用物理( MAC)地
址进行数据通信
? 许多因特网的主机位于局域网络中,当数
据分组到达时,需要把 IP地址转换成 MAC
地址,把网络层的分组再封装在局域网链
路帧中,才能发送到该主机
2010/5/16 page 44
域名服务 (DNS)和地址解析( ARP)的比较
? DNS是一种广域网中全局性的服务,由分布
在全球的 DNS服务器形成一个服务链,提供
关于广域网中的域名到 IP地址间的映射。
? ARP是在局域网中区域性的服务,其服务程
序驻留在局域网中的主机(接口)中,由各
个主机负责解析 IP到 MAC地址间的映射。
2010/5/16 page 45
Routing to another LAN
walkthrough,routing from A to B via R
A
R
B
2010/5/16 page 46
ARP与 IP的交互
? 在 LAN1中,所有的主机都有 111.111.111.xxx的地址形
式,而 LAN2则所有主机具有 222.222.222.xxx的地址形
式。
? 现在假设主机 111.111.111.111要发送一个数据报到主
机 222.222.222.222。发送主机一如既往将数据报发送
到了接口上,但发送主机需要指出相应的信宿的 LAN地
址。那么发送主机会使用哪个 LAN地址。
? 可能猜测是是 222.222.222.222的 LAN地址,49-BD-D2-
C7-56-2A。可惜,这个答案是错误的。如果发送适配
器使用这个 LAN地址,LAN1上没有一个适配器会将该
数据报传送到网络层,由于数据帧中的地址将在 LAN1
中找不到匹配的适配器地址,该数据报将无疾而终并送
到数据报天堂。
2010/5/16 page 47
? 从 IP子网掩码的作用可知,发送主机在发送数据
报之前,就已经知道信宿主机不在同一 LAN上,
(将信宿主机和发送主机的 IP地址的的网络地址
部分进行比较),其结果只能将数据报发送给路
由器,由路由器转发,而路由器的 IP地址(在
Windows系统中称为缺省网关)在发送主机中
早有预置(在本例中为 111.111.111.110)。
? 发送主机如何得到路由器接口的 LAN地址呢?
当然是使用 ARP程序模块。一旦发送端的适配
器获得了路由器接口的 LAN地址,就可以生成一
个数据帧,发送给路由器。
2010/5/16 page 48
? LAN1上的路由器接口见到了发给它的数据帧,
就将其传送到网络层。就这样,数据报就成功
地从主机发送到了路由器上!
? 还必须将数据报从路由器发送到目的地。路由
器首先需要选择适当的接口来转发,这项工作
路由器可以通过查询路由表来完成。路由表告
诉路由器,数据报可以通过路由器的
222.222.222.220接口转发。该接口将数据报传
送到其适配器,组成新的数据帧,并送入 LAN2
? 这次,数据帧的信宿地址才是真正的最终目的
地的 LAN地址。
? 路由器又是如何知道最终目的地的 LAN地址呢
?因为,路由器可以识别数据报中的目的地的
IP地址,所以,它可以通过 ARP来获得最终目
的地的 LAN地址。
2010/5/16 page 49
路由选择
?路由表的维护有两种基本方式:
?静态路由 —— 由人工预先设置好,只适用于
小型网络
?动态路由 —— 路由器运行过程中根据网络情
况自动地动态维护
路由表 —— 存放到达其他网络的路由信息,
路由器根据路由表转发分组。
2010/5/16 page 50
路由表的基本内容
网 络 路由 (下一站点 ) 距 离
172.16.0.0
202.168.0.0
10.0.0.0 202.168.0.2
202.168.0.0
直接
172.16.0.0 10.0.0.0
A B
A的路由表
直接
.1,1,2,1
0
0
1
2010/5/16 page 51
ICMP工具程序
? PING
PING工具程序可用来发
出 ICMP Echo Request包
,
以初步排查网络联网异常。
A B
Echo Request
Echo Reply
2010/5/16 page 52
利用 PING来诊断网络问题
1,Ping 127.0.0.1—— 用于测试 TCP/IP协议是否运行正常
2,Ping 本机地址 —— 测试网络设置(网卡)是否正常
3,Ping 对外连接的路由器(网关) —— 测试内部网络与
对外连网的路由器是否正常
4,Ping Internet上计算机的 IP地址 —— 随便找一台
Internet上的计算机,如果有响应,代表 IP设置全部
正常。
5,Ping Internet上计算机的网址 —— 例如 ping
www.sina.com.cn,如果有响应,代表 DNS设置无误
。
2010/5/16 page 53
? 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 BR1 R2
2010/5/16 page 54
4,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之
后便大功告成。
?
2010/5/16 page 55
PATHPING
? PATHPING可以认为是 PING和
TRACERT的结合,先找出至目的地 IP地
址所经过的路有器,然后依次对每部路
? 由器发出 Echo Request包,以监测路由
器是否正常 。
2010/5/16 page 56
本章小结
? 因特网与 TCP/IP —— 因特网的协议
? DNS
? TCP,UDP
? IP,ICMP
? ARP与 IP的交互