-
进程之间的通信
·运输层向它上面的应用层提供通信服务,属于面向通信部分的最高层,同时也是用户功能中的最低层。
·只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
·两台主机进行通信就是两台主机中的应用进程互相通信。
·运输层的作用:为相互通信的应用进程提供了逻辑通信。(网络层是为主机之间提供逻辑通信)
·复用是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据需要加上适当的首部);分用是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程。 -
运输层的两个主要协议:用户数据报协议 UDP;传输控制协议 TCP。
·采用TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道;采用无连接的UDP协议时,这种逻辑信道仍是一条不可靠信道。
·运输协议数据单元 TPDU:两个对等运输实体在通信时传送的数据单位。(TCP 报文段; UDP 用户数据报)
-
运输层的端口
·问题:进程的创建和撤销都是动态的,发送方无法识别其他机器上的进程。需要利用目的主机提供的功能来识别终点,而不需要知道实现这个功能的进程。
·协议端口号:虽然通信的终点是应用进程,但可以把端口想象是通信的终点,只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。
·软件端口:应用层的各种协议进程与运输实体进行层间交互的一种地址。 (硬件端口是不同硬件设备进行交互的接口)
·端口用一个 16 位端口号进行标志;端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
·端口号的分类:
①服务器端使用的端口号:
熟知端口号(数值为 0 ~ 1023;指派给TCP/IP最重要的一些程序);
登记端口号(数值为 1024 ~ 49151;为没有熟知端口号的应用程序使用的)。
②客户端使用的端口号(数值为 49152 ~ 65535,留给客户进程选择暂时使用) -
用户数据报协议 UDP
·特点
①UDP 是无连接的:发送数据之前不需要建立连接,减少了开销和发送数据之前的时延。
②UDP 使用尽最大努力交付:不保证可靠交付,因此主机不需要维持复杂的连接状态表。
③UDP 是面向报文的:对应用层交下来的报文,既不合并也不拆分,保留这些报文的边界,一次交付一个完整的报文。 报文太长或太短都会降低IP层的效率。
④UDP 没有拥塞控制:网络出现的拥塞不会使源主机的发送速率降低。
⑤UDP 支持一对一、一对多、多对一和多对多的交互通信。
⑥UDP 的首部开销小:只有 8 个字节,比 TCP 的 20 个字节的首部要短。
·首部格式(8 个字节,4 个字段,每个字段 2 个字节)
①伪首部:12字节,用于计算检验和。
②源端口:源端口号;在需要对方回信时选用;不需要时可用全0。
③目的端口:目的端口号;在终点交付报文时必须使用。
④长度:UDP用户数据报的长度,最小值是8(仅有首部)。
⑤检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃。(UDP 的检验和是把首部和数据部分一起都检验) -
传输控制协议 TCP
·主要特点:
①TCP 是面向连接的运输层协议。
②每一条 TCP 连接只能有两个端点,每一条 TCP 连接只能是点对点的(一对一)。
③TCP 提供可靠交付的服务。
④TCP 提供全双工通信。
⑤面向字节流。“流”指的是流入或流出进程的字节序列。TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。
·TCP 连接是一条虚连接而不是一条真正的物理连接。
TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
·TCP 连接的端点叫做套接字或插口。端口号拼接到IP 地址即构成了套接字。
①套接字 socket = (IP地址 : 端口号) ,如= (192.169.1.20 : 2028)。
②每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即
TCP 连接 ::= {socket1, socket2} = {(IP1: port1),(IP2: port2)} -
可靠传输的工作原理
·理想的传输条件:传输信道不产生差错;不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据。
·停止等待协议(自动重传请求ARQ):每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
·信道利用率:当往返时间 RTT 远大于分组发送时间 T D T_D TD 时,信道的利用率非常低。
·连续ARQ协议
①发送方一次可以发出多个分组。每收到一个确认,发送方就把发送窗口向前滑动。
②接收方一般采用累积确认的方式(对按序到达的最后一个分组发送确认)。
③发送方对于丢失的分组,采用回退N(Go-Back-N)方法进行重传(已发送过的 N 个分组)。 -
TCP报文段的首部格式(前 20 个字节固定,后 4n 字节可选)
·源端口和目的端口:各占2字节。
·序号:4字节,传输的数据流中每一字节都有一个编号,序号字段的值是本报文段所发送的数据的第一个字节的序号。
·确认号:4字节,期望收到对方下一个报文段的第一个数据字节的序号。
(确认号=N,则表明到序号N-1为止所有数据都正确收到)
·数据偏移:4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远(即首部长度)。
·保留:6位,保留为今后使用,目前置0。
·紧急URG:当URG=1时,表明紧急指针字段有效,告诉系统此报文中有紧急数据,应尽快传送(相当于高优先级的数据)。
·确认ACK:当ACK=1时确认号字段有效(连接建立后所有数据报文段都把ACK置为1)。
·推送PSH:当收到PSH=1的报文时,就尽快交付接收应用进程,而不再等到整个缓存都填满后再向上交付。
·复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后重新建立运输连接。
·同步SYN:在连接建立时用来同步序号;当SYN=1而ACK=0时,表明这是一个连接请求报文;对方若同意建立连接,则应在响应报文中使SYN=1,ACK=1。
·终止FIN:用来释放一个连接,当FIN=1时表示此报文段的发送方已经发送完毕,并要求释放连接。
·窗口:2字节,指发送本报文段一方的接收窗口。窗口值作为接收方让对方设置其发送窗口的依据,指出允许对方发送的数据量。
·校验和:2字节,检验和字段检验的范围包括首部和数据两部分,计算检验和时应加上12字节伪首部。
·紧急指针:2字节,在URG=1时才有意义,指出本报文段中的紧急数据的字节数。
·选项:长度可变,最长40字节。
(最大报文段长度 MSS:TCP 报文段中的数据字段的最大长度) -
TCP可靠传输的实现
·TCP 使用流水线传输和滑动窗口协议实现高效、可靠的传输;滑动窗口是以字节为单位的。
①发送缓存用来暂时存放:发送应用程序传送给发送方 TCP 准备发送的数据;TCP 已发送出但尚未收到确认的数据。
②接收缓存用来暂时存放:按序到达的、但尚未被接收应用程序读取的数据;不按序到达的数据。
·TCP 超时重传时间的选择
①加权平均往返时间 R T T S RTT_S RTTS(第一次取所测量到的 RTT 样本值)
②RTT 的偏差的加权平均值 R T T D RTT_D RTTD (第一次取为测量到的 RTT 样本值的一半)
③超时重传时间RTO
④Karn 算法:在计算平均往返时间 RTT 时,只要报文段重传了,就不采用其往返时间样本。
修正的Karn算法:新的 RTO = γ × (旧的 RTO) ,γ常取2。
·选择确认SACK:对于不连续数据,只重传缺少的而不重传已到达的。
①建立 TCP 连接时,在 TCP 首部的选项中加上“允许 SACK”的选项。
②最多只能指明 4 个字节块的边界信息(8个边界,左闭右开)。 -
TCP的流量控制:让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
·利用滑动窗口实现:滑动窗口的单位是字节。
·持续计时器:防止互相等待的死锁。
①只要 TCP 连接的一方收到对方的零窗口通知,就启动该持续计时器;
②若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值;
③若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器;
④若窗口不是零,则死锁的僵局就可以打破了。 -
TCP传输效率
·糊涂窗口综合征:每次仅发送一个字节或很少几个字节的数据时,有效数据传输效率变得很低的现象。(解决方法:让接收方等待一段时间,使得接收缓存有足够空间容纳一个最大的报文段,或等接收缓存中有一半空闲空间。–>使用 Nagle 算法)
·Nagle算法
①若发送应用进程把要发送的数据逐个字节地送到 TCP 的发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。
②当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文段发送出去,同时继续对随后到达的数据进行缓存。
③只有在收到对前一个报文段的确认后才继续发送下一个报文段。
④当到达的数据已达到发送窗口大小的一半或已达到报文段的最大长度时,就立即发送一个报文段。 -
TCP的拥塞控制
·网络拥塞条件:∑ 对资源需求 > 可用资源
·拥塞控制和流量控制的区别
·拥塞控制的一般原理
·监测网络拥塞的主要指标:由于缺少缓存空间而被丢弃的分组的百分数;平均队列长度;超时重传的分组数;平均分组时延;分组时延的标准差。
·判断拥塞的依据:出现了超时。
·拥塞窗口:大小取决于网络的拥塞程度,并且动态地在变化;发送方让自己的发送窗口等于拥塞窗口。 -
TCP的拥塞控制方法:慢开始;拥塞避免;快重传;快恢复。
①慢开始:在每收到一个对新的报文段的确认后,可以把拥塞窗口增加最多一个 SMS(发送方的最大报文段)的数值(N 是原先未被确认的、但现在被刚收到的确认报文段所确认的字节数)。
·使用慢开始算法后,每经过一个传输轮次,拥塞窗口 cwnd 就加倍。一个传输轮次所经历的时间其实就是往返时间 RTT。
·“传输轮次”强调:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。
·慢开始门限 ssthresh 的用法
②避免拥塞:让拥塞窗口 cwnd 缓慢地增大,每经过一个传输轮次,拥塞窗口 cwnd = cwnd + 1。
③快重传:要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。
④快恢复:(收到连续三个重复的确认时可能没有发生拥塞,不执行慢开始算法)
-
AIMD(加法增大,乘法减小 )算法
·加法增大AI:在拥塞避免阶段,拥塞窗口是按照线性规律增大的。
·乘法减小MD:当出现超时或3个重复的确认时,就要把门限值设置为当前拥塞窗口值的一半,并大大减小拥塞窗口的数值。 -
TCP拥塞控制流程
·发送窗口的上限值 = Min [rwnd, cwnd] -
主动队列管理AQM
·路由器的队列通常采用先进先出 (FIFO) 规则与尾部丢弃策略。队列已时,以后再到达的所有分组将都被丢弃。分组丢弃使发送方出现超时重传,使 TCP 连接进入拥塞控制的慢开始状态。
·全局同步:若发生了路由器中的尾部丢弃,可能会同时影响到很多条 TCP 连接,结果使这许多 TCP 连接在同一时间突然都进入到慢开始状态。
·主动队列管理 AQM :不等到路由器的队列长度已经达到最大值时才丢弃后面到达的分组,而是在队列长度达到某个值得警惕的数值时(即当网络拥塞有了某些拥塞征兆时),就主动丢弃到达的分组。
·实现方法:随机早期检测 RED
-
TCP运输连接的三个阶段:连接建立,数据传送,连接释放。
①连接建立:采用客户服务器方式。建立连接的过程叫握手,需要在客户和服务器之间交换三个 TCP 报文段。
·三报文握手
②连接释放:通信双方都可释放连接,过程是四报文握手。
·A 必须等待 2MSL 的时间:保证 A 发送的最后一个 ACK 报文段能够到达 B;防止 “已失效的连接请求报文段”出现在本连接中。
计算机网络笔记(六)——运输层
最新推荐文章于 2023-12-30 23:26:45 发布