计算机网络基础-传输层-UDP

计算机网络基础-传输层-UDP

1.传输层

负责数据能够从发送端传输接收端

1.1 端⼝号

端⼝号(Port)标识了⼀个主机上进⾏通信的不同的应⽤程序;

计算机网络基础-传输层-UDP_第1张图片

在TCP/IP协议中, ⽤ “源IP”, “源端⼝号”, “⽬的IP”, “⽬的端⼝号”, “协议号” 这样⼀个五元组来标识⼀个通信(可以通过netstat -n查看);

计算机网络基础-传输层-UDP_第2张图片

端⼝号范围划分

  • 0 - 1023: 知名端⼝号, HTTP, FTP, SSH等这些⼴为使⽤的应⽤层协议, 他们的端⼝号都是固定的.
  • 1024 - 65535: 操作系统动态分配的端⼝号. 客⼾端程序的端⼝号, 就是由操作系统从这个范围分配的
认识知名端⼝号(Well-Know Port Number)

有些服务器是⾮常常⽤的, 为了使⽤⽅便, ⼈们约定⼀些常⽤的服务器, 都是⽤以下这些固定的端⼝号:

  • ssh服务器, 使⽤22端⼝
  • ftp服务器, 使⽤21端⼝
  • telnet服务器, 使⽤23端⼝
  • http服务器, 使⽤80端⼝
  • https服务器, 使⽤443

使⽤端⼝号时, 要避开这些知名端⼝号

注意:

一个进程可以绑定多个端口号。这是因为每个套接字(socket)都对应一个独立的端口号,而一个进程可以创建和管理多个套接字。通过这种方式,单个进程能够处理多种网络服务或不同类型的连接请求。例如,一个Web服务器可能同时监听HTTP和HTTPS两种协议,分别对应80和443两个端口。在这种情况下,服务端进程需要绑定这两个端口,以便能够同时处理来自这两个端口的连接请求。

一个端口号在同一时间内不能被多个进程绑定。在操作系统中,端口号是用于区分不同网络服务或应用程序的唯一标识符。当一个进程绑定到一个端口号时,操作系统会记录这个绑定关系,以确保后续的网络请求能够被正确地路由到该进程。如果多个进程尝试绑定到同一个端口号,操作系统通常会阻止这种操作,因为它无法同时处理来自同一个端口号的多个网络请求。这种限制有助于防止网络请求被错误地路由到错误的进程,从而确保网络通信的准确性和可靠性。

1.2UDP协议

UDP协议端格式

计算机网络基础-传输层-UDP_第3张图片

  • 16位UDP⻓度, 表⽰整个数据报(UDP⾸部+UDP数据)的最⼤⻓度;

  • 如果校验和出错, 就会直接丢弃;

UDP的特点

UDP传输的过程类似于寄信.

  • ⽆连接: 知道对端的IP和端⼝号就直接进⾏传输, 不需要建⽴连接;

  • 不可靠: 没有确认机制, 没有重传机制; 如果因为⽹络故障该段⽆法发到对⽅, UDP协议层也不会给应⽤层返回任何错误信息;

  • ⾯向数据报: 不能够灵活的控制读写数据的次数和数量;

⾯向数据报

应⽤层交给UDP多⻓的报⽂, UDP原样发送, 既不会拆分, 也不会合并;

⽤UDP传输100个字节的数据:

  • 如果发送端调⽤⼀次sendto, 发送100个字节, 那么接收端也必须调⽤对应的⼀次recvfrom, 接收100个字节; ⽽不能循环调⽤10次recvfrom, 每次接收10个字节;

UDP使⽤注意事项

我们注意到, UDP协议⾸部中有⼀个16位的最⼤⻓度. 也就是说⼀个UDP能传输的数据最⼤⻓度是64K(包含UDP⾸部).

如果我们需要传输的数据超过64K, 就需要在应⽤层⼿动的分包, 多次发送, 并在接收端⼿动拼装;

基于UDP的应⽤层协议

  • NFS: ⽹络⽂件系统

  • TFTP: 简单⽂件传输协议

  • DHCP: 动态主机配置协议

  • BOOTP: 启动协议(⽤于⽆盘设备启动)

  • DNS: 域名解析协议

也包括⾃⼰写UDP程序时⾃定义的应⽤层协议;

你可能感兴趣的:(计算机网络基础,计算机网络,udp,网络协议)