V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhao1014
V2EX  ›  Java

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

  •  2
     
  •   zhao1014 · 341 天前 · 5769 次点击
    这是一个创建于 341 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言  ·  341 天前
    敲重点,是“练手”!目的在于帮助理解
    54 条回复    2020-12-28 21:28:53 +08:00
    araaaa
        1
    araaaa   341 天前   ❤️ 3
    写个代理
    oahebky
        2
    oahebky   341 天前 via Android   ❤️ 1
    叫你一声 Nginx, 你敢不敢答应
    DoodleSit
        3
    DoodleSit   341 天前   ❤️ 1
    k8s + docker 配置组网
    oahebky
        4
    oahebky   341 天前 via Android   ❤️ 1
    @DoodleSit

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

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

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

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

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

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

    里面的编程实践环节,就是手把手演示如何从零实现一个网络工具,例如:重新发明 ping 命令或许可以参考下。只不过,刚刚起步,更新速度不快,大概是一周一两篇。等不及的话,热烈欢迎一起来写,哈哈~~~
    catsoul
        52
    catsoul   340 天前
    emmmm,感觉最简单的就是搞个 arp 欺骗的工具
    beitayongguo
        53
    beitayongguo   311 天前
    好问题
    xsgaaa
        54
    xsgaaa   291 天前
    网络聊天室程序
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2162 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:08 · PVG 11:08 · LAX 20:08 · JFK 23:08
    ♥ Do have faith in what you're doing.