如何自己实现简单实现 tcp 协议,需要那些前置知识呢?

2023-08-09 21:47:49 +08:00
 magicZ

最近做了一个 websocket 相关的项目,发现自己的网络编程水平比较差,目前想要重新学习一下, 最后希望用 java 实现一下 tcp 协议,希望大家能给一点指导建议。

2371 次点击
所在节点    奇思妙想
19 条回复
kljsandjb
2023-08-09 21:53:07 +08:00
参考参考 lwIP
pagxir
2023-08-09 21:53:38 +08:00
Web socket 不需要实现 tcp 协议吧。难道你 Java 是跑在裸板上,连个操作系统没有?
aminobody
2023-08-09 22:23:34 +08:00
cs144
opengps
2023-08-09 23:29:39 +08:00
tcp 协议你只需要知道怎么收发,怎么异步收发。处理好稳定性,自动断线重建。再就是知道怎么定义自己的数据通信协议解析规则,也可以说通信规约,这就足够了
Pony69
2023-08-09 23:37:56 +08:00
Java 的话,要不尝试一下 netty 。
Znemo
2023-08-10 01:04:47 +08:00
普遍意义上说的 TCP 协议是操作系统实现的。
vsyf
2023-08-10 03:43:18 +08:00
@pagxir 有这样的 JVM 吗?没见过诶。
这个节点选得不错。
vsyf
2023-08-10 03:46:37 +08:00
@vsyf 还真有,JX & JavaOS ,孤陋寡闻了。
Rehtt
2023-08-10 08:29:28 +08:00
tcp 是操作系统内核实现的,java 只是调用系统提供的 socket 接口
selca
2023-08-10 08:39:08 +08:00
要不要试试用 kotlin+netty 实现 trojan 代理协议,跟 Java 差不多。
https://github.com/selcarpa/surfer
这是仓库地址,当前完整的介绍文档正在筹划中,里面也有很多坑没填,比如 kcp ,比如 UDP 代理。
Nazz
2023-08-10 08:53:12 +08:00
实现个可靠 UDP 得了
ybz
2023-08-10 09:34:12 +08:00
好家伙,手撸 tcp 协议,很复杂的兄弟,可靠传输、流量控制、拥塞控制、连接建立。。。。光一个可靠传输就让人头皮发麻。
wanguorui123
2023-08-10 10:37:57 +08:00
quic
iOCZ
2023-08-10 11:44:21 +08:00
会用 socket 就行了,想自己实现 TCPIP 协议栈的话。。。。想屁吃
mmdsun
2023-08-10 13:23:59 +08:00
tcp ip 详解卷 2 ,就是讲实现的照着撸一遍。再试着用 Java 写吧
Saturn72
2023-08-11 09:09:45 +08:00
可以看下中国大学慕课上哈工大的计网课程,讲的还是很全面的,当年上大学没认真学计网,上半年在 MOOC 上补的课,讲的真的很好
smirkcat
2023-08-11 11:51:43 +08:00
java 就别了 别给自己找没用事做。。。
xmt328
2023-08-11 13:58:35 +08:00
从问题来看,我觉得 OP 先要了解下 websocket 和 Tcp 的关系
xsen
2023-08-11 16:47:16 +08:00
1. 实现 tcp server ,可支持多客户端连接及一定并发量
2. 实现 tcp client ,可实现多客户端(如数百、数千),支持重传、重连
3. 实现 request/reply 、主动推送消息模型
4. 设计 binary protocol 并实现( magic 、header-cmd/subcmd 、crc 、seqno 等)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/963882

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX