【计算机网络】传输层知识要点

时间:2020-12-11 14:35:06

传输层,又叫运输层,transportation。核心是向应用层、会话层、表示层提供通信服务;它覆盖在网络层基础上,抹去了网络和主机通信这两个概念,通信的端点是应用进程;现在的操作系统都提供传输层服务,包含了差错检测,具有一定可靠性,而非IP数据报只检验首部。

传输层传输的也是数据报,这一层数据报包裹在IP数据报里面,到达终点后,传输层将数据报交付应用层的某个端口,端口是传输层的概念,它和OS中的某个进程相对应。端口号和进程ID不一样,不是一个东西。像很多软件都有端口映射,即使用传输层的协议,它是应用层的各种协议进程与运输实体进行层间交互的一种地址 。服务器端口号位于0~1023之间,剩下的脚客户端端口号,可以随意指定和使用。常用的应用层协议都是固定的端口号。

一、UDP

UDP面向报文而非面向连接,属于不可靠传输,丢失信息不负责重传;每次都交付一个完整的报文,没有拥塞控制,支持多播。

UDP协议报文的首部为8个字节,源端口、目的端口、长度、检验和,各占两个字节。检验和的计算使用到了伪首部,伪首部中包含了源IP地址,目的IP地址,报文长度等信息,但是这个并不向上或向下传递,所以就在计算完检验和之后就丢弃了。且检验和的计算是包含了数据部分在内一起计算的。
之所以是伪首部,是因为伪首部中的信息在IP数据报中都可以找到,所以不用再传输第二遍,接收方在得到UDP数据报的时候就能够知道伪首部中的所有的信息。

二、TCP

TCP是整个网络传输过程中保证可靠传输的唯一的路径,各个层中的检验和不算在内。它面向连接,点对点通信,全双工,面向字节流。使用套接字即ip地址和端口号的组合作为通信的两端。TCP所要完成的工作就是,确保接收方一定接收到了数据,而且当发送方的速率不论是多少,接收方都要能够接收得住。

TCP报文段的首部信息:
源端口、目的端口
序号,即字节流到底是第一个分组
确认号,是接收方返回给发送方的序号
数据偏移,即TCP报文首部的长度
紧急URG,紧急数据需要优先发送的
推送和复位,由于必须填满缓存才会发送出去,推送即在不填满缓存的情况 下提前发送出去。
窗口,双方约定的最大的滑动窗口的大小。
检验和
其他……

停止等待协议
发送方向接收方发送消息,等到接收方反馈回之后,再发送下一次信息。这里就有超时计时器的超时重传,接收方不需要主动要求重传某个请求,全部由发送方处理,如果反馈信息接收到多次,则抛弃。

ARQ协议
即带滑动窗口的停止等待协议,滑动窗口就是分组的组合。
滑动窗口被当成了一个整体,用来传送数据,超时重传的时间选择是一个自适应算法,Karn算法,只要报文段重传了,就不采用往返时间样本,避免出现不知道该选择哪一个发送时间的问题。

SACK选择确认:虽然选择确认可以做到,即中间漏掉的数据的话,只重传漏掉的数据,而不重传整个发送的N个数据,这样代价比较大。但是,由于SACK文档的不完备性,所以现在的协议当中仍然是重传漏传数据之后的所有部分。

TCP流量控制
流量控制的意思就是让数据发送的不要太快,所以发送方的窗口值不能大于接收方窗口的数值。接收方对发送方的确认数据中有流量控制字段,可以要求发送方更改窗口值。而当接收方给发送发一个0值时,即不让发送方继续发送数据了,这时就要设置一个持续计时器,用来确认探测报文是否被丢失淹没了。即使窗口为0,也应当接收零窗口探测报文、确认报文、携带紧急数据的报文。
为了提高传输效率,发送方当字节缓存装满、推送字段控制、计时器时限到了时,就将数据封装成TCP报文发送出去。这里用到了Nagle算法,目的是为了提高网络的吞吐量。
糊涂窗口综合征:当接收方缓存已满时出现的,情况是每次的报文都只包含一个字节,造成首部信息相比数据信息太大,效率极低。解决方法是让接收方多等一会,等到缓存腾出来以后,再设置接收窗口的大小。

TCP拥塞控制
拥塞控制主要是指网络的传输拥堵,而非点对点通信的停滞,这叫做流量控制。
衡量网络畅通与否的参数叫吞吐量,输入越多的负载,即越多的报文包,吞吐量应该能够理想地解决,但是如果不加控制的话,就会造成报文的拥堵,吞吐量降低,直到为0,称为死锁。最根本的就是网络的各部分必须能力平衡相称。
拥塞控制的主要方法:
慢开始:滑动窗口的数值从1开始,呈指数增长;
拥塞避免:当窗口值增长到慢开始门限之后,要以线性增长,一旦出现重传,就要减低窗口值;
快重传:接收方每次都要立即发送确认报文确认丢失了信息,而不是继续等待;收到3个重复的确认,就认为网络拥堵了,就要减低窗口值;
快恢复:减低到之前窗口最大值的一半,就叫快恢复。
RED:在网络还没出现拥堵的情况下,随机地在路由器中的报文随机丢弃一些,使一些TCP链接进行流量控制,用来换取整个网络不会采用拥塞控制。

TCP连接管理
三握手:在连接阶段采用三握手:当然发送方在接收到确认之后还要再进行一次确认,目的是为了防止已经失效的连接请求报文突然又传送到接收方
四握手:连接释放采用四握手:发送方给接收方发送断开请求,接收方发送确认,并发送完剩余的数据,然后再发送关闭确认,发送方再发送返回确认,即可实现TCP连接的关闭。接收方的关闭要比发送方早,因为发送方害怕接收方始终在等待,所以自己有一个保活计时器。

三、表示层

添加一点不属于传输层的东西,表示层面向应用层服务,主要是检查语法和语义,符合要求才提供到上一层。加密解密即在这一层中控制。

四、会话层

会话层比表示层第一层,建立和维持会话session,通过点校验实现大文件传输中断后从中恢复通信。