两台电脑通过网线互相传递数据的原理

问题1: 为何网络掩码会自动添加?

因为 192.168.0.1 为C类地址,它的网络掩码缺省就是24位的,配置界面自动填写24 位掩码,是为了方便用户配置,操作界面默认你会用24 位掩码。

我们可以这样来写一个IP地址及它的掩码:

192.168.0.1 /24

也可以写成 :

192.168.0.1 255.255.255.0

这里网络掩码255.255.255所覆盖的IP地址的高三个字节为 192.168.0,192.168.0是网段地址(net),剩下的就是1了,1为主机地址(host)。

所以你看一个IP一般由两部分组成:net.host = 192.168.0.1

问题2: 第二台电脑为何只能使用 192.168.0.2-192.168.0.254?

192.168.0.0 这个IP 和网段地址相同,所以操作系统一般不允许电脑使用此IP地址。

192.168.0.255 这个IP保留为 192.168.0.0 这个网段的广播地址,所以也不允许电脑使用。

192.168.0.1 已经被使用,所以只剩下192.168.0.2-192.168.0.254这些地址可以给第二台电脑使用。

问题3: 电脑A(192.168.0.1/24)如何与电脑B(192.168.0.2/24)通信?

举个简单例子,在电脑A上 ping 电脑B:

第一步: 在电脑A DOS上输入命令:ping 192.168.0.2

第二步:A的应用程序PING,将ICMP的头部以及数据部分填写好,在Windows OS 下一般为 ICMP Header + ICMP Data = 8 + 32 = 40 byte ,调用IP socket 函数,将这40 byte 字节发送给内核里IP进程

第三步:IP进程首先检查192.168.0.2 和自己位于一个网段,都为192.168.0,通过它们之间直连的网线可以到达对方。但是对方的MAC地址不知道?为何要知道对方MAC地址?因为不知道对方MAC地址,就无法告诉网卡将包发到何方,不是吗?如何知道对方的MAC地址呢?用ARP啊

第四步: 因为ARP destination MAC 用的是FF.FF.FF.FF.FF.FF 广播地址,所以对方B可以收到并回答其MAC地址。

第五步: A的IP进程有了B的MAC地址,可以填充IP头了,一共20 byte,加上ICMP 40 byte,一共60 字节 的数据,调用网卡发送函数,并告知destination MAC = B 的MAC

第六步:A的网卡加上14 byte的 Ethernet header 以及 4 byte CRC ,一共 78 byte 发送出去。

第七步:B的网卡接收并匹配自己的MAC地址,检查是否CRC有错,然后通知IP进程有数据

第八步:IP进程取走数据,检查是否有误,于是提交给位于内核的ICMP处理

第九步:ICMP进程改写相应的包头,采用类似第二步到第六步的过程完成相反方向的通信。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值