计算机网络之TCP协议与UDP协议

运输层向它上面应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。

两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。

应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。

运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。运输层还要对收到的报文进行差错检测。

运输层需要有两种不同的运输协议:

(1)用户数据报协议 UDP (User Datagram Protocol)

UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。

(2)传输控制协议 TCP (Transmission Control Protocol)

TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。

端口号

为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志。

解决这个问题的方法就是在运输层使用协议端口号(protocol port number),或通常简称为端口(port)。

虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。

端口用一个 16 位端口号进行标志。

端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

端口号分为两类:

(1)服务端使用的端口号。

这里又分为两类,最重要的一类叫做熟知端口(well-known port number),数值一般为0~1023。管理机构IANA把这些端口指派给TCP/IP最重要的一些应用程序,让所有用户都知道。

另一类叫登记端口号,

数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。

(2)客户端使用的端口号

数值为49152~65535,留给客户进程选择暂时使用,仅在客户进程运行时彩动态选择,因此又叫短暂端口号。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

用户数据报协议 UDP

UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。

UDP 是无连接的,即发送数据之前不需要建立连接。

UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。

UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。

UDP 支持一对一、一对多、多对一和多对多的交互通信。

UDP 的首部开销小,只有 8 个字节。

发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。所以应用程序必须选择合适大小的报文。

UPD首部格式如下:

传输控制协议 TCP

TCP 是面向连接的运输层协议,就是说应用程序在使用TCP协议之前,必须先建立TCP连接,传送完数据之后,必须释放连接。

每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)的。

TCP 提供可靠交付的服务,保证数据无差错、不丢失、不重复、按序到达。

TCP 提供全双工通信。

TCP是面向字节流,下图展示了字节流的发送、接受过程:

TCP 连接是一条虚连接而不是一条真正的物理连接。TCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。TCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。

TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口。

端口号拼接到IP 地址即构成了套接字。

套接字 socket = (IP地址: 端口号)

每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:

TCP 连接 ::= {socket1, socket2}

={(IP1: port1), (IP2: port2)}

TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP 报文段分为首部和数据两部分。

TCP报文段首部的前20个字节是固定的,后面的字节是根据需要增加的。首部格式如下:

奋斗令我们的生活充满生机,责任让我们的生命充满意义!

计算机网络之TCP协议与UDP协议

相关文章:

你感兴趣的文章:

标签云: