内容简介:撸完了UDP协议,即我们可以将
撸完了 TCP
,自然要来撸一下 UDP
UDP协议,即 用户数据报协议 ( User Datagram Protocol
),是一个简单的 面向数据报 的 传输层 协议。
我们可以将 UDP
协议看作 IP
协议 暴露 在 传输层 的一个 接口 。
UDP协议同样以 数据包 ( datagram
)的方式传输,它的传输方式也是 Best Effort
的,所以 UDP
协议也是不可靠的( unreliable
)。
那么,我们为什么不直接使用 IP
协议而要额外增加一个 UDP
协议呢?
一个重要的原因是 IP
协议中并没有 端口 ( port
)的概念。 IP
协议进行的是 IP
地址到 IP
地址的传输,这意味者两台计算机之间的对话。但每台计算机中需要有 多个通信通道 ,并将 多个通信通道 分配给 不同的进程 使用。 一个端口 就代表了这样的一个 通信通道 。 UDP
协议实现了 端口 ,从而让 数据包 可以在送到 IP
地址的基础上,进一步可以送到 某个端口 。
UDP依然不是那么“可靠”
尽管 UDP
协议非常 简单 ,但它的产生 晚于 更加 复杂 的 TCP
协议。
早期的网络开发者开发出 IP
协议和 TCP
协议分别位于 网络层 和 传输层 ,所有的通信都要先经过 TCP
封装,再经过 IP
封装( 应用层 -> TCP
-> IP
)。
开发者将 TCP/IP
视为相互合作的 套装 。但很快,网络开发者发现, IP
协议的功能和 TCP
协议的功能是相互 独立 的。
对于一些简单的通信,我们只需要 Best Effort
式的 IP
传输就可以了,而不需要 TCP
协议复杂的建立连接的方式(特别是在 早期 网络环境中,如果 过多 的建立 TCP
连接,会造成很大的网络 负担 ,而 UDP
协议可以相对快速的处理这些简单通信)。
UDP协议随之被开发出来,作为 IP
协议在 传输层 的 傀儡 。这样,网络通信可以通过 应用层->UDP->IP 的封装方式,绕过 TCP
协议。
UDP报文
UDP 的数据包同样分为 头部 (header
)和
数据 (
payload
)两部分。
UDP是传输层( transport layer
)协议,这意味着 UDP
的数据包需要经过 IP
协议的封装( encapsulation
),然后通过 IP
协议传输到 目的电脑 。随后 UDP
包在目的电脑拆封,并将信息送到 相应端口 的缓存中。
- UDP协议的头部
-
source port
UDP包的出发端口
-
destination port
目的地端口
-
Length
整个 UDP 包的长度。
-
checksum
它的算法与
IP
协议的header checksum
算法相类似。然而,
UDP
的checksum
所校验的序列包括了 整个UDP数据包,以及封装的IP头部的一些信息(主要为出发地IP和目的地IP)。这样,
checksum
就可以 校验IP:端口 的正确性了。在
IPv4
中,checksum
可以为 0 ,意味着 不使用 checksum。IPv6
要求必须进行checksum
校验。
-
socket
端口( port
)是伴随着 传输层 诞生的概念。它可以将 网络层 的 IP
通信分送到 各个通信通道 。
UDP协议和 TCP
协议尽管在工作方式上有很大的不同,但它们都建立了 从一个端口到另一个端口的通信 。
一个特定的 IP
和特定的 端口 就构成了一个 socket
。
UDP主要特点
-
无连接的
发送数据之前 不需要建立连接 ,减少了开销和发送数据之前的时延。
-
尽最大努力交付
不保证可靠的交付,主机 不需要 维持复杂的链接状态表。
-
面向报文的
发送方的
UDP
对应用程序交下来的报文,在添加首部后就向下交付给IP
层。既 不拆分 ,也 不合并 ,而是 保留 这些报文的 边界 。
因此,应用程序需要选择 合适 的报文 大小 。
-
没有拥塞控制。
-
支持一对一、多对一和多对多的交互通信。
-
首部开销小,只有8个字节。
UDP端口探测
UDP端口扫描比较麻烦,它同 TCP
不一样,因为它不需要建立连接。
我们向 目标主机 的固定端口发送 UDP
数据包,可以得到 两种结果 :
- 端口开了
UDP 不会给我们任何回复,没办法,谁叫人家是 无连接的 - 端口没开 目标主机端口会给我们回复
ICMP
的port-unreachable
响应
那么,我们就可以 coding
,大部分同 TCP
探测:
-
构造一系列目标端口的
UDP
包 -
通过第二层的
sr
发送并且接收返回的包 -
遍历接收的包,判断是否目标端口有
ICMP
回复包,此端口就为没有开放端口 -
通过遍历的所有端口集合和不开放端口集合做差集,就能得到所有开放端口的集合
整个代码就是:
扫描发现对方主机 88 号端口开放:
愿意与大家分享交流各种技术,个人公众账号[ mindev ],以及 知识星球[ 极客世界 ]
欢迎订阅公众账号,日更哟~~~
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 渗透测试之子域名探测指南
- 内网渗透之域关系探测神器:Bloodhound
- 使用 JavaScript 探测网络状态
- WebP 可用性探测
- XSS WAF规则探测与绕过
- 如何探测小程序返回到webview页面
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
生物信息学算法导论
N.C.琼斯 / 第1版 (2007年7月1日) / 2007-7 / 45.0
这是一本关于生物信息学算法和计算思想的导论性教科书,原著由国际上的权威学者撰写,经国内知名专家精心翻译为中文,系统介绍推动生物信息学不断进步的算法原理。全书强调的是算法中思想的运用,而不是对表面上并不相关的各类问题进行简单的堆砌。 体现了以下特色: 阐述生物学中的相关问题,涉及对问题的模型化处理并提供一种或多种解决方案: 简要介绍生物信息学领域领军人物; 饶有趣味的小插图使得概念更加具体和形象,方......一起来看看 《生物信息学算法导论》 这本书的介绍吧!