有没有什么练手项目可以充分利用到计算机网络相关知识? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhao1014
V2EX    Java

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

  •  2
     
  •   zhao1014 2020-11-08 11:44:34 +08:00 8713 次点击
    这是一个创建于 1799 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    第 1 条附言    2020-11-09 11:03:23 +08:00
    敲重点,是“练手”!目的在于帮助理解
    55 条回复    2023-03-25 11:50:49 +08:00
    araaaa
        1
    araaaa  
       2020-11-08 11:58:04 +08:00   3
    写个代理
    oahebky
        2
    oahebky  
       2020-11-08 12:13:04 +08:00 via Android   1
    叫你一声 Nginx, 你敢不敢答应
    DoodleSit
        3
    DoodleSit  
       2020-11-08 12:17:31 +08:00   1
    k8s + docker 配置组网
    oahebky
        4
    oahebky  
       2020-11-08 12:23:12 +08:00 via Android   1
    @DoodleSit

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

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

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

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

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

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

    里面的编程实践环节,就是手把手演示如何从零实现一个网络工具,例如:重新发明 ping 命令或许可以参考下。只不过,刚刚起步,更新速度不快,大概是一周一两篇。等不及的话,热烈欢迎一起来写,哈哈~~~
    catsoul
        52
    catsoul  
       2020-11-10 09:55:23 +08:00
    emmmm,感觉最简单的就是搞个 arp 欺骗的工具
    beitayongguo
        53
    beitayongguo  
       2020-12-08 17:06:17 +08:00
    好问题
    xsgaaa
        54
    xsgaaa  
       2020-12-28 21:28:53 +08:00
    网络聊天室程序
    jvv
        55
    jvv  
       2023-03-25 11:50:49 +08:00 via iPhone
    @fasionchan 大佬不更了吗
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1071 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 33ms UTC 18:00 PVG 02:00 LAX 11:00 JFK 14:00
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86