TCP、UDP协议和端口号


协议就是一套约定成俗的规则

  • IP 协议是负责将多个包交换网络连接起来,并管理通讯 IP 源地址和目标地址;
  • TCP 和 UDP 协议则是位于应用层和 IP 层之间,负责它们之间信息传输的重要协议;

TCP 和 UDP 的特点

  • TCP的核心特点就是靠谱。他的特性包括面向连接、可靠、基于字节流控制的传输,就像一个管道一样将应用层和 IP 层连接起来
  • UDP提供无连接通信,但不对传送的数据包提供可靠性保证
用一个不算严谨的说法总结 TCP 就是,女孩子如果遇到 TCP 这样的男生,就嫁了吧。因为TCP的核心特点就是靠谱。
UDP 就像二十多岁的浪子。他们不够可靠,但却充满热情。一切以效率为先,他们可以马上答应你很多事情,并且愿意立马付出实践。你这一秒说佛珠浪漫,他不管身处何处,立马搭飞机给你去取,下一秒说想去听周杰伦的演唱会,他立马给你订票。当然,人的精力和时间都有限,所以就可能出现不可控的意外,比如根本没有足够的钱买门票等。

Snap-1.png

TCP 和 UDP 的使用场景

  • 基础服务功能,最好使用 TCP 协议,保证服务的可靠性。以确保过程中,每一个网络包能够正确抵达目的地;
    使用UDP 协议的,DNS 解析服务、VoIP(Voice over IP)电话;

端口及其特点

如果 IP 是用来定位街区的,那么端口就是对应于该街区中每一户的门牌号。在通讯过程中,数据通过各种通讯协议最终抵达设备(如计算机)后,这里的设备就相当于一个街区,而在设备计算机内部有很多程序在跑,数据进来之后,必须要给它一个对应的门牌号(即端口号),程序才方便进行后续操作
端口号属于传输协议的一部分,数据通过 IP 地址发送对应的数据到指定设备上,而通过端口号把数据发送到指定的服务或程序上。
程序一般不止是监听指定的端口号,而且也会明确对应的传输协议。所以我们在进行数据传输的时候,既要指定对应的端口号,也要指定对应的通讯协议,很多人仅仅会说:程序 A 监听着 33001 端口,这个是不正确的,至少是不完全正确的。相应的,我们应该这样说:程序 A 使用 TCP 协议,监听 33001 端口,当然你也可以说:程序 A 使用 UDP 协议,监听 33001 端口
指定传输协议和端口,显而易见的好处在于,当我们进行端口转发或者构建网络防火墙的时候,我们可以很方便的通过协议和端口进行隔离。以防止不可预见的意外发生。对于计算机来说,通过这种方式可以防止外网各种不必要的数据,进入本地局域网

端口号根据范围分为三种

  • Well-Known Ports(即公认端口号)
它是一些众人皆知著名的端口号,这些端口号固定分配给一些服务,我们上面提到的 HTTP 服务、 FTP服务等都属于这一类。知名端口号的范围是:0-1023
  • Registered Ports(即注册端口)
它是不可以动态调整的端口段,这些端口没有明确定义服务哪些特定的对象。不同的程序可以根据自己的需要自己定义,注册端口号的范围是:1024-49151
  • Dynamic, private or ephemeral ports(即动态、私有或临时端口号)
顾名思义,这些端口号是不可以注册的,这一段的端口被用作一些私人的或者定制化的服务,当然也可以用来做动态端口服务,这一段的范围是:49152–65535