网络连接中的舔狗协议

舔狗网络协议 (discard protocol)

最近互联网上,“舔狗” 这个词语很火,也衍生出来很多梗(快速说出互联网 4 大舔狗!!!)。然后今天偶然间看到了一个 RFC 文档, 发现了一个有趣的网络协议, 这个协议让我立马想到了舔狗这个词,哈哈。也不卖关子了,让我们来直接看一看它吧 – Discard Protocol。这大概是最简单的RFC文档了,其他的文档基本都是长篇大论,我基本没有看完过。

这个协议的功能就是:丢弃所有接受到的消息,永远不会响应!

在这里插入图片描述

在这里插入图片描述

discard service (丢弃服务)是一个很有用的调试和测量工具。discard service 只是简单的丢弃它接收到的所有数据。
它有两种实现方式:

  1. 基于 TCP 的丢弃服务
    一种 discard service 是建立在TCP之上的基于连接的应用。服务器在 TCP 端口 9 上 监听 TCP 连接. 一旦一个连接建立,任何接收到的数据都会被丢弃(thrown away)。不发送任何响应。这个连接会一直持续, 直到调用用户主动终止连接。
  2. 基于 UDP 的丢弃服务
    另一种 discard service 是建立在 UPD 之上的基于数据报的应用。服务器在 UDP 端口 9 上监听 UDP 数据报。当接收到一个数据报,丢弃它。不发送任何响应。

在这里插入图片描述

简单的实现一个 Go 版本

package main

import (
	"fmt"
	"log"
	"net"
)

func main() {

	if listener, err := net.Listen("tcp", "0.0.0.0:8888"); err != nil {
		log.Fatal(err)
	} else {
		fmt.Println("服务已上线!")
		connection, err := listener.Accept()
		if err != nil {
			log.Fatal(err)
		}
		buf := make([]byte, 1024)
		count, err := connection.Read(buf)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Printf("接收到消息:%v, 已丢弃!\n", string(buf[0:count]))
	}
}

测试

这里我为了图省事, 直接用浏览器来测试了。除非主动关闭浏览器,不然这里浏览器会一直转圈圈 (模拟永远在等待),直到超时结束。

在这里插入图片描述

最后客户端会得到什么呢?当然是一无所有啦!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值