计算机网络第六章 2讲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.3 Internet传输协议
⏹两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU (Transport
Protocol Data Unit)。
⏹TCP/IP的传输层有两个不同的协议:(1) 用户数据报协议UDP (User Datagram Protocol)
(2) 传输控制协议TCP (Transmission Control Protocol)
⏹TCP 传送的数据单位协议是TCP 报文段(segment) UDP 传送的数据单位协议是UDP
报文或用户数据报。
⏹UDP 在传送数据之前不需要先建立连接。对方的传输层在收到UDP 报文后,不需要给
出任何确认。虽然UDP 不提供可靠交付,但在某些情况下UDP 是一种最有效的工作方式。
⏹TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于TCP 要提供可靠的、
面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
⏹强调两点: 1. 传输层的UDP 用户数据报与网络层的IP数据报有很大区别。IP 数据报要
经过互连网中许多路由器的存储转发,但UDP 用户数据报是在传输层的端到端抽象的逻辑信道中传送的。2. TCP 报文段是在传输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的传输层是否建立了TCP 连接
6.3 1 用户数据报协议UDP
6.3.1.1 UDP (User Datagram Protocol)概述RFC 768
⏹UDP 只在IP 的数据报服务之上增加了很少一点的功能,即端口(端口用来标志应用层的
进程)的功能和差错检测的功能(可选功能)。
⏹UDP是一个简单的传输协议; 提供’best effort’服务, UDP报文可能会丢失和乱序;
⏹虽然UDP 用户数据报只能提供不可靠的交付,但UDP 在某些方面有其特殊的优点。
⏹发送数据之前不需要建立连接(结束时也就无连接释放),因而开销小和发送数据前
的延迟小收发双方不需要握手, 每个UDP报文的处理都独立于其它报文
⏹UDP 的主机不需要维持复杂的连接状态表。因为不使用拥塞控制,也不保证可靠
交付.
⏹UDP 用户数据报只有8个字节的首部开销。比TCP的20个字节的首部短
⏹没有拥塞控制, 可以尽快发送, 所以网络出现的拥塞不会使源主机的发送速率降
低。这对某些实时应用是很重要的。很多实时应用(IP电话, 实时视频会议等)要求
源主机以恒定的速率发送数据, 并且允许在拥塞时丢失一些数据, 但却不允许数
据有太大的时延.
⏹UDP尤其适用的一个领域是在客户-服务器的情形下.远过程调用RPC(Remote
Procedure Call)和UDP是一对好搭档.(无连接, 无流控,无错控,无重传,短请求短回
应), 如RIP路由信息周期发送,DNS避免TCP连接建立延迟,SNMP 当网络拥塞
时,UDP比用可靠的,具有拥塞控制的TCP效果好.
⏹RTP(Real-Time transport Protocol 实传输协议) RFC 1889
RTP在协议栈中位置有点古怪.最终RTP被放在用户空间中,并且运行在UDP之上. 这
种设计结果是, 你很难说清RTP位于哪一层上.RTP无流控,无错控,无确认, 无请求重
传机制.
间
操作系
统内核
(a)RTP在协议栈中的位置(b)分组嵌套情况
使用UDP和TCP协议的各种应用和应用层协议
6.3.1.2 UDP 用户数据报的首部格式
用户数据报UDP 有两个字段:数据字段和首部字段。首部字段有8 个字节,由4 个子字段(域)组成,每个子字段都是两个字节。
在计算检验和时,临时把“伪首部”和用户数据报连接在一起。伪首部仅仅是为了计算检验和, 伪首部既不向上递交也不向下传送。: 17—IP协议头部中的协议字段,对应UDP; 6—IP协议头部中的协议字段,对应TCP
6.3.2 传输控制协议
TCP(transmission control protocol)
IP 数据报
字节 4 4 1 1 2
计算 UDP 检验和的例子
10011001 00010011 → 153.19
00001000 01101000 → 8.104 10101011 00000011 → 171.3 00001110 00001011 → 14.11 00000000 00010001 → 0 和 17
00000000 00001111 → 15 00000100 00111111 → 1087 00000000 00001101 → 13
00000000 00001111 → 15
00000000 00000000 → 0(检验和) 01010100 01000101 → 数据
01010011 01010100 → 数据 01001001 01001110 → 数据
01000111 00000000 → 数据和 0
(填充) 10010110 11101011 → 求和得出的结果
01101001 00010100 → 检验和
12 字
伪首部
8 字节 UDP 首部 7 字节 数据 按二进制反码运算求和 将得出的结果求反码
6.3.2.1 TCP 概述RFC 793 RFC1122 RFC1323
完成任务: 判断是否超时, 重传, 顺序组装等功能, 提供IP无法提供的可靠性.
为获得TCP服务, 发收双方必须首先创建套接字=IP+Port. 一个套接字有可能同时被用于多个连接, 所以连接可以用两端的套接字标识符来标识, 即(socket1, socket2). 1024以下的端口号被称为知名端口(well-known port), 被保留用于一些标准的服务.
所有的TCP连接都是全双工的,并且是点到点的. 所谓全双工----同时可在两个方向上传输数据. 所谓点到点----每个连接恰好有两个端点. TCP不支持多播或广播传输模式.
发送端接收端
应用进程应用进程
发送TCP报文段