67
信信信信信信信信信信 1 第第第 第第 第第第 第第 ()

第六章 网络传输服务 (二)

Embed Size (px)

DESCRIPTION

第六章 网络传输服务 (二). 第六章 网络传输服务. 6.1 传输服务的地位和作用 6.2 传输协议的基本要素 6.3 面向连接的 TCP 协议 6.4 无连接的 UDP 协议. 传输层的地位. OSI 上三层. 用户进程管理. OSI 上三层. 向上提供标准的传输服务向下屏蔽不同的通信子网. 传输层 Transport. 传输层 Transport. 通信子网. OSI 下三层. OSI 下三层. 传输协议的基本要素. 1 )标识端点 ( NSAP, TSAP, 主机地址 ) 2 )建立连接 3 )释放连接 - PowerPoint PPT Presentation

Citation preview

信阳师范学院计算机系 1

第六章 网络传输服务(二)

信阳师范学院计算机系 2

6.1 传输服务的地位和作用6.2 传输协议的基本要素6.3 面向连接的TCP协议6.4 无连接的UDP协议

第六章 网络传输服务

信阳师范学院计算机系 3

传输层的地位

传输层Transport

传输层Transport

OSI 上三层 OSI 上三层

OSI 下三层 OSI 下三层

用户进程管理

通信子网

向上提供标准的传输服务向下屏蔽不同的通信子网

信阳师范学院计算机系 4

传输协议的基本要素

1 )标识端点 ( NSAP, TSAP, 主机地址)2 )建立连接3 )释放连接4 )流量控制和缓冲策略5 )多路复用6 )崩溃恢复

信阳师范学院计算机系 5

6.3 面向连接的 TCP 协议

1 ) TCP协议概述2 ) TCP的端点标识: Port

3 ) TCP的TPDU: Segment

4 ) TCP的连接管理5 ) TCP的传输控制

信阳师范学院计算机系 6

1 ) TCP 协议概述

• TCP协议的基本概念• TCP协议的传输实体• TCP连接的性质

信阳师范学院计算机系 7

TCP 协议的基本概念Transmission Control Protocol• 为应用进程提供可靠的、端到端的、面向连接

的字节流通信的协议• 利用网络层 IP 协议提供的不可靠的分组传输

服务,解决分组的重传和排序问题• 由 RFC793 正式定义• 为 Internet 的许多著名应用提供传输服务

信阳师范学院计算机系 8

TCP 协议的传输实体软件实现• 用户进程• 操作系统核心的一部分– 管理 TCP 字节流– 实现与 IP 层的接口

应用进程

IP

TCP

接口

接口

信阳师范学院计算机系 9

TCP 连接的性质• 全双工– 支持同时的双向传输

• Unicast– 只支持两端点之间的通信,不支持 Multicas

t 和 Broadcast

• 面向字节流

信阳师范学院计算机系 10

2 ) TCP 的端点标识• 用套接口创建通信端点• TCP协议的端口定义• TCP协议的保留端口• TCP连接举例

信阳师范学院计算机系 11

收发双方创建套接口通信端点• 什么是套接口 socket

– 4BSD UNIX 首先提出的进程通信机制– 套接口的工作原理(用电话系统类比)

• 用套接口标识用户进程通信的端点– TCP 的端点标识

(访问端口,主机 IP 地址 )

信阳师范学院计算机系 12

套接口 socket 原理解释

6278

6500

0203

8121 0110

呼叫方

局内接受方 跨局接受方

局间通信

本地交换机

占用一部电话机,即申请一个 socket号

拥有固定的 socket 号 拥有固定的 socket 号

本地的网络地址 远程的网络地址

向 socket 发送数据,

从 socket 接收数据。

信阳师范学院计算机系 13

TCP 协议的端口定义• 用 16bit 区分 216 个端口• 众所周知端口– 全局分配,用于标准服务器– 取值小于 1024

• 临时端口– 本地分配(主机建立连接时为用户进程动态

分配的端口)– 取值大于等于 1024

信阳师范学院计算机系 14

TCP 保留端口举例

应用层

传输层

FTP

TELNET

SMTP

HTTP

DNS

SNMP

21 23 25 80 53 161Port

信阳师范学院计算机系 15

FTP 应用连接端口举例

主机 A 主机 B

(1234, 128.6.4.194) (21, 18.22.67.7)

建立端到端的连接

Client Server

众所周知端口临时端口

应用: ftp 18.22.67.7

信阳师范学院计算机系 16

3 ) TCP 的 TPDU

• TCP协议数据单元– 分节 segment

• 分节的封装• TCP头部• TCP头部的控制位

信阳师范学院计算机系 17

分节的定义• TCP 头部– 固定部分: 20 字节– 可选部分

• 数据– 适应 IP 的载荷能力(小于 65535Byte)– 适应网络的 MTU

信阳师范学院计算机系 18

IP 头部 TCP 头部

TCP 头部 应用数据

应用数据

应用数据

IP 头部 TCP 头部 应用数据

TCP 分节的封装TCP 分节segment

信阳师范学院计算机系 19

TCP 头部源端口 Source Port

(16bit)宿端口 Destination Port

(16bit)

序列号 Sequence Number(32bit)

确认号 Acknowledgment Number(32bit)

DataOffset(4bit)

Reserved

(6bit)

URG

ACK

PSH

RST

SYN

FIN

窗口大小Window size

(16bit)

校验和 Checksum(16bit) 紧急指针 Urgent Pointer(16bit)

选项 Options (0或多个 32bit字)

数据 Data (可选)

信阳师范学院计算机系 20

TCP 头部的控制位• URG 紧急指针域有效• ACK 确认域有效• PSH 不必缓冲区满即可上传• RST 复位,用于崩溃或错误连接• SYN 用于建立连接的同步序号• FIN 表示发送方到达数据结尾

信阳师范学院计算机系 21

4 ) TCP 的连接管理

• 建立连接– 服务器: LISTEN , ACCEPT– 客户机: CONNECT

• 释放连接– CLOSE

信阳师范学院计算机系 22

三次握手建立 TCP 连接主机 A 主机 B

SYN(SEQ=x)

SYN(SEQ=y, ACK=x+1)

SYN(SEQ=x+1, ACK=y+1)

信阳师范学院计算机系 23

5 ) TCP 的传输控制

• TCP传输控制• TCP差错控制• TCP拥塞控制• TCP定时管理

信阳师范学院计算机系 24

TCP 传输控制• 传输策略– 滑动窗口机制– 根据接收缓冲区和来自应用的数据确定策略

• 传输控制的实现• 特殊情况及处理办法• 发送/接收策略

信阳师范学院计算机系 25

TCP 传输控制的实现确认号ACK

源端口1028

序列号SEQ

宿端口21

窗口WIN

...头部 ...

发送方 接收方 缓冲区

4k

2k

应用层2k write

应用层 Read 2k

2k

2k1k

SEQ=0

WIN=2048ACK=2048

WIN=0ACK=4096

SEQ=4096

SEQ=2048

发送受阻

应用层3k write

0 4K

ACK=4096 WIN=2048

2k

2k

1k

信阳师范学院计算机系 26

特殊情况及处理办法

• 滑动窗口WIN=0

• 传输 1 byte/ 次问题– 发送1 byte/次: Nagle算法– 接收1 byte/次: Clark解决方法

信阳师范学院计算机系 27

滑动窗口 WIN=0

• 一般策略– 发送方阻塞,停止发送分节

• 特殊情况– 发送紧急数据( urgent data ),立即中断

远程的用户进程– 发送一个字节的分节,声明希望接收的下一

个字节以及窗口大小IP 报头 TCP 报头

一个字节的分节

总长 41Byte

信阳师范学院计算机系 28

发送 1byte /次用户端 编辑器

发送1个字符TCP 头

TCP 头IP 头

IP 头

Telnet

C

IP 头 TCP 头

IP 头 TCP 头 C

接收

确认 ack

更新窗口 win

返回处理结果

处理一个字符需要传送 4 次数据段,占用 162 字节带宽

信阳师范学院计算机系 29

Nagle算法

字符 1 字符 2 字符 3 字符 4 字符 5 字符 6 字符 7 字符 8 字符 9 字符 10 ...

字符 1 字符 2 字符 3 字符 4 字符 5 字符 6 字符 7 字符 8

字符 1 字符 2 字符 3 字符 4

发送 确认

缓存 缓存

确认发送 发送

信阳师范学院计算机系 30

接收 1byte /次

Read Character

Read Character

发送 1Byte

发送 1Byte

Win=0

Win=0

Win=1

Win=1

信阳师范学院计算机系 31

Clark 解决方法

Read Character

发送 4Byte

Win=0

Win=6

信阳师范学院计算机系 32

互补方法• 发送方– 尽量不发送数据含量小的分节

缓存应用层的数据,达到一定量再发送• 接收方– 不请求对方发送短分节延迟窗口变更信息,使接收缓冲区足够大

信阳师范学院计算机系 33

差错重传发送方 接收方

SEQ=1SEQ=2SEQ=3

ACK=4

segment segment segment

segment segment segment segment

segment 超时SEQ=5

SEQ=4SEQ=5SEQ=6SEQ=7

ACK=8

#4 、 #6 、 #7

#5 排序提交

缓存

信阳师范学院计算机系 34

TCP 拥塞控制

• 拥塞原因– 加载到网络的负载大于其自身的能力

• 解决办法– 降低发送方的数据传输速率

旧的分组离开新的分组进入网络

信阳师范学院计算机系 35

产生拥塞的两种情况• 接收方的处理能力不足– 接收容器小

• 网络不够通畅– 传输管道细

信阳师范学院计算机系 36

接收方的处理能力不足

传输网络

小容量接收器

调整传输速率

接收能力接收能力

发送方

信阳师范学院计算机系 37

传输网络

内部拥塞

大容量接收器

调整传输速率

网络不够畅通

网络能力网络能力

发送方

信阳师范学院计算机系 38

拥塞的解决办法• 发送方保持两个窗口– 接收窗口(由 WIN说明)– 拥塞窗口

• 取两者的最小值为发送的字节数• 如何确定拥塞窗口的大小?– 慢速启动算法– 拥塞控制算法举例

信阳师范学院计算机系 39

慢速启动算法拥塞窗口MaxSegL

拥塞窗口MaxSegL

建立连接初始化 发送数据

MaxSegL

超时 2MaxSegL

发送数据超时前收到确认

超时前收到确认

拥塞窗口2MaxSegL

拥塞窗口2MaxSegL

超时

拥塞窗口2nMaxSegL

拥塞窗口2nMaxSegL 发送数据

2nMaxSegL拥塞窗口二进制指数增长至接收窗口大小或超时

信阳师范学院计算机系 40

拥塞控制算法举例

05

101520

2530354045

MaxSegL=1024Threshold0=64K

Threshold1=32K

超时

Threshold14=20K

指数增长 指数增长

线性增长

线性增长

超时

序列号

拥塞窗口

关键参数(临界值,接收窗口,拥塞窗口)

信阳师范学院计算机系 41

TCP 定时管理

• 重发定时器(发送每个数据段同时启动)– 超时前收到确认,关闭计时器– 超时未收到确认,重发该数据段

• 持续定时器(用于解决死锁)• 保活定时器(用于检测连接长时间闲置)• TIMED WAIT 定时器– 2倍分组 TTL ,确保连接端开后分组消失

信阳师范学院计算机系 42

重发超时间隔的确定

• 问题– 取 T1 ,间隔过短,引起不必要的数据重传– 取 T2 ,间隔过长,使得网络性能下降

• 解决办法:动态调整重发超时时间间隔

L2 L4集中 分散

T

往返时间往返时间

概率

T1 T2

信阳师范学院计算机系 43

A B 应答数据 6 ,缓冲区0

<ack=6, buf=0>

<ack=6, buf=4> 应答数据 6 ,缓冲区4

丢失

保持阻塞状态等待分配缓冲区 等待接收数据死锁

解开死锁

持续定时器超时 探测数据段

<ack=6, buf=4>

信阳师范学院计算机系 44

6.4 无连接的 UDP 协议

1 ) UDP协议概述2 ) UDP的端点标识: Port

3 ) UDP的TPDU

4 ) UDP传输服务举例5 ) UDP与TCP的比较

信阳师范学院计算机系 45

1 ) UDP 协议概述• 为应用进程提供无连接的数据传输服务• 适用场合– 事务型应用:一来一往报文交换– 即使出错重传也比建立 / 释放连接开销小

• 由应用层解决纠错问题• 由 RFC768 定义标准

信阳师范学院计算机系 46

2 ) UDP 的端点标识: Port

• 用 216 端口区分不同的应用进程• 发送端

– 分配源端口,指定宿端口,构造 UDP 数据报,交 IP

• 接收端– 匹配 UDP 头部宿端口的应用进程– 匹配成功,数据报排入相应的队列,若端口队列满,则丢弃数据报

– 匹配不成功,丢弃数据报,回送“宿端口不可达”的 ICMP 报文

信阳师范学院计算机系 47

UDP 保留端口举例

应用层

传输层

NAMESERVER

BOOTP

TFTP

SUNRPC

DNS

42 67 69 111 53Port

信阳师范学院计算机系 48

• UDP 协议数据单元– 数据报 datagram

• UDP数据报的封装• UDP头部• UDP伪头部

3 ) UDP 的 TPDU

信阳师范学院计算机系 49

UDP 数据报

IP 头部 UDP 头部

UDP 头部 应用数据

应用数据

应用数据

IP 头部 UDP 头部 应用数据

UDP 数据报的封装

信阳师范学院计算机系 50

UDP 头部

UDP 源端口 UDP 宿端口

UDP 长度 UDP校验和

16bit 16bit

最小值为8

全“ 0” :不选;

全“ 1” :校验和为 0 。

信阳师范学院计算机系 51

UDP伪头部

源 IP 地址

宿 IP 地址

00000000 UDP 长度

32bit

协议 =17

信息取自 IP 层报头,计入校验和,用于检错。

信阳师范学院计算机系 52

4 ) UDP 传输服务举例

• 交换路由信息举例• 用UDP传输RIP报文– 请求路由信息– 广播路由信息

信阳师范学院计算机系 53

UDP 传输服务举例

host

128.1.1.0128.1.2.0

128.1.1.150:20:c5:e2:d4:77

128.1.2.150:a0:24:ea:b3:57

R

128.1.2.100:a0:24:ec:c6:63

信阳师范学院计算机系 54

用 UDP 传输 RIP 报文

Ethernet 头部

IP 头部 UDP 头部

UDP 头部 RIP 报文

RIP 报文

RIP 报文

IP 头部 UDP 头部 RIP 报文

信阳师范学院计算机系 55

路由请求

RIP报文UDP头部IP头部Ethernet头部

信阳师范学院计算机系 56

Opcode=1 Version=1 0

0

Network Address = 0.0.0.0 (default)

0

0

Metric = 16(not reachable)

RIP :请求路由信息Route request

6*4=24

byte

32bit

信阳师范学院计算机系 57

UDP :分配端口

Source Port = 520 Destination Port = 520

Length = 32 Checksum = F57C

16bit 16bitRIP

RIP 报文( 24 byte )

信阳师范学院计算机系 58

Version= 4

(4bit)

IHL= 20

(4bit)

Type of Service= 0x00(8bit)

Total Length = 52(16bit)

Identification = 10831(16bit)

Flags= 0x4(3bit)

Fragment Offset = 0(13bit)

Time to Live = 1(8bit)

Protocol= 17(UDP)

(8bit)

Header Checksum = 5a4a(16bit)

Source Address = 128.1.2.15 (RR)(32bit)

Destination Address = 128.1.2.255(broadcast)(32bit)

IP :赋予 IP 地址

UDP 数据报( 32byte )

信阳师范学院计算机系 59

62bit 2bit 6Byte 6Byte 2Byte 46 ~ 1500Byte 4Byte

先导 11 目的地址 源地址 类型 数据 校验和

Ethernet :赋予以太网地址

ff:ff:ff:ff:ff:ff

0:a0:24:ea:b3:57

0800(IP)

IP 分组 (52byte)

信阳师范学院计算机系 60

RIP报文UDP报头IP 报头Ethernet报头

路由响应

信阳师范学院计算机系 61

RIP :广播路由信息

Opcode=2 Version=1 0

0

Network Address = 128.1.1.0 (Net1)

0

0

Metric = 1

Route reply

6*4=24

byte

32bit

信阳师范学院计算机系 62

UDP :分配端口

Source Port = 520 Destination Port = 520

Length = 32 Checksum = 7388

16bit 16bitRIP

RIP 报文( 24 byte )

信阳师范学院计算机系 63

Version= 4

(4bit)

IHL= 20

(4bit)

Type of Service= 0x00(8bit)

Total Length = 52(16bit)

Identification = 10832(16bit)

Flags= 0x4(3bit)

Fragment Offset = 0(13bit)

Time to Live = 1(8bit)

Protocol= 17(UDP)

(8bit)

Header Checksum = 594a(16bit)

Source Address = 128.1.2.15 (RR)(32bit)

Destination Address = 128.1.2.255(broadcast)(32bit)

IP :赋予 IP 地址

UDP 数据报( 32byte )

信阳师范学院计算机系 64

62bit 2bit 6Byte 6Byte 2Byte 46 ~ 1500Byte 4Byte

先导 11 目的地址 源地址 类型 数据 校验和

Ethernet :赋予以太网地址

ff:ff:ff:ff:ff:ff

0:a0:24:ea:b3:57

0800(IP)

IP 分组 (52byte)

信阳师范学院计算机系 65

5 ) UDP 与 TCP 的比较• TCP– 面向连接的传输服务– unicast

• UDP– 无连接的传输服务– broadcast/multicast

信阳师范学院计算机系 66

课程总结• 两个典型的传输层协议– TSAP :保留端口 / 自由端口– TPDU : TCP 数据段 /UDP 数据报

• TCP– 连接管理

• 三次握手建立 / 释放连接– 传输控制

• 确认重传 / 滑动窗口 / 拥塞控制 / 定时管理

信阳师范学院计算机系 67

思考题• TCP如何实现传输端点标识?• 什么是保留端口和自由端口,如何区分?• 列出常用的 Internet 应用进程端口号。• 为什么要设置拥塞窗口?• 什么是拥塞控制的关键参数?如何实现

拥塞控制?• 比较 TCP 与 UDP.