【读】这一次,让我们再深入一点 - UDP协议

1,883 阅读4分钟

这是关于网络系列的第二篇文章,接下来会有更多精彩内容.敬请期待! 让我们一起乘风破浪!

前言

上篇我们了解了关于IP协议的相关知识,这里我们继续讨论运输层的UDP协议.希望你有所收获.

运输层,你需要知道的基础

运输层提供了什么服务

UDP 及 后来讲到的TCP都属于运输层协议.运输层向它上层的应用层提供通信服务.网际层的IP协议可以通过IP数据报首部的目的地址,将数据报交付到目的地, 为什么还需要运输层呢? 其实,"两台主机间的通信"的描述是不够清晰的,需要通信的实体应该是主机中的进程.可以看到,网际层是提供点到点的通信(也就是两台主机之间能够找到彼此), 而运输层提供了端到端的通信(也就是各个进程之间的交流).

端口

运输层的一个很重要的功能是复用和分用:

  • 复用, 发送方不同的应用都可以使用用一个运输层协议传递数据(加上合适的首部加以区分)
  • 分用, 接收方的运输层在剥去报文的首部后能够把数据正确的交付到目的应用.

为了解决复用和分用过程中数据不混淆的问题, 运输层采用协议端口号(或端口)来区分.在TCP/IP体系中, 运输层采用16位(共65535个)的端口号来标识一个端口. 端口只是具有本地意义, 表示了应用程序和运输层交互时使用的标识.

不同计算机的两个应用程序通信时,需要获取对方的IP地址(知道对方在哪),和对方程序的端口(找到对方的程序入口).就像我们寄信时,要写上地址(IP地址)和收件人(端口)一样.

读到这里你是否明白了为什么HTTP服务的端口默认80,HTTPS默认端口443,本地启动的服务问啥建议使用8888了吧?

端口的分类

  • 服务端使用的端口号

    • 熟知端口(0~1023), 指派该比较重要的,大家熟知的应用使用,便于大家和他通信, 下面是常用的熟知端口

      FTP TELNET SMTP DNS TFTP HTTP SNMP HTTPS
      21 23 25 53 69 80 161 443
    • 登记端口(1024~49151).使用该类端口需要登记,避免重复.

  • 客户端使用的端口号

    客户端的端口号为(1024~65535),随着客户端的运行而确定,短暂存在.

UDP协议

接下来就来了解下运输层的UDP协议(User Datagram Protocol), 后序文章会讲述TCP协议(Transmission Control Protocol).

UDP 只是在IP协议之上添加了少许功能, 复用和分用及差错检测.其主要特点是:

  • 无连接
  • 尽最大努力交付, 即不提供可靠的交付
  • 面向报文. 发送方的UDP拿到上层交付的数据后直接添加自己的头部信息后交付给下层,不会对数据进行合并或封装; 而接收方的UDP拿到下层的数据后,去除头部后直接交付给上层.
  • 没有拥塞控制, 对应出现拥塞的网络,发送方的发送速率是不会降低的.
  • 支持一对一,一对多,多对一的交互通信
  • 首部较小,8字节.

UDP的报文格式:

包含首部和数据字段,数据字段是上层交付的数据,首部包含4个字段,各占2字节:

  • 源端口, 需要给对方回信时选用, 不需要是为0.
  • 目的端口, 在传送的终点交付数据时使用.
  • 长度, UDP数据部分的长度(单位字节), 最小为8,只有首部.
  • 校验和, 检查是否在传送过程中出错, 有错则丢弃.

结语

总体来看,UDP还是比较简单的.它适用于那些无须关心数据是否准确到达的服务, 如视频电话, 局域网游戏等.

  • 部分图片来源于网络,如有侵权,请告知。
  • 如有错误,还请指出。共勉!
  • 您的喜欢是最大的赞赏。