zhao1014
V2EX  ›  Java

有没有什么练手项目可以充分利用到计算机网络相关知识?

  •  2
     
  •   zhao1014 · Nov 8, 2020 · 9913 views
    This topic created in 2187 days ago, the information mentioned may be changed or developed.

    实现一个简易 Tomcat 服务器可以吗?

    Supplement 1  ·  Nov 9, 2020
    敲重点,是“练手”!目的在于帮助理解
    55 replies  •  2023-03-25 11:50:49 +08:00
    araaaa
    araaaa
    Nov 8, 2020❤️3
    1
    写个代理
    oahebky
    oahebky
    Nov 8, 2020 via Android❤️1
    2
    叫你一声 Nginx, 你敢不敢答应
    DoodleSit
    DoodleSit
    Nov 8, 2020❤️1
    3
    k8s + docker 配置组网
    oahebky
    oahebky
    Nov 8, 2020 via Android❤️1
    4
    @DoodleSit

    恕我直言,你说的这个是网管的网络知识,和考一个思科证书差不多。

    当然我只是指出来,说不定别人需要的正是这个。
    zonde306
    zonde306
    Nov 8, 2020❤️1
    5
    UDP 实现可靠数据传输协议( TCP 、QUIC )、UDP 实现 SSL ( QUIC )
    实现语音流 /视频流协议
    实现 DNS 协议
    Cbdy
    Cbdy
    Nov 8, 2020 via Android
    6
    写个简单的浏览器
    ericgui
    ericgui
    Nov 8, 2020
    7
    @Cbdy 不错,😝
    nightwitch
    nightwitch
    Nov 8, 2020
    8
    https://github.com/skywind3000/kcp
    看懂这个项目在做啥
    lifetimeporn
    lifetimeporn
    Nov 8, 2020
    9
    https://github.com/zhxie/pcap2socks
    看懂这个项目在做啥
    yolee599
    yolee599
    Nov 8, 2020 via Android
    10
    写一个软路由
    jizhihaoSAMA
    jizhihaoSAMA
    Nov 8, 2020
    11
    8 、9 楼的太硬核了吧
    zomco
    zomco
    Nov 8, 2020❤️2
    12
    做一个软路由效果会好些,从物理层到应用层都有涉及
    zhangfeiwudi
    zhangfeiwudi
    Nov 8, 2020
    13
    我也想问,go 这一块有合适的开源项目参考吗
    yingo
    yingo
    Nov 8, 2020
    14
    这的确是一个好问题.
    unixeno
    unixeno
    Nov 8, 2020 via Android
    15
    写一个 VPN
    laminux29
    laminux29
    Nov 8, 2020
    16
    实现一个简易 Tomcat 服务器,已经不是练手了。你要能实现出来,bat 随便你进了。
    Tianao
    Tianao
    Nov 8, 2020
    17
    @oahebky #9 恕我直言,99% 的企业 /公司网管和 99% 的 CCNP 都不会这个(现学现卖不算,这样的话高中生都会)。
    Tianao
    Tianao
    Nov 8, 2020
    18
    @Tianao #17 不好意思楼上打错了,#17 回复的是 #4.
    zhao1014
    zhao1014
    OP
    Nov 8, 2020
    19
    @yolee599
    @zomco
    有开源项目可供参考吗?
    sxl2000303
    sxl2000303
    Nov 8, 2020
    20
    写一个 shadowsocks
    raaaaaar
    raaaaaar
    Nov 8, 2020 via Android
    21
    一千多点击,这么点回复,这让我想起知乎上一个问题,为什么国外的论坛,如 quora 人们不喜欢评论,但是知乎喜欢评论
    murmur
    murmur
    Nov 8, 2020❤️1
    22
    自己写一个 qq,不要用 tcp 直接 raw socket 自己开整
    Exin
    Exin
    Nov 8, 2020 via iPhone
    23
    给 openwrt 做点贡献?
    rb6221
    rb6221
    Nov 8, 2020❤️2
    24
    内网的实时聊天软件就很不错,包括服务端和客户端,如果想学客户端知识顺便可以自己写客户端,不想的话就用命令行实现吧
    grofis
    grofis
    Nov 8, 2020 via iPhone
    25
    如无必要 勿增实体
    如果有了 Tomcat 为什么还要实现 Tomcat
    wudaye
    wudaye
    Nov 8, 2020 via Android
    26
    裸写个 http 服务器?
    ccsexyz
    ccsexyz
    Nov 8, 2020❤️1
    27
    代理太简单了,整个复杂点的吧,写个 http server 吧。 比如 https://github.com/zyearn/zaver
    xyooyx
    xyooyx
    Nov 8, 2020 via iPhone❤️1
    28
    写个内网穿透,很有趣的
    cctv6
    cctv6
    Nov 8, 2020 via Android❤️1
    29
    计算机网络我觉得核心就在路由交换和协议,只是一个应用单独看上去确实少了很多。

    建议整个模拟器实际上手组网,或者上面说的 k8s 的网络配置。
    levelworm
    levelworm
    Nov 8, 2020 via Android
    30
    写个 MUD 算么。。。用 socket
    SpiderXiantang
    SpiderXiantang
    Nov 8, 2020❤️1
    31
    我感觉自己实现一套 tcp 还行,实现 tomcat 的话其实是在练习 socket 编程,并且里面的容器啥的实现其实对网络水平提升没啥用
    nutting
    nutting
    Nov 8, 2020❤️1
    32
    去看 gost 这个软件的源码
    KagurazakaNyaa
    KagurazakaNyaa
    Nov 8, 2020
    33
    dn42
    simonlu9
    simonlu9
    Nov 8, 2020❤️2
    34
    unix 网络编程 里面有一个是从 0 到 1 的 sokcet 服务器改造的,里面牵涉很多知识点,对着代码敲应该吸收很多,看源码的话你压根不知道为什么参数这么设,比如为什么聊天室都会有心跳包这玩意,本身 tcp 就有 keepalive,这种问题你不遇到过根本不知道为什么要这样做
    xchaoinfo
    xchaoinfo
    Nov 8, 2020 via Android
    35
    mitmproxy 是不是有帮助,最近在啃这个的源码
    msg7086
    msg7086
    Nov 9, 2020
    36
    @laminux29 简易的 tomcat 很难吗?
    分解一下的话,多线程,套接字,然后拿包出来拆一下字段塞进字典里喂给后端的程序不就结了。
    都说是简易的 tomcat 了,当然不需要做到能进 bat 的程度。
    chaleaoch
    chaleaoch
    Nov 9, 2020
    37
    不知道计算机网络知识具体指什么. 我觉得搞一个类似 v2ray 的东西应该挺难的...
    zhao1014
    zhao1014
    OP
    Nov 9, 2020
    38
    @chaleaoch 运用 TCP/HTTP 协议相关知识
    zomco
    zomco
    Nov 9, 2020❤️2
    39
    @zhao1014 硬件树莓派,软件 OpenWrt,容易上手,社区生态都可以。建议有目的去做,比如做个扶墙的家庭网关
    echoe
    echoe
    Nov 9, 2020
    40
    Mark 我也想学一下
    zarte
    zarte
    Nov 9, 2020
    41
    试着入侵下 v 站
    8bit
    8bit
    Nov 9, 2020
    42
    弄个简单的 ftp 服务器或者客户端
    adminii
    adminii
    Nov 9, 2020 via iPhone❤️1
    43
    网络协议:ARP 协议攻击,抓包工具,WIFI 密码破解( AES 最早的那种,算出来的),TCP,UDP,ICMP 发包工具,802.1X 认证工具
    应用协议:使用 UDP,ICMP 实现 TCP (丢包重发,滑动窗口算法等)
    chaleaoch
    chaleaoch
    Nov 9, 2020❤️1
    44
    @zhao1014 撸一个 nginx tomcat guncorn uwsgi 之类的东西. 如果觉得难度大 /不显示,就分析源码,如果还觉得难度大, 网上有 nginx 源码剖析注释版.
    xiaolong620
    xiaolong620
    Nov 9, 2020
    45
    跑 java 来问不合适吧,我也想学,真香!
    PDX
    PDX
    Nov 9, 2020 via iPhone
    46
    玩儿 openwrt
    Jirajine
    Jirajine
    Nov 9, 2020 via Android
    47
    手写一个加密代理。
    zhao1014
    zhao1014
    OP
    Nov 9, 2020 via Android
    48
    @xiaolong620 问的就是 java 实现 XD
    newmlp
    newmlp
    Nov 9, 2020
    49
    写一个代理或猥皮恩
    irytu
    irytu
    Nov 10, 2020
    50
    http://csapp.cs.cmu.edu/3e/labs.html 最后一个 lab 拿走
    fasionchan
    fasionchan
    Nov 10, 2020
    51
    写个 ping 命令,写个 traceroute 命令,写个 VPN,写个 Socks5 代理,写个 HTTP 服务器,写个 FTP 服务器,方法简直不要太多~~~观察常用网络工具、网络服务的行为,然后结合网络协议思考它是怎么实现的,最后将它山寨一遍就可以彻底掌握与之相关的网络知识~

    我当年在腾讯实习时,有一个作业性质的项目就是开发一个高并发 FTP 服务器,很考察网络功底和动手能力,所以学习还是要多实践。

    我最近计划写一个网络协议入门教程:

    https://www.yuque.com/coding-fan/network

    里面的编程实践环节,就是手把手演示如何从零实现一个网络工具,例如:重新发明 ping 命令或许可以参考下。只不过,刚刚起步,更新速度不快,大概是一周一两篇。等不及的话,热烈欢迎一起来写,哈哈~~~
    catsoul
    catsoul
    Nov 10, 2020
    52
    emmmm,感觉最简单的就是搞个 arp 欺骗的工具
    beitayongguo
    beitayongguo
    Dec 8, 2020
    53
    好问题
    xsgaaa
    xsgaaa
    Dec 28, 2020
    54
    网络聊天室程序
    jvv
    jvv
    Mar 25, 2023 via iPhone
    55
    @fasionchan 大佬不更了吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1954 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 122ms · UTC 16:36 · PVG 00:36 · LAX 08:36 · JFK 11:36
    ♥ Do have faith in what you're doing.