计算机网络 运输层(上)

Posted My heart will go ~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络 运输层(上)相关的知识,希望对你有一定的参考价值。

传输层(上)

1. 运输层协议概述

1.1 进程之间的通信

传输层属于面向通信部分的最高层,用户功能中的最低层。网络中只有边缘部分的主机才有运输层。
从IP层来说,通信的两端是两台主机。从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。(网络层为主机端提供逻辑通信,运输层为进程之间提供逻辑通信)而运输层向高层用户屏蔽了下面网络核心的环节。
端口的分用与复用:


运输层使用不同协议对上层的表现就体现出差别:
使用TCP协议时:尽管下面网络不可靠,这种逻辑通信信道相当于全双工可靠信道。
使用无连接的UDP时:逻辑信道是一条不可靠信道。

1.2 运输层的两个主要协议

TCP/IP 的运输层有两个主要协议:用户数据报协议 UDP;传输控制协议 TCP。
两者异同别:
(两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU)
数据在传输过程中,路由器不知道运输层是否建立连接,逻辑信道不知道经过了哪些路由器。

1.3 运输层的端口

提出问题:计算机中的进程时用进程标识符来标志,而进程标标识符不应该由操作系统指派(因为不同的计算机有不同的操作系统)。
解决方法:用统一的方法对TCP/IP 体系的应用进程进行标志。

需要解决的问题:1.进程的创建和撤销是动态的,发送方无法识别其他机器的进程。2.可能会改换接收报文的进程,但不需要知道所有的发送方。3.需要利用目的主机的功能来识别终点,不需要知道进程。
解决方案:在运输层使用协议端口号,简称端口。

软件端口:在协议栈层间的抽象的协议端口。(协议进程与实体交互的地址
硬件端口:路由器或交换机上的端口。(不同硬件交互的接口
端口用一个16位端口号标志,允许有65535个不同端口号。

两大类,三种类型的端口:

2.用户数据协议

2.1 UDP概述

UDP在IP之上增加了很少的功能:1.复用和分用 2.差错检测
UDP 的主要特点:

  1. UDP 是无连接的,发送数据之前不需建立连接,减少了开销和时延。
  2. UDP 使用尽最大努力交付,不保证可靠交付,不需要维持复杂的连接状态表。
  3. UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。一次交付一个完整的报文
  4. UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。
  5. UDP 支持一对一、一对多、多对一和多对多的交互通信。
  6. UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。
    应用程序必须选择合适大小的报文,过长或过短都会降低IP层的效率。

2.2 UDP的首部格式

首部有8个字节

UDP通信是无连接的,所以不需要套接字建立连接。
计算检验和时,UDP首部加上12字节的伪首部。

3.传输控制协议 TCP 概述

3.1 TCP最主要特点

是面向连接的,提供可靠交付的服务,一条TCP连接只能点对点通信,TCP提供全双工通信,面向字节流,不能保障收到和发送的数据块大小对应,但字节流完全一样。
TCP不关心多长的报文发送给TCP缓存,对连续的字节流分段形成TCP数据报。
TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP的报文长度是进程给出的

3.2 TCP连接

TCP 连接的端点叫做套接字 (socket) :端口号拼接到IP地址上形成套接字。

TCP连接是由协议软件提供的一种抽象。同一个IP地址可以有多个不同的TCP连接,同一个端口号也可以出现在多个不同的TCP连接中。

4.可靠传输的工作原理

存在问题:IP网络提供的是不可靠的传输。
理想传输条件:1.传输信道不产生差错 2.接收方总来得及处理收到的数据。
但是实际的网络不具备以上两个条件,所以必须用一些可靠传输协议实现信道的可靠传输。

4.1 停止等待协议

介绍:每发送完一个分组就停止发送,等待对方确认,收到确认后再发送下一个分组。全双工下双方既是发送方,又是接收方。下面的举例假设A为发送方,B为接收方。

问题:B接收M1时检测出了差错,就丢弃M1;或者M1传输过程中丢失了,B就什么都不会做。所以A必须重发分组,直到B正确收到为止,这样才是可靠通信。那么A如何直到B是否正确收到M1呢?
解决方法:超时重传。1.A为每个发送的分组设置了超市计时器,2.A再计时器到期之前收到确认就撤销计时器,发送下一个分组M2,。 3.A在超过计时器规定时间没有收到B确认,就重发。

问题:如果分组到达B,但是确认给丢失或者延迟了,造成A未收到确认,A于是重发分组。B收到重复的M1,如何直到收到重复分组要丢弃呢?
解决方法:编号。A对每个发送的分组进行编号,B收到相同编号的分组,则丢弃,回送确认。并且B对发送的确认也进行编号。然后A再根据确认的编号避免重发。

4.2 连续ARQ协议

ARQ(自动重传请求):上述的可靠传输协议:重传的请求时自动进行的,接收方不需要请求发送方重传某个出错的分组。

停止等待协议简单,但是信道利用率太低,计算方法为下图:

尤其是RTT远大于Td时。所以我们又引出了流水线传输:发送方连续发送多个分组,使信道上一直有数据不间断地传送。

连续ARQ协议:每次发送多个分组,使用滑动窗口协议控制发送、接收的分组数目和编号;每收到一个确认,窗口就向前滑动,接收方采用累计确认的方式。采用回退N方法进行重传。
累计确认:对按序到达的最后一个分组发送确认,表示到这个分组为止所有分组已经正确收到。优点:容易实现。 缺点:不能反映出接收方是否正确收到所有分组信息。
回退N:例:发送了5个分组,第3个丢失了,就回退回去,重发后面的3个分组。由下图可见,未按序到达的分组直接被丢弃。

可靠通信的具体实现:TCP的每一端设置两个窗口:发送窗口和接收窗口,TCP的四个窗口经常处于动态变化之中。可靠传输机制用字节的序号进行控制。
连续ARQ协议与停止等待协议:

滑动窗口协议比较复杂,是TCP协议的精髓所在。连续ARQ规定,每收到一个确认,就把窗口向前滑动一个分组的位置。

以上是关于计算机网络 运输层(上)的主要内容,如果未能解决你的问题,请参考以下文章

运输层

计算机网络概括

计算机网络(谢希仁版)——第五章回顾

ICMP差错报文

计算机网络之数据链路层

计网:运输层