运输层主要内容
1. 传输层工作原理:
- 多路复用与多路分解
- 可靠数据传输
- 流量控制
- 拥塞控制
2. Intrnet传输层协议:
- UDP:无连接传输
- TCP:面向连接的可靠传输
- TCP的拥塞控制
一.概述和传输层服务
1.1 概述
- 1. 运输层:将从应用程序接收到的报文分成多个小块,各个小块均加上运输层首部以生成运输层报文段,即转换成运输层分组。(运输层分组也称为运输层报文段)
- 2. 应用程序数据传输—图示1:
- 发送端:
报文
报文段
应用程序
运输层
网络层1
- 图示2
- 中间传输:
数据包
数据包
网络层1
...1
路由器
...2
网络层2
网络层将运输层的报文段封装为数据包。
中间路由器作用于网络层字段,不会检查运输层报文段的字段。
- 图示3
- 接收端:
报文段
数据
网络层2
运输层2
应用程序
1.2 传输服务和协议
- 1. 运输层协议作用:为不同主机应用进程提供了逻辑通信功能。
计算机网络中的逻辑通信:在这种方式下,发送方不同应用进程可以使用同一个运输层协议来传送数据,而接收方的运输层能够在剥去报文的首部后将数据正确交付到目的应用程序。
逻辑通信的实现需要运输层提供端到端的逻辑连接,并且进行差错检测等操作。在计算机网络中,虽然两个运输层之间并没有一条水平方向的物理连接,但是它们之间的通信却好像是沿水平方向传送数据。
- 2. 运输层协议实现位置:
端系统之中
。 - 3.运输层协议:TCP和UDP协议。
1.3 传输层 vs. 网络层
以下面图例作类比:
交付
交付
交付
交付
分发
分发
分发
写信人1
收信人Bob
写信人2
写信人...
邮政服务
收信人Ann
收信人1
收信人...
其中”邮政服务“左右两侧分别为两个家庭的所有成员,代表两个主机(端系统)
- 收信人Bob和Ann:运输层协议
- 邮政服务:代表网络层协议
- 信封内容(字符):应用层报文
- 进程:两家人的亲戚关系。
1.4 Internet传输层协议
- UDP(用户数据报协议):不可靠,无连接服务。
- TCP(传输控制协议):可靠,面向连接服务。
- 面向连接的服务和面向无连接的服务
- 面向无连接的服务
指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包(报文分组)送到线路上,由系统自主选定路线进行传输
面向连接的服务
通信双方在通信时,要事先建立一条通信线路,其过程有建立连接、使用连接和释放连接三个过程
- 有应答与无应答的服务
- 有应答服务
指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不是由用户实现。
所发送的应答可以是肯定应答,也可以是否定应答,通常在接收到的数据有错误时发送否定应答。
无应答服务
指接收方收到发送的数据后,不向发送方反馈任何信息,该服务是不透明的,即不是由用户实现,
而是由通信系统自动实现。因此,该服务不能保证可靠性
- 可靠与不可靠的服务
- 可靠服务
指网络具有纠错、检错机制,能保证数据正确、可靠地传送到目的地。
不可靠服务
指网络只是尽量正确、可靠地传送,但不能保证数据正确、可靠地传送到目的地。
如文件传输服务就是一种有应答服务,客户端收到服务器发送的页面文件后不给出应答,属于不可靠服务
二. 多路复用与多路分解(解复用)
2.1 概述
- 前置:
网络层IP协议(国际协议):是一种尽力而为的交付服务(Best-Effort Delivery Service),基于每台主机有一个IP地址提供不可靠服务
。 - 定义:
多路复用:将运输层报文段中数据交付到正确套接字的工作。
多路分解(解复用):包括从源主机不同套接字收集数据块,并封装上首部信息(用于在以后分解),再将报文段传递到网络层的所有工作。
- 多路复用的要求:
- 套接字有唯一标识符
- 每个报文段有 特殊字段指示交付到的套接字。
运输层报文段中的源与目的端口字段:
- 流程图示:
2.2 无连接与面向连接的多路分解(解复用)
- 1. 无连接的多路分解(解复用)
2.面向连接的多路分解(解复用)
2.3面向连接的多路复用
*2.4 Web服务器与TCP
- 前置
连接套接字与进程之间并不是一 一对应关系。
如今的高性能web服务器通常只使用一个进程,但是为每一个新的客户连接创建一个具有新连接套接字的新线程(线程可被看作一个轻量级的的子进程)。对于这样一台服务器,任意给定时间内都有可能有(具有不同标识的)许多连接套接字连接到相同的进程。
- 使用持续HTTP:客户与服务器之间经过同一个服务器套接字交换HTTP报文。
- 使用非持续HTTP:每一对请求/响应都创建一个新的TCP连接并随后关闭(每次创建关闭不同的套接字)。频繁创建关闭套接字会影响web服务器的性能。
- 多线程Web Server: