1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 计算机网络之运输层(概述 端口 UDP )

计算机网络之运输层(概述 端口 UDP )

时间:2021-02-23 09:55:53

相关推荐

计算机网络之运输层(概述 端口 UDP )

在谢希仁老师的《计算机网络简明教程》里,运输层作为关键层次之一,需要掌握这些点:

(1)运输层为相互通信的应用进程提供逻辑通信。

(2)端口和套接字的意义。

(3)无连接的 UDP 协议的特点、首部。

(4)面向连接的 TCP 协议的特点和流程、首部。

(5)理想情况的工作流程,如何在实际中尽可能地实现(在不可靠的网络上实现可靠传输的工作设想),停止等待协议和 ARQ 协议。

(6)TCP 的滑动窗口、流量控制、拥塞控制(这是从理论构想到具体的落实的具体场景的设计)

(7)TCP 的三次握手、四次挥手。

运输层协议概述:

只有主机的协议栈才使用到运输层,因为需要从应用层进程获得信息或者提交给它信息,但是在传输途中的那些,路由器,是没有应用层这方面的需求,所以也就不需要使用到运输层,只是用到下面三层。运输层有一个十分显著的作用就是,分用和复用分用就是从网络层获得数据后,它会解析并发送给对应的应用层进程,而复用是指,从应用层各个进程获得数据后,加上必要的标志信息(在首部里),发送给网络层。事实上,只有运输层才知道到底,哪一些数据对应哪一个应用进程,而下面的层并没有这种通晓全局的能力。所以通用的说法,运输层提供应用进程间的逻辑通信。

两种运输层协议

(1)用户数据报协议 UDP(user datagram protocol)

(2)传输控制协议 TCP (transmission control protocol)。

在广泛的 TCP/IP 协议里,已经认为 UDP 也是其中的一部分了。只是说这两种协议会有明显的区别。

UDP 在传送数据前,不需要建立连接,且服务器在收到 UDP 报文后,不需要给出任何确认。

TCP 则补充了这两点。在传送数据前,必须建立连接,且接收到了,要给出确认。TCP 因为要提供可靠的服务,如确认、流量控制、计时器等等,首部会比较大,占用资源多。更多的差异后面会讲。

不同的应用进程,使用的运输层协议都是很明确的了,不会说随便用到的了。具体如下:

运输层的端口

在上面有说到,运输层才知道具体哪一些数据对应哪一些应用进程。但是如何对应呢?这里说的就是它的具体实现逻辑。在单个计算机系统里,进程是使用进程标识符(Linux就是,Windows不是很清楚)来标记哪一个进程。这样虽然在需要对应信息的时候可以通过查询该进程的进程标识符来标记这个报文,但是同一个软件不同时间占有的进程、获得的进程标识符大概率不一样,所以每次都要查询,显得麻烦而容易出错。

所以,在运输层使用协议端口号,简称端口(port)。这和硬件(路由器和交换机)上的端口·,完全不同。硬件端口是不同硬件设备交互的接口,软件端口是应用层的各种应用层协议和运输实体进行层间交互的一种地址,它只是一种抽象的概念,虽然不同的系统具体实现端口的办法,不一样。但是因为应用层协议和运输层协议是对于任何系统都是封装预留接口而兼容的了,所以端口在不同系统上也就普及了。

TCP/IP 的运输层使用一个 16 位的二进制数来标识一个端口,即是允许有65535个不同的端口号(具体的表达形式,在应用层那里的 URL 部分,有写过)。运输层的端口号分类如下:

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

这里又分为两类,最重要的一类叫做熟知端口号或者系统端口号,数值为 0-1023。这些数值对应哪一些软件,是可以在网址 查到的。当一种新的应用程序出现之后,IANA 必须为它指派一个熟知端口,否则互联网上的其他应用进程不能和它通信。

常用的熟知端口号

另一类叫做登记端口号,数值在 1024-49151。这类端口号是为没有熟知端口号的应用程序使用的,使用这一类的端口号,必须在 IANA 登记,避免出现重复。

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

数值为 49152-65535。这一类端口号只在客户进程运行,且只是短暂使用,当服务器接收到客户机的报文时,知道了客户进程所使用的端口号,就发送报文给客户机对应的端口号。结束这一个来往的流程之后,这个端口号就可能被·分配给其他客户进程了。称为短暂端口号。

用户数据报协议 UDP

UDP 只在 IP 的数据报服务上,增加了很少的一点功能,就是复用和分用、差错检测的功能。UDP 的主要特点如下:

(1)UDP 是无连接的,发送数据前不需要连接(发送结束后,也没有连接可断开),这样子反而减少了开销和发送数据前的时延。

(2)UDP 使用尽最大努力交付。但正因为没有很可靠到的机制来保证传送的可靠性,反而不需要维持复杂的连接状态。

(3)UDP 是面向报文的,即是应用层发下来的 message,使用 UDP 的话,在添加首部后就直接交给 IP 层。UDP 对于应用层的 message,不合并也不拆分,而是保留报文完整的边界。对于 IP 层发送上来的数据,UDP 也是在去除首部之后,直接发送给应用层(这样看来,UDP 真的没有增加太多的功能,自己都不分割合并数据,只是添加删除首部而已)。因此,应用程序需要选择合适长度的报文给 UDP ,避免 IP 层在传送时要进行分片。

(4)UDP 没有拥塞控制。无脑直接发(风险不可控),对照后面的 TCP ,就会知道区别。

(5)UDP 支持一对一、一对多、多对一、多对多的交互通信。

(6)UDP 首部占用的字节少(开销小),只有**8个字节,**而 TCP 的首部有20个字节起码。

解析用户数据报 UDP 的内部组成,它有两个字段:数据字段和首部字段。首部 8 个字节,由四个字段组成,每个字段都是 2 个字节。

(1)源端口,在需要对方回信时选用,不需要时可为0(不包括目标 IP 地址哈)

(2)目的端口号,在终点交付 message 时必须使用。

(3)长度,UDP 用户报整个的长度。

(4)检验和,检测 UDP 用户报在传送中是否有错,有错就丢弃(但是也不会重发之类)。

如果接收方 UDP 发现收到的报文,目标端口号不正确(即是,不存在对应的进程),则丢弃该报文,并由网际控制报文协议 ICMP (在网络层里会说到)发送“终点不可达”的差错报文给发送方(这一点同上面的检验和那里,不是说同一个的)。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。