什么是传输层协议?

网络
本文介绍了端口到端口通信中使用哪些协议:TCP和UDP。请记住,TCP用于传输过程中不会丢失的关键数据。相比之下,UDP速度更快,适用于能够承受一定量数据丢失的应用程序。

传输层协议是网络的重要组成部分,因为其提供了一种将数据包从一个网络节点传输到另一个网络节点的方法。传输协议有多种用途,例如流视频、互联网导航和执行交易。两个核心协议是TCP和UDP。

本文将介绍何时使用这些协议,以及诊断和排除所需的工具。TCP和UDP的基本性质意味着,它们肯定会出现在任何网络认证中。

什么是传输层协议?

TCP和UDP协议与OSI模型的传输层相关联,并作为整个互联网的基础数据交换协议。简而言之,传输层协议负责确保设备之间的端到端通信。其还执行错误检测(仅限TCP)、数据分段和数据重组。

尤其是TCP,其负责从加载网页到在线游戏中交换数据的所有事务。让我们看看它是如何做到的。

什么是传输控制协议(TCP)?

传输控制协议(TCP)是互联网协议(IP)套件的核心协议,负责确保可靠、容错的数据从一个点发送到另一个点。TCP在确保所有信息无损传输方面取得了长足的进步。例如,TCP与UDP的区别之一是重传丢失的数据。这是以一种特别聪明的方式完成的。

在TCP协议中,每个数据包都被赋予一个唯一的序列号。数据包发送者仔细跟踪发送了哪些数据包。作为响应,接收系统发出一个ACK数据包(代表“确认”),其中包含确认收到的数据包的序列号。如果序列号不匹配或丢失,发送机器将重新发送数据包。这个过程会持续下去,直到匹配的ACK确认传输成功。

数据重传并不是TCP可靠的唯一方式。其还使用三向握手来建立持久的连接。

在TCP中,三向握手是一种通信机制,以确保所有数据的发送和正确接收。简而言之,这发生在三个部分:

  • 初始化(SYN):SYN是想要建立通信的设备发出的初始数据包。该数据包包含同步标志(SYN)和接收者的IP地址。
  • 确认启动(SYN-ACK):接下来,接收者发回SYN-ACK数据包,假设它已准备好并愿意进行通信。
  • 最终确认(ACK):一旦发送方收到SYN-ACK,就会发送最终ACK以确认有效连接。

一旦这三个“握手”完成,传输就开始了。三向握手通常被描述为TCP的“面向连接”通信标志。然而,错误检测和流量控制等其他功能也成为TCP面向连接的本质的支柱。

由于TCP在现代IT通信中无处不在,因此不可能列出TCP的每一个用例。然而,这里有一些用例来说明其用处。

  • 电子邮件:所有电子邮件均使用TCP发送。如果以UDP方式发送,则电子邮件到达时可能会有丢失一些信息,这会严重阻碍通信。
  • 在线游戏:货币交易、登录机制和任何关键通信都需要TCP。
  • 互联网浏览:无论使用HTTP还是HTTPS,第4层协议通常是TCP。当用户导航到某个网址时,将使用TCP协议。该协议在用户的网络浏览器和网络服务器之间建立并维护可靠的连接,确保网页和相关资源准确无误地传输。

虽然TCP以其可靠性而闻名,但也因其延迟和高开销著称。TCP确保每个数据包都被发送和记录,但这可能不适合所有用例。例如,视频流不需要每个数据包都能到达用户——这就是UDP的用武之地。

什么是用户数据报协议(UDP)?

UDP是TCP的无连接、轻量级版本。与TCP相反,UDP的主要目标是尽可能快地发送数据报,即数据包。

我们可以把UDP想象成一个人把乒乓球扔进桶里。投掷者是发送者,乒乓球是数据包,水桶是接收者。是否每一个乒乓球都能进桶并不重要,重要的是大多数都能进桶。扔球的人自然会丢几个球——这没关系。这就是为什么UDP通常被称为“尽力而为的交付”。

尽力而为交付的最佳用例在于媒体传输领域。让我们看几个例子:

  • VoIP呼叫:VoIP呼叫通常使用UDP进行。这就是为什么时常会出现画面轻微停顿、人声跳跃或听起来像机器人的原因。在语音流中,每个数据包是否完美到达并不重要。毕竟,人们善于把握语境,在交流中不需要那么严格。
  • 在线游戏:在线游戏的某些方面也使用UDP。每当用户移动一个字符时,这通常是一个UDP连接。基本上,任何需要高响应时间的非关键数据都将使用UDP。
  • DNS:UDP用于DNS查询和响应。这是因为DNS解析需要快速,且不需要持续的通信。

如何在TCP和UDP之间选择?

决定使用哪种协议时,需要考虑几个因素。让我们回顾一下其中的一些:

  • 可靠性:TCP提供可靠、经过审计的数据,并确保接收到每一条数据。如果应用程序需要高保真度,那么TCP是最佳选择。
  • 延迟和速度:当接收每条数据并不重要时,使用UDP。例如,流媒体音乐可能不需要每个数据包。或者,如果通信只是为了通知另一个应用程序执行其他操作。
  • 错误处理:TCP有内置的错误处理,可以精确地指出遇到的问题。而对于UDP,开发人员将必须开发自定义解决方案。

总之,如果每个信息包的成功传输都很重要,那么就使用TCP。如果存在某种可接受的数据丢失程度,那么UDP是最佳选择。选择协议的另一个关键方面是,了解如何在网络中有效地扫描它们。接下来让我们介绍一下。

哪些工具可以扫描网络端口?

经过培训的网络工程师可以使用多种工具;诀窍在于知道何时何地使用它们。具体来说,网络端口扫描仪是一种工具,允许扫描目标设备并查看哪些端口是开放的,从而容易受到攻击。本文将介绍几种可能派上用场的不同端口扫描仪,首先是Nmap。

需要注意的是,不要只扫描想要的任何域,因为这可能会产生法律和道德影响。

  • Nmap

Nmap是一个功能强大的侦察工具,用于发现网络主机和服务。其还被笔测试人员、系统管理员和安全工程师用作端口扫描器。Nmap使用各种技术来扫描端口,例如TCP连接扫描、SYN扫描和UDP扫描。

  • Netcat

Netcat,也称为nc,是一种通用且众所周知的网络工具,可以在TCP/IP套件上执行几乎任何操作。其最显著的用途是作为TCP代理、网络守护程序测试、端口扫描、远程shell等等。

要使用nc执行端口扫描,请输入以下命令:

nc-zv target_host start_port-end_port

  • “z”执行扫描,而不是建立连接。
  • “v”代表详细,以便可以看到返回值。
  • 目标主机将是一个URL。start_port是要扫描的第一个端口,end_port将是最后一个。

这是一个实际的例子:

nc-zv www.mywebsite.com 80-100

如果使用的是Mac或Linux,只需打开终端并输入man nc即可了解如何在设备上使用它。(或者在Windows上输入nc/?。)

  • Zenmap

其他示例仅是CLI,但Zenmap为前面提到的Nmap提供了GUI。Zenmap提供了一种更加用户友好和结构化的方法来利用Nmap。

Zenmap的优点包括允许保存Nmap配置文件供以后使用、提供更深入的结果分析,以及通过方便的复选框和其他用户界面使用所有Nmap功能。

这是一个来自维基百科的开源软件可视化图:

现在我们已经讨论了用于扫描网络的各种工具,下面讨论一些用于评估网络漏洞的技术。

6种网络端口扫描技术和结果解释

虽然端口扫描的最终结果是相同的,但了解用于实现目的的不同技术非常重要。与TCP和UDP一样,不同的技术也需要权衡,例如速度与安全性。首先我们来看看nc默认的一个常用技术——TCP连接扫描。

  • TCP连接扫描

这是安全工程师用来评估设备端口漏洞的常用工具。其解析了三向握手,因此一般不会引发入侵检测警报。TCP连接扫描通过每个端口并记录所有端口,从而使其能够解析三向握手。然而,其非常缓慢。

  • SYN(隐形)扫描

SYN扫描,也称为半端口扫描,旨在比传统TCP扫描更快地验证端口的漏洞。SYN扫描通过SYN-ACK数据包等待接收方确认,而不是完成整个握手过程。

这使得其比TCP连接扫描快得多,但更容易受到入侵检测系统的攻击。未打开的端口将发送RST信号,而不是SYN-ACK数据包。

  • UDP扫描

由于UDP不是面向连接的,因此很难确定UDP端口是否打开。UDP扫描需要依赖于不一定到达的ACK信号。然而,它仍然是一个重要的安全评估工具,但确定性仍然不如TCP扫描。

  • 全面的扫描选项和配置

Nmap中可以应用的扫描选项数量几乎无法计算。Nmap在扫描端口的方式、内容和时间方面提供了很大的灵活性。

下面罗列出一些扫描选项:

nmap-sS-Pn-sV--version-all-O-p 1-65535<some-target>

  • -sS:执行SYN扫描(隐形)。
  • -Pn:跳过主机发现(假设目标已启动)。
  • -sV--version-all:尝试识别服务版本。
  • -O:尝试操作系统检测。
  • -p 1-65535:扫描所有端口(1到65,535)。

nmap-p--T4-A-v<some-target>

  • -p-:扫描所有65,535个TCP端口。
  • -T4:设置激进(快速)扫描的计时模板。
  • -A:启用操作系统检测、版本检测、脚本扫描和traceroute。
  • -v:启用详细结果的详细输出。

nmap-p--sS-sU-T4-A-v<some-target>

  • -sS:执行SYN扫描(TCP)以进行端口扫描。
  • -sU:除了TCP之外,还包括UDP端口扫描。
  • -T4:激进的计时模板,可加快扫描速度。
  • -A:启用操作系统检测、版本检测、脚本扫描和路由跟踪。
  • -v:详细输出的详细结果。

如何解释端口扫描结果?

了解开放、关闭和过滤端口

分析结果时要记住的一件事是,永远不应该打开不知道的端口。只有具有特定用途的端口才能开放通信。过滤端口是对扫描完全没有响应的端口。当防火墙阻止端口,或某些其他网络配置阻止有效响应时,可能会发生这种情况。

基于扫描结果分析潜在安全风险

开放且不受监管的端口是IT领域最大的攻击媒介之一。在分析安全结果时,确定哪些端口是开放的以及哪些服务正在使用该端口非常重要。

例如,如果端口668使用Telnet,且没有人知道原因,那么这就是一个需要解决的严重问题。黑客可能会通过telnet窃取该端口上的数据。这只是一个示例,但理解和可视化结果对于增强和维持适当的安全态势非常重要。

总结

本文介绍了端口到端口通信中使用哪些协议:TCP和UDP。请记住,TCP用于传输过程中不会丢失的关键数据。相比之下,UDP速度更快,适用于能够承受一定量数据丢失的应用程序。

已经开发出工具来通过验证使用这些协议的端口和服务来监视这些协议。这些工具是Netcat、Nmap及其GUI对应工具Zenmap。

扫描端口的技术有很多种,分别是TCP连接扫描、SYN扫描和UDP扫描。TCP连接扫描速度较慢,但更安全。SYN扫描可能会触发入侵检测系统,但速度更快。UDP扫描通常很难解释,因为UDP不是面向连接的,并且也不一定要向发送方发送响应。

责任编辑:姜华 来源: 千家网
相关推荐

2010-07-06 15:43:04

UDP协议

2013-05-29 09:29:07

OSI传输层TCP协议

2016-10-10 23:00:18

2010-06-09 13:21:30

TCP传输层协议

2009-12-29 19:35:56

2011-02-21 11:15:12

2016-11-29 15:22:47

协议应用层安全层

2019-09-30 09:41:04

五层协议OSITCP

2010-09-09 16:48:50

七层网络协议

2021-10-11 10:41:14

TCP传输层协议网络

2016-10-10 22:48:16

2010-07-14 17:12:38

STUN协议

2022-12-01 10:39:02

Matter网络

2010-06-28 15:41:04

FTP文件传输协议

2022-10-28 18:36:18

2010-09-09 15:37:59

什么是网络协议

2022-03-18 10:43:12

WebSocketHTML5TCP 连接

2010-06-09 14:12:39

网络协议套件

2010-06-09 11:38:37

传输层通信协议

2020-08-31 19:19:27

TCPUDP视屏面试
点赞
收藏

51CTO技术栈公众号