链路两段不同网段怎么通信_网络工程师(11):详解电脑间通信

de48d864d221dc4f5ca2b4932adf5b74.png

现在,我们已经解决了网络中的基本问题,接下来让我们讨论一下两台电脑究竟是怎样通信的。

a86a9b478f848ee6ff438a4944008781.png

假设PCA为用户电脑,PCB为提供web服务的服务器。PCA的IP地址为10.1.1.2,掩码255.255.255.0,网关10.1.1.1;PCB的IP地址为10.1.4.2,掩码255.255.255.0,网关10.1.4.1。我们来讨论PCA访问PCB的整个过程(各层协议的封装内容较多,我们只填写其中便于我们理解通信的主要内容。部分内容虽然很重要,但跟我们理解通信关系不大,就不在这里填写了,比如序号等)。

用户在PCA上打开浏览器,地址栏输入http://10.1.4.2:80,http的默认端口号为80,一般省略不写,只写http://10.1.4.2就可以。浏览器把此套接字信息向下传递给传输层TCP协议(http是基于TCP的)。

TCP收到应用层的信息后,填写TCP的“快递单”,源端口号随机选取动态端口号49152~65535中的一个,假设为56789,目的端口号为80,SYN=1,把自己设置为握手请求报文,再向下传递给网络层IP协议。

1700ee51ea657b5d208342f9748be837.png

“快递小哥”IP收到后,填写“快递单”,源IP地址填写10.1.1.2,目的IP地址填写10.1.4.2,协议号填写6(表示这份快递是TCP的,UDP是17)。此时,IP协议发现源地址与目的地址不在同一个网段,因此需要查找电脑的ARP表中,有没有网关10.1.1.1的MAC地址,如果没有,则向网关发ARP Request报文请求网关的MAC地址,并写入ARP表中,再向下传递给链路层的以太网协议。

1c00fe5ea782bccf52e0c9c6dc9dadde.png

链路层以太网收到后,填写以太网封装,目的MAC地址填写网关的MAC地址MAC_R1,源MAC地址填写自己的MAC地址MAC_PCA,Type填写0x0800(0x表示后面的数字是十六进制,0800表示快递是IP给下来的)后,把这些信息用二进制通过线缆传给了R1。

26d4418a178d41d7c1d14895961c5577.png

R1收到后,发现目的MAC是自己的MAC地址,于是拆除以太网封装,并根据Type的内容0x0800把数据交给IP协议。

IP协议收到后,根据IP封装中的目的地址10.1.4.2查找路由表,发现下一跳地址是10.1.2.2,此地址与R1的E1/1接口相连,接口地址是10.1.2.1/24,于是把数据包送到接口E1/1,E1/1接口需要把此数据包送给对面的10.1.2.2,需要再次封装为以太网帧才可以传递过去,于是查看路由器上ARP表中有没有10.1.2.2对应的MAC地址,若没有,则从接口E1/1发送ARP Request请求10.1.2.2的MAC地址并写入ARP表中。把数据包封装为以太网帧,源MAC为MAC_R1,目的MAC为MAC_R2,Type还是0x0800,发送给了R2。

123d241b76c078637b1b1d1b46475e93.png

R2收到后把刚才R1做的事再做一遍,数据被发给了R3。

R3收到后,拆除以太网封装,根据IP封装中的目的地址10.1.4.2查找路由表,发现这个地址与本路由器地址为10.1.4.1/24的接口直连。把数据送到此接口后,查找路由器的ARP表中有没有10.1.4.2的MAC地址,若没有就从接口发ARP Request请求,然后封装成以太网帧发出去。

7f40189b2d5ada2a4e72aec703b1e045.png

我们发现,路由器如果发现数据封装中的目的IP地址不是自己接口的,则会根据路由表送到出接口,然后再封装为以太网帧发出去,并不改变网络层之上的任何内容。也就是说,数据从源地址发送到目的地址期间,沿途所有路由器只会根据每条链路的不同,改变链路层封装,并不改变网络层之上的任何内容。

从数据转发的角度,路由器工作在链路层和网络层,并不关心网络层之上的东西,这也是为什么把路由器归为三层设备。同理,交换机只根据以太网链路层封装转发数据,不关心链路层之上的内容,所以交换机也归为二层设备。

最后,我们看看PCB收到后怎么处理。

PCB收到后,看到目的MAC为MAC_PCB,正是自己的,所以拆除以太网封装,并根据Type内容交给IP协议。网络层IP协议查看封装中的目的IP地址为10.1.4.2,还是自己的IP地址,于是拆除IP封装,根据协议号6,交给TCP协议。TCP协议查看封装中的目的端口号为80,查看应用层HTTP进程是否存在,若不存在,则报Port Unreachable(端口不可达)错误,否则本端以56789为目的端口号,80为源端口号,与对端进行三次握手建立TCP连接,连接建立成功后,把本机的Web主页内容层层封装后传给网关R3,之后过程与前述基本相同,最终到达PCA。

于是,PCA的浏览器呈现出了精彩的网页内容。

小Q:配置电脑的IP地址信息时,如果不配置网关会有什么结果?

欢迎大家留言讨论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值