第6章.传输层
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1.1 提供给高层的服务-4
a) 传输服务原语可以通过调用库过程(函数)来实现, 从而使这些原语独立于网络服务原语。在不同的 网络之间,网络服务原语可能有很大差异。 改变网络服务,更换一组库过程。
a) 应用程序可以采用标准的原语集来编写。传输层 起着将子网技术、设计和各种缺陷与上层隔离的 作用。
– 连接有三个阶段:建立连接、数据传输和释放 连接。
– 编制和寻址。 – 流控制。 b) 无连接的传输服务与无连接的网络服务类似。 c) 既然如此相似,为什么分独立的二层?
6.1.1 提供给高层的服务-3
a) 传输层的代码在用户机器上运行,但是网络层主 要运行在承运商控制的路由器上。用户在网络层 上并没有真正的控制权。如果服务不可靠,怎么 办?传输层使得传输更加可靠。 网络层连接意外终止时,传输层可以建立新的连 接。然后从中断的地方继续发送数据。 丢失的分组和损坏的数据可以在传输层上检测出 来,进行补偿。
6.1.4 一个Internet文件服务器-2
wk.baidu.com
#include <sys/types.h> #include <sys/fcntl.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h>
b) 服务器解除阻塞,送回CONNECTION ACCEPTED TPDU。客户解除阻塞,连接建立。
c) 使用SEND和RECEIVE交换数据。 在传输层上发送的每个数据分组都要被确认。这些 确认由传输实体使用网络层协议来管理。还需要关 心定时器和重传问题。这些机制对于传输层用户不 可见。
6.1.2 传输服务原语-5
6.1.3 伯克利套接字-3
a) ACCEPT:阻塞,等待一个进来的连接。当一个请 求连接的TPDU到来的时候,传输实体创建一个新 的套接字并返回一个与其关联的文件描述符,这个 新的套接字与原来的套接字具有同样的属性。然后 服务器可以复制一个进程或者线程来处理这个新套 接字上的连接,而服务器自身又回去继续等待原套 接字上的下一个连接。
主动试图建立连接
户
通过该连接发送数据
方
执
从该连接接收数据
行
释放该连接
图6.5 TCP的套接字原语
6.1.3 伯克利套接字-2
a) 服务器端 b) SOCKET:创建一个end point,分配表空间。调用
参数规定地址格式、服务类型以及协议。返回文件 描述符。 c) BIND:为套接字分配地址。一旦服务器已经为一 个套接字绑定了一个地址,则远程客户就能够与它 建立连接。 d) LISTEN:分配空间。以便对进来的连接请求进行 排队,因此多个客户可以同时发起连接请求。
服务器 状态序列
客户 状态序列
执行传输 层原语
图6.4 一个简单的连接管理方案
分组到达引 起的变迁
6.1.3 伯克利套接字
a) 以下原语广泛应用于Internet程序设计中。
服
创建一个新的通信端点
务 器
将一个本地地址关联到一个套接字上
执
宣布愿意接受连接;给出队列大小
行
阻塞呼叫者,直到连接尝试到达
客
第六章、传输层
• 传输层不仅仅是另外的一层,它是整个协议层次 的核心所在。它的任务是在源机器和目标机器之 间提供可靠的、性价比合理的数据传输功能,并 且与当前所使用的物理网络完全独立。如果没有 传输层,那么分层协议的整个概念将变得没有意 义。
6.1 传输服务
6.1.1 提供给高层的服务-2
• 二种服务:面向连接、无连接。 a) 面向连接的传输服务与面向连接的网络服务类似。
6.1.4 一个Internet文件服务器
• Internet文件服务器和一个客户。 服务器代码可以被编译成二进制代码,并且在任何 连接到Internet的UNIX系统上运行。 客户代码也可以被编译,并且可在Internet上任何地 方的其他UNIX机器上运行。客户代码在执行的时 候需要正确的参数,以便获取服务器上的任何文件, 前提条件是服务器本身必须能够访问这些文件。客 户获取到的文件被送到标准输出。
6.1.2 传输服务原语-2
• 以下5个原语给出了一个面向连接的传输接口应该要 完成的一些本质工作。 – 服务器执行LISTEN原语。
– 客户执行CONNECT原语,连接请求TPDU送到服
务器。
阻塞,直到有某个进程试图与它建立连接。 主动尝试建立一个连接。
图6.2一个简单传输服务的原语
6.1.2 传输服务原语-3
b) OSI的1-4层:传输服务提供者。 c) OSI的5-7层:传输服务的用户。
6.1.2 传输服务原语
• 网络服务是不可靠的,(面向连接的)传输服务是可 靠的。这正是传输层的目标:在不可靠的网络上提 供可靠的服务。
• 网络服务仅仅被传输实体使用。通常用户不会编制 自己的传输实体。因此,很少有用户或程序能直接 看到网络服务原语。相反,很多程序(和程序员) 可以看到传输服务原语。所以,传输服务必须简便 易用。
6.1.3 伯克利套接字-4
a) 客户端 b) SOCKET:创建一个套接字。 c) BIND:不调用,服务器不关心客户的地址。 d) CONNECT:阻塞调用方,并且主动发起连接过程。
当接收到服务器发送过来的正确的TPDU的时候, 客户进程被解除阻塞,于是连接就建立起来了。现 在双方都可以使用SEND或者RECV,在新建立起 来的全双工连接上发送或者接收数据。
a) 释放连接 b) 非对称断开连接
任何一方执行DISCONNECT,向对方发送 DISCONNECT TPDU,另一方收到后断开。 a) 对称断开连接 单独断开,相互独立。一方执行DISCONNECT后, 不发送,仍能接收。双方执行DISCONNECT,才 断开连接。
6.1.2 传输服务原语-6
• TPDU(Transport Protocol Data Unit,传输协议数据 单元)代表从一个传输实体发送至另一个传输实体 的消息
帧头部
分组头部 TPDU头部
TPDU有效载荷
图6.3 TPDU、分组和帧的嵌套关系
6.1.2 传输服务原语-4
a) 客户执行CONNECT,发送CONNECTION REQUEST TPDU到服务器。