局域网中路由器&网卡

网卡

唯一的标志 MAC地址:14:21:S8:8B:44:89 昵称:TP-Link-4489

如何获取局域网IP?

DHCP(动态主机配置协议)

DHCP 服务器可以动态的分配地址。

1)网卡(TP-Link-4489)向局域网发送一个报文以获取自己在局域网中的IP地址。

网卡工作在数据链路层, 必须得知道对方的MAC地址才能发信,如果不知道就对外广播, 那就是所有局域网内的电脑都会收到。

报文包括:

应用层的DHCP发现报文, 然后被一个UDP的报文封装,然后再被一个IP的数据报封装,然后再被以太网数据链路层的数据报封装。

通过网线发给了交换机。  交换机看到FF:FF:FF:FF:FF:FF, 立刻转发给了所有连到交换机的设备。

2)局域网里可能有多台DHCP服务器,每台服务器都会跟进MAC和端口进行回复,里面包含了分配给你的IP地址和DHCP服务器地址。

3)需要网卡(TP-Link-4489)选择一个DHCP服务器地址并进行回复确认分配的IP。

4)DHCP会返回一个确认消息,包括网关路由器的地址 , DNS服务器的地址,当然还有IP地址。

最终,网卡(TP-Link-4489)得到了:自己在局域网中的IP : 192.168.1.2,网关路由器:192.168.1.1,DNS服务器:202.152.219.74

如何访问外网?

最直接获取域名IP地址的方式:

发件人: 192.168.1.2    (网卡(TP-Link-4489))

收件人: 202.152.219.74   (DNS服务器)

内容:  给我www.baidu.com的IP地址

存在的问题:

  1. 网卡是数据链路层的需要通过mac地址通信
  2. DNS服务器不在我们的局域网内,要把这个发给网关路由器(有一个与ISP网络相连的外网IP地址89.32.288.156),由他转给DNS服务器的。
  3. 网关路由器的MAC地址是什么呢?

ARP(地址解析协议)

通过广播查询一个IP地址对应的MAC地址。

收件人: FF:FF:FF:FF:FF:FF (同一子网内的所有电脑)

发件人: 14:21:S8: 8B:44:89  (网卡(TP-Link-4489))

内容:网关路由器(192.168.1.1), 给我你的MAC地址!

通过返回信息获取网关路由器的mac地址(28:91:S8:3A:44:55)并进行保存。

NAT(网络地址转换)

发给网关路由器查询域名对应的IP:

发件人: 14:21:S8: 8B:44:89  (网卡(TP-Link-4489))

收件人: 28:91:S8:3A:44:55   (网关路由器)

内容: DNS服务器(202.152.219.74)  给我www.baidu.com的IP地址

把数据链路层的封装去掉, 发现IP数据包中的目标地址是 202.152.219.74, 网关就知道这是要向外网发出请求了。
于是把IP数据包中的源地址192.168.1.2 替换成网关的外网地址  89.32.288.156。
创建一个新的端口号1029, 把TCP数据包中的源端口也替换掉, 数据包就变成了这个样子:

把源地址和源端口都替换了, 其实就是让外部的网络认为这是网关路由器发出的, 而局域网内的网卡对外是不可见的。

这就是网络地址转换,网关路由器需要保存一份NAT转换表,譬如LAN端192.168.1.2:1028-->202.152.219.74:1029

当回复到达路由器时去掉数据链路层的封装,发现TCP和IP数据报中包含这样的信息:目的地IP : 202.152.219.74 , 端口 1029 ,根据NAT转换表,把数据报中的IP地址和端口号改了发回给网卡(TP-Link-4489)。

UPnP

网卡主动要求网关路由器建立一个NAT映射 (192.168.1.2 : 4096) <-> (61.52.247.112: 3001)。

此时此网关的某个端口就是某块网卡专用了,此网卡的此端口就可以成为网卡与外界交流的专线。

原文地址:https://www.cnblogs.com/wade-luffy/p/8548519.html

时间: 2024-10-09 03:52:44

局域网中路由器&网卡的相关文章

如何查找局域网中设备的IP

---恢复内容开始--- 在玩转Raspberry Pi以及以后自己搭建平台的过程中,难免要查找局域网中的设备的IP地址,现在就为大家梳理一下常用的几种方法: 1.通过360路由器卫士等路由器监控设备可以很方便的查找到连接到同一路由器的设备的IP地址 2.使用猎豹免费wifi.360免费wifi等开启电脑热点的软件,可以在这些软件的管理页面上看到连接wifi设备的IP地址 3.除了通过一些软件可以比较方便的查找出局域网中设备的IP地址,如果所有设备都是连接到路由器,可以通过浏览器查找IP地址 在

如何在外网中访问自己在另一个局域网中的某个机器(SSH为例)

UBUNTU 14.04 LTS 为例 如何在外网中访问自己在另一个局域网中的某个机器(SSH为例) 2013-05-01 16:02 2693人阅读 评论(0) 收藏 举报 情景描述: 计算机C1放置在局域网LN1中,LN1中的所有计算机都链接到了路由器R1上. 计算机C2放置在另一个局域网LN2中,并且LN1与LN2不属于同一个基于网. 要实现的功能: 使用C2通过SSH链接到C1上. 要求: 必须要从C1端操作.(这里假设C1为Linux) 步骤: C1端配置 1, ifconfig 来获

linux在虚拟机中把网卡模式从NAT换成桥接无法显示网卡

linux centos6.5在虚拟机中把网卡模式从NAT换成桥接无法显示网卡 今天在虚拟机中装完系统,使用ifconfig查看了下网卡的地址,发现不是局域网中的,后来检查发现是虚拟机设置成了NAT,所以就立即把NAT换成桥接模式但是出现了一下状况: 1.使用ifconfig显示如下信息 又使用dhclient来自动获取: 这下还是没有地址,重启了网络服务 /etc/init.d/network restart 2.使用vi命令来打开网卡配置配置信息,然后把ONBOOT=no改成ONBOOT=y

怎样设置局域网中电脑磁盘共享

怎样设置电脑磁盘共享-局域网中的Win7系统中的磁盘怎样设置互相访问... ================= 一.什么是局域网中的共享磁盘 1.硬盘共享:硬盘共享是指多人(一般是同一网段.局域网.网上邻居用户)共同读写(使用或访问). 2.作用:如果一个局域网内有多台电脑,可以对电脑硬盘进行共享,这样其他电脑就可以很方便的访问到另外一台电脑硬盘上的内容. ================= 二.开始设置磁盘共享: 1.搭建局域网环境: 环境:TP-LINK路由器一台+一台台式机+3台笔记本 目

linux中多网卡绑定

linux中多网卡绑定 实验背景: (1)虚拟机系统:Centos6.7 (2)两张网卡 网卡绑定应用: 为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断.比如我们可以将eth0和eth1绑定成虚拟网卡bond0. 实验步骤: (1)在/etc/sysconfig/network-scripts/下创建虚拟网卡bond0的配置文件ifcfg-bond0,命令如下: [[email protected] ~]# c

java 获取局域网中的所有主机名和IP地址

DOS命令 命令 意义 net view 获取局域网中的所有主机名 ipconfig -all 获取本地IP,主机名,MAC地址 arp -a 获取本局域网中的所有IP地址和物理地址 ping -a x.x.x.x 获取x.x.x.x的主机名 nbtstat -a 主机名 获取MAC地址 java exec 执行外部命令 String command = "net view" Runtime r = Runtime.getRuntime(); Process p = r.exec(co

自己的两台电脑,在局域网中,可以快速共享两个电脑的文件,可以很方便操作。

1.可以启用远程控制,让A控制B.这样比较方便. 2.在同一个局域网中,可以让两台机器在局域网中,设置某些文件夹共享.这样可以非常方便,而且这样操作,A就像同时拥有A和B两台电脑的硬盘一样.而且还可以同时操作两台电脑,建立一个notepad(记事本)文件,比如在a电脑浏览器上看到一个需要下载的文件.但是A电脑在运行很多程序,下载起来很慢,这个时候就可以用这个共用文件当文字传递工具用了. 3.刚刚这种方式,是用文件共享的方式来传递一段文字的.(有的同学会问,为啥不用qq直接传输呢?这是因为两台电脑

局域网中彻底隐身

WindowsXP/Vista/Win7 局域网中彻底隐身 一.DOS命令隐藏 net命令是我们使用最广泛的网络命令之一,在对隐藏局域网中的计算机同样发挥着不俗的作用.在研究了它的参数,发现只要使用"net config server"即可实现.在DOS下输入"net configserver /?"回车,查看其子参数,发现"/HIDDEN:{YES NO}",看清楚之后,就可以进行操作了.在命令提示下输入"net configserv

获取局域网中指定IP或是主机名称的所有文件夹及其搜索文件

最近做个功能在局域网中所有指定文件,于是花了点精力完成了部分功能,先贴上 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Syst