计算机网络-

0
open
sqshada
sqshada
Posted 3 months ago

计算机网络- #27

image

五层协议

  • 应用层:通过应用进程间的交互来完成特定的网络应用。互联网中应用层协议很多,比如 DNS、HTTP协议,应用层交互的的数据单元是报文
  • 运输层:运输层的任务就是向两台主机中进程之间的通信提供通用的数据传输服务。比如呀 TCP、UDP 协议。
  • 网络层:网络层负责为分组交换网上的不同主机提供通信服务。发送数据时,网络层把运输层产生的报文段或者用户数据封装成分组或者包进行传送。网络层的另一个任务是要选择合适的路由,使源主机运输层所传下来的分组,能够通过网络中的路由器找到目的主机。
  • 数据链路层:数据链路层将网络层交下来的 IP 数据报组装成帧,在相邻两个结点间的链路上传送帧。
  • 物理层:物理层上传输的数据单位是比特。

物理层

物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。

可以将物理层的主要任务描述为确定与传输媒体的接口有关的一些特性:

  • 机械特性:指明接口所用接线器的形状和尺寸、引脚数目和排列、固定和锁定装置等
  • 电气特性:指明在接口电缆的各条线上出现的电压范围
  • 功能特性:指明某条线上出现的某一电平的电压的意义
  • 过程特性:指明对于不同功能的各种可能事件的出现顺序

数据链路层

三个基本问题

  • 封装成帧:在一段数据的前后添加首部和尾部,就构成了一个帧。接收端在收到物理层上交的比特流后,能根据首部尾部的标记,判断帧的开始结束
  • 透明传输:帧开始和结束的标记使用专门指明的控制字符,传输数据中任何 8 比特组合不允许和用作帧界定的控制字符编码一样,因此发送端的数据链路层在数据中出现控制字符前面插入转义字符,进行字节填充
  • 差错检测:现实的通信链路都不会是理想的。数据链路层广泛使用循环冗余检验CRC的检错技术。

适配器、转发器、集线器、网桥、以太网交换机的作用和使用场合

  • 适配器:计算器与外界局域网的连接是通过通信适配器进行的。也就是网卡。
  • 集线器:工作在物理层,每个接口就是简单的转发比特。一个集线器很像一个多接口的转发器
  • 网桥:对收到的帧根据 MAC 帧的目的地址进行转发和过滤。
  • 以太网交换机:实际上就是一个多接口的网桥。

网络层

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务

运输层

运输层向它上面的应用层提供通信服务。运输层还要对收到的报文进行差错检测

主要协议

  • 用户数据报协议 UDP(User Datagram Protocol)
  • 传输控制协议 TCP(Transmission Control Protocol)

UDP

  • UDP 是无连接的,发送数据前不需要建立连接
  • UDP 使用尽最大努力交付,不保证交付可靠性
  • UDP 是面向报文的
  • UDP 没有拥塞控制
  • UDP 支持一对一、一对多、多对一、多对多的交互通信
  • UDP 首部开销小,只有8字节

image

  • 源端口
  • 目的端口:目的端口号,在终点交付报文时必须使用
  • 长度:UDP 数据报的长度,最小值是 8
  • 检验和:检测 UDP 用户数据报在传输中是否有错,有错就丢弃

计算检验和时,要在 UDP 用户报之前添加 12 字节的伪首部,伪首部既不向下传递也不向上递交,仅仅是为了计算检验和。

TCP

  • TCP 是面向连接的运输层协议
  • 每条 TCP 协议只能是点对点的
  • TCP 提供可交付的服务。无差错、不丢失、不重复、按序到达
  • 提供全双工通信
  • 面向字节流

TCP 可靠传输的工作原理

停止等待协议:就是每发送完一个分组就停止发送,等待对方确认。在收到对方确认后在发送下一个分组。只要超过一段时间没有收到确认,就认为刚才发送的分组丢失了,重传前面发送过的分组(超时重传);

注意三点

  • 发送完一个分组后,必须暂时保留已发送分组的副本(在发生超时重传时使用)
  • 分组和确认分组都必须进行编号。来确认哪一个发出去的分组收到了确认,哪一个分组没有收到
  • 超时计时器设置的重传时间应比数据在分组传输的平均往返时间更长一些,避免不必要的重传

确认丢失确认迟到

  • 确认丢失:如果接收方返回的确认请求丢失,发送方依旧超时重传,此时接收方再次返回确认请求,并丢弃掉第二次重传的分组;
  • 确认迟到:如果接收方返回的确认请求延迟了很久(第二次的超时重传都结束了,发送方也接收到重传后返回的确认信息),后面收到这个第一次的确认信息,不会做任何处理;

连续 ARQ 协议 发送方可以连续发送多个分组,不必没发完一个分组就停顿下来等待对方的确认。发送方维持一个发送窗口,每收到一个确认,就把发送窗口向前移动一个分组的位置。

接收方一般采用累积确认的方式,就是说接收方不必对收到的分组逐个发送确认,而是收到几个分组后,对按序到达的最后一个发送确认;

优点:容易实现,即使确认丢失也不必重传
缺点:不能向发送方反映出正确收到的分组信息

TCP 报文首部格式

image

  • 源端口 和 目的端口
  • 序号:范围0~2^23-1,TCP是面向字节流的,在一个TCP连接中传送的字节流中的每一个字节都按序编号
  • 确认号:是期望收到对方下一个报文段的第一个数据字节的序号
  • 确认ACK(ACKnowlegment):仅当 ACK=1 时确认号字段才有效。当 ACK=0 时,确认号无效。TCP规定,在建立连接后所有传送的报文段都必须把 ACK 置 1。
  • 同步SYN(SYNchronization):在连接建立时用来同步序号。当 SYN=1 而 ACK=0 时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中是 SYN=1 和 ACK=1。因此,SYN 置为 1 就表示这是一个连接请求或连接接受报文。
  • 终止FIN(FINis,意思是“完”、“终”):用来释放一个连接。当 FIN=1 时,表明此报文段的发送方的数据已发送完毕,并要求释放连接。
  • 推送PSH(PuSH):当两个应用程序进行交互式的通信时,有时在一端的应用程序希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP 就可以使用推送(push)操作。这时,发送方 TCP 把 PSH 置 1,并立即创建一个报文段发送出去。接收方 TCP 收到 PSH=1 的报文段,就尽快地(即“推送”向前)交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 窗口:窗口值[0, 2^16 - 1]之间的整数。窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口值作为接收方让发送方设置其发送窗口的依据。

滑动窗口协议

应用层