第5章 运输层

5.1 运输层协议概述

5.1.1 进程之间的通信

  主要讲了一个问题:为什么在网络层已经提供数据通信服务(IP数据报)的前提下还需要运输层?

  运输层的地位:运输层直接向应用层提供服务,而路由器在进行路由转发的时候不具有运输层和应用层。

  运输层的作用:1、为进程提供服务。网络层提供的数据报传输服务只能把数据报从一个主机传送到另一个主机的网络层上,但通信的本质并不是面向主机而是面向进程,只有把信息送到目标主机上一次通信才算完成,这正是运输层需要做的工作:向应用层提供进程和进程之间的通信,屏蔽底层通信细节使整个通信的过程透明化。这种进程之间透明的通信被称为逻辑通信,所谓逻辑通信是指在应用进程看来只需要把信息交给运输层就可以传递到目标进程上。运输层提供的是进程和进程间的逻辑通信,而网络层提供的是主机要主机的逻辑通信

  

  2、提供差错检测。运输层对收到的报文进行差错检测。

5.1.2 运输层的两个主要协议

  • 面向连接的TCP。传输数据前建立连接,数据传输结束后释放连接。可靠但代价大。
  • 不面向连接的UDP。传输数据前不建立连接,目的主机接收到报文后不做确认。不可靠但效率高。

  

5.1.3 运输层的端口

  运输层的复用:进程->运输层->应用层。不同的进程都要通过运输层,这就是运输层的复用。

  运输层的分用:网络层->运输层->进程。运输层从网络层收到数据然后交付给指定进程,由于所有进程的通信都必须经由运输层,所以运输层必须能够有一种方式来定位一个进程。这正是端口的作用:为进程赋予一个标志位

  为什么不用PID?:通信在各种不同的OS之间进行不能通过OS默认的区别进程的方法用在通信中;PID是一个动态的,可能通信过程中PID无效了

  那怎么办?:端口号(port)。运输层只要把送给某一个进程的消息交付给指定端口,剩下的事情交给TCP完成。

端口:

  • 意义:标识在当前计算机中各个进程在于运输层交互时的层间接口
  • 长度:16位 65536个
  • 位置:发送一个报文的时候既要有目的地址的端口号也要有发送端地址的端口号
  • 分类:服务器使用的端口号 客户端使用的端口号
  • 服务端使用的端口号:在服务器上使用的端口号,里面有很多老朋友

  • 客户端使用的端口号:客户进程运行时候动态的选择,是朝生夕死的端口号,通信结束后端口号就被回收然后交给别的进程使用

5.2 用户数据报协议UDP

5.2.1 UDP概述

  仅仅在IP数据报上增加了很少的功能:分用复用 差错检测

  • 无连接。发送前不建立连接,发送完毕后不释放连接,所以开销小。
  • 尽最大努力。就是不可靠。
  • 面向报文。当应用程序把内容交给UDP的时候,UDP只是加上头部和尾部然后交给下一层;当UDP收到网络层传过来的IP数据报的时候只去除首位然后传上去。所谓面向报文就是不管报文内容、不对报文切割仅仅添加首位部。所以如果报文如果太大网络层就要切割,报文如果太小IP数据报的头部就会太大,两种情况都会让效率遍地。
  • 没有拥塞控制。即使网络出现了拥塞也会发送UDP数据报,虽然可能会损失数据但不会降低发送效率,在IP电话或者实时视频会议领域很适合。
  • 支持一对一 一对多 多多 多以
  • 首部小,开销低

  总而言之UDP就是一种效率至上,不考虑可靠性的协议。它简单、高效、但准确性差。很像国产的协议。

5.2.2 UDP的首部格式

  

 

  

猜你喜欢

转载自www.cnblogs.com/AshOfTime/p/10713938.html