socket外网通信_局域网内的tcp通信 ping

先说条件,一个路由器 和 两台电脑,连不连外网都可以。

首先是局域网内的静态ip设置:(不设置也可以,但是不是静态的话就会变,对程序不好)

下面是静态ip的设置:

47ea6de8ad802c39ac1736d3f16a6154.png

一台电脑是133,另一台是122,网关都是192.168.1.1 。设置好后用ipconfig查看一下以太网的网卡是否配置成功。我的显示如下:

80397ad18e0c4f5a3e894c4989a6c31a.png

首先是最简单的ping. 显示如下,非常成功。

781d3c697efb08c23af491640dbed656.png

然后我把路由器接运营商的网线拔了,显示依然不变,说明局域网内的ping并不需要外网。(其实对计算机网络有些了解的就很容易理解了,ping使用的是icmp报文,这个是和tcp和udp并列的,可以在ip头中的上层协议位中查看icmp

88d19ce7994172b0197b84ae2b83e7f9.png

然后使用wireshark抓包:

首先看总体的架构:

7e380884c9aa9877958dca2aff8aaeb1.png

很多时候都是在进行广播ARP读取mac地址。也就是在向局域网内查询。上面4个部分是是查询的icmp报文。

对计算机网络不太理解的同学可以参考:

何柄融:网络层 wireshark IP ICMP ARP分析​zhuanlan.zhihu.com
何柄融:小谈ARP欺骗--深入理解ARP协议​zhuanlan.zhihu.com
https://blog.csdn.net/tigerjibo/article/details/7356936​blog.csdn.net

进行简单的学习。

ICMP主要就是一个ping请求和ping应答。在ping就是测试是否可达目的地的。

(我对这些东西的理解也不是很深,所以欢迎交流讨论)

然后是局域网内的tcp通信:

这里为了简单,我直接使用的是野火的USR-TCP232网络调试助手。在122这里设置一个tcp服务器,133这边进行连接:

a2310c39f8589b91e52b9c4e0b23c8aa.png

然后不知道为啥,客户端这里设置tcp clinet之后就不能连接,然后我就用Java写了个简单的客户端代码如下:

public class HelloWorld {
    public static void main(String[] args) throws Exception {
        Socket socket=new Socket("192.168.1.133",6000);
        InputStream ins=socket.getInputStream();
        OutputStream ous=socket.getOutputStream();
        ous.write("i am client".getBytes());
        byte[] a=new byte[1024];
        while(true){
            ins.read(a);
            String string=new String(a);
            System.out.println(string);
        }

    }
}

然后服务器显示就是上图有个 i am client就表示连接成功了。

这样以来也表示不需要连接外面的网络就可以进行局域网内的tcp通信。(我想着的是或许需要DNS进行域名解析的话就需要外网了,或者保存在hosts文件也行,这里有太多不知道的东西了,也没那么多时间去研究运行商的底层操作。。)

然后我用wireshark进行抓包:

9e298b918bf28bce70c25f655f010a77.png

嗯,这里就简单的三次连接,然后发送数据,然后ack。断开连接那部分没抓。下面是具体tcp数据域部分,也就是程序发送的数据:

de083b3b5ec62fce41b549f48f7d8b51.png

嗯,感觉还是挺简单的。(所幸自己了解的东西不是很少,遇到问题时能想到一些解决办法)

对了,在windows上进行这些操作的时候,记得把防火墙关闭了先,不然容易出错。

如果要回到之前的上网状态的话,得修改静态ip为自动获取IP地址和DNS服务器。

欢迎交流讨论。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值