您的位置:首页 > 理论基础 > 计算机网络

浅析计算机网络(1) -- 主机如何上网

2015-12-16 15:49 706 查看

主机如何上网

首先我们要考虑的一个问题就是,我们的主机如何连入到网络之中,也就是为什么当我们将电脑连接网线之后,我们就可以上网了,这个过程发生了什么?



首先根据上图,我们来一个总览,当我们的电脑通过网线接入的时候,是如何获取到IP的来上网的,当我们用手机连接wifi又是如何获取IP来上网的。

拨号连接

对于拨号连接,当我们电脑连接网线,然后开始进行拨号连接的时候,我们的电脑此时在拨号未成功前已经进入了一个网段,但是不能上网的原因就是我们没有IP,即使我们的请求可以出去,它也回不来,没有源IP地址,返回的数据是无法找到我们的,然后这个时候,如果要上网,获取IP是迫在眉睫的事情了。当我们在我们家中上网的时候是如何获取的呢?

先看下我们小区网络设施的架构是如何?



我们的每一个小区中有一个路由器,路由器是具有IP和Mac地址的,然后我们的小区中还有一个交换机,交换机是没有IP和MAC地址的,其作用是根据我们来的数据包进行一个针对mac地址的转发,其中存放的是MAC地址和对应的转发接口,这个时候可能会存在的一个疑问是为什么不直接用路由器进行转发而还要用交换机呢?

路由器和交换器的不同

1.路由器是可以替代交换机的,但是交换机是不可以替代路由器的,路由器相当于是网桥,而交换机则相当于一个加强的集线器。

2.路由器是根据网络IP地址进行转发,属于网络层。而交换机是根据MAC地址进转发,属于链路层。

3.路由器可以自行拨号,而交换机则不可以。通过路由器,我们将路由器的wan口连接到网络,lan口连接我们的电脑,进入我们的路由器配置界面,此时,路由器会自动的检测我们的上网方式,然后根据我们输入的相应的参数进行一个连接,这个时候,我们上网就不需要自己配置了,直接就可以上网了。

4.路由还可以提供防火墙的功能。而交换机不可以。

5.交换器具有自学习功能,而路由不具备,从交换器流过的数据报,其mac地址会被记录下来。

为什么要用交换机

交换器常用来组建一个局域网,然后通过路由器将其连接到Internet上去,说了其不同,但是为什么要用交换机呢?它能干的事情,路由器都能干,而且路由器还有其很多无法实现的功能。原因就是其处理快速,价格便宜,其根据帧中的MAC地址识别转发接口的算法简单,而如果将这些全部让路由器来承担,这样就要精确的保存,该小区中所有用户的IP地址,并且每一个IP地址,我们都需要进行一个比对,确定从哪个接口中出来,因为不在是第一个区域的ip表示,无法通过前缀辨别了,所以需要对每一个ip都预留一个唯一的端口,这样当我们的小区中新添加了用户,那么就需要单独有一根线从路由器中出来连接向它,这样一个小区就需要很多台路由器来做这个操作,但是当我们使用交换机就可有效的解决这个问题,我们将每所有的用户通过交换机进行连接,交换机的另一端和路由器进行连接,这样路由器就可以通过前缀匹配将数据报发给一个交换器,然后交换器负责分发,这样即使用户增加,其只需要连接到交换器,而不需要到路由器拉根线过来。这样可以减少了路由器数量上消耗,降低了成本,提升了速度。

开始获取IP

当我们接入到了网络中之后,我们的操作系统生成一个DHCP(Dynamic Host Configuration)报文,发向DHCP的服务器的67端口,但是我们怎么知道DHCP服务器地址呢?我们是不知道的,因此采用方式是在我们本地的68端口,生成一个UDP包,其目的IP字段填写的IP地址是255.255.255.255,然后向全子网进行广播通过发送以太网帧,该帧的目的MAC地址是FF:FF:FF:FF:FF:FF,此时局域网中的主机收到后,是不会进行处理的,然后传到路由器,路由器接收到之后,检测其包含DHCP请求,然后交给上层处理,此时发送给DHCP服务器,这个时候,服务器接收到DHCP报文,会返回一个回应报文,其中包含分配给它的IP地址,DNS服务器地址,默认网关路由器IP地址,也就是第一跳路由器的IP地址,这个时候,开始返回报文,报文如何找到是那一台主机发出了这个报文呢?没有IP地址,但是它有默认网段路由器地址,也就是第一跳路由的地址,得到这个地址后,填充发送过来的源的MAC地址,然后返回,这个时候,到达路由器之后,发送到交换器,因为交换器具有自学习功能,也就是谁从它走过,它都是会记录下来的,而且会记录下从哪个接口进入,什么mac地址从哪一个接口进入,然后什么时间进入的,通过这个表,我们就可以将信息转发给我们的目的广播主机。此时我们就拿到IP和DNS服务器的地址,和我们默认网关的地址。

有了IP地址,我们接下来就可以访问网络了。

无线连接

WIFI

我们通过我们的wifi进行连接上网的时候,和该过程不同,我们的发送wifi信号的AP本身是具有IP地址的,在其下面的连接的便携设备的IP是采用NAT协议(Network Address Translation)来给我们本地的便携设备生成一个ip,然后通过这个ip进行标记每个接入设备。后面有NAT具体实现讲解。讲到NAT,可能会想到一个问题,为什么有mac地址,而要用IP地址呢?原因是MAC地址的分配是不规则的,无法根据一个mac地址来确定其存在的位置,所以找起来是非常费力的。但是如果在一个wifi下的话,在查询上这应该不是一个问题了,为什么还用用ip,通过mac地址,再去广播,确认接收,不也是可以的吗,但是当我们最初没有分配IP的时候,怎么通过IP找呢?只能通过MAC地址去找。

如何接入?

首先,每个AP设备会会周期性的发送一些信表帧(SSID,MAC地址),然后我们的便携设备会扫描所有的信道获取该区域内的所有信标,也就是我们手机开机wifi的时候,我们看到的名字是ssid,mac地址,我们看不到的,然后我们与之建立关联,即可发送数据。我们请求的数据报,会被路由进行伪造,然后通过路由器的IP发送出去,回来的时候进行解包,分到每一个设备上。

WLAN

我们使用的移动的WLAN虽然都是通过我们的wifi可以搜索的到,但是其实现是不同的,对于WLAN,其被我们找到的过程和我们连接wifi是一样的,但是其并不通过NAT协议,而是我们借助于它作为一跳路由,向DHCP服务器获取一个IP,这个过程和我们通过拨号接入大致相同,唯独不同之处在于我们和第一跳路由的连接方式,一个是有线,一个是无线的,无线的如何维持这个连接和避免信道冲突的,将在后面具体细说。

NAT:为了解决IP不够用的问题,出现了NAT协议,NAT的实现是我们组建一个子网,然后整个子网对外面来说是只具有一个IP,在内部又劝很多的子IP,这就涉及到一个问题,如何来区分这写子IP呢,首先想到的是通过IP数据报中的选项字段进行一个标记,但是当我们携带数据的时候,拆分起来就很麻烦了,所以想到但是在运输层的报上做手脚,在运输层的报中,对于端口号给了一个很大的长度,但是我们的区间常常只是占用很小的一部分,1024以下为周知端口,5000以下用来分配给应用进程,所以想到了通过修改一个较大的端口号,来识别每一个子网中的不同的端,但是一个端口号怎么识别呢?首先通过DNCP,分配给子网的短一个IP,或者是手动分配,然后这个端将要发送数据报的时候,数据报到达网关,网关会给这个数据报分配一个很大的端口号,然后将这个数据报的源端口号和IP地址存放在一个表中,当返回的数据报带来,检测到为一个较大的端口号,则会通过查表找到对应的端,然后将数据报交给它。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: