1号电脑要向4号电脑发送一个数据包。它先判断4号电脑是否在同一个子网络,结果发现不是(后文介绍判断方法),于是就把这个数据包发到网关A。网关A通过路由协议,发现4号电脑位于子网络B,又把数据包发给网关B,网关B再转发到4号电脑。
1号电脑把数据包发到网关A,必须知道网关A的MAC地址。所以,数据包的目标地址,实际上分成两种情况:
场景 | 数据包地址 |
同一个子网络 | 对方的MAC地址,对方的IP地址 |
非同一个子网络 | 网关的MAC地址,对方的IP地址 |
发送数据包之前,电脑必须判断对方是否在同一个子网络,然后选择相应的MAC地址。接下来,我们就来看,实际使用中,这个过程是怎么完成的。
八、用户的上网设置
买了一台新电脑,插上网线,开机,这时电脑能够上网吗?
通常你必须做一些设置。有时,管理员(或者ISP)会告诉你下面四个参数,你把它们填入操作系统,计算机就能连上网了:
* 本机的IP地址
* 子网掩码
* 网关的IP地址
* DNS的IP地址
下图是Windows系统的设置窗口。
九、一个实例:访问网页
我们假定,经过上一节的步骤,用户设置好了自己的网络参数:
* 本机的IP地址:192.168.1.100
* 子网掩码:255.255.255.0
* 网关的IP地址:192.168.1.1
* DNS的IP地址:8.8.8.8
然后他打开浏览器,想要访问Google,在地址栏输入了网址:www.google.com。
1:发送数据包,必须要知道对方的IP地址 , 现在知道网址www.google.com,不知道它的IP地址。那么向DNS服务器发送请求,获取ip地址
2:判断,这个IP地址是不是在同一个子网络,这就要用到子网掩码。
如果不是:通过网关192.168.1.1转发,也就是说,接收方的MAC地址将是网关的MAC地址。
如果是:广播方式发送
3:浏览网页用的是HTTP协议,它的整个数据包会被嵌在TCP数据包之中。T
4:TCP协议,TCP数据包需要设置端口,接收方的,发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。
5: IP协议:IP数据包需要设置双方的IP地址
6:以太网协议:以太网数据包需要设置双方的MAC地址
7:多个网关的转发,Google的服务器172.194.72.105,收到了这四个以太网数据包。
根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的"HTTP请求",接着做出"HTTP响应",再用TCP协议发回来。
本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。