运营商路由器,也可以把它当做一个NAT设备它就会对中间经过的数据包,进行网络地址转换当内网设备经过运营商路由器访问外网的时候就会把IP数据包中的源ip,替换成它自己的ip.
我的电脑要发送一个数据给cctalk服务器此时,我的电脑上就会构造出一个IP数据包
在两个连接时候会出现在运营商路由器的时候创建了一个表
所以他就会根据查询的结果和这个表来转换将IP和端口都替换回来
但是假设两个端口号是一样的呢?
运营商通过在不用的源IP定义为不用的源端口号,这样就防止了,服务器只返回一个反馈的问题。
然后建立相应的映射表,
这样的话站在服务器视角,看到两个数据包来自一个IP,但是是不用的端口,
但是站在运营商的视角,他们通过源IP和映射表就能定位到哪个是哪个发送的信息。
3)IPv6终极方案
IPv6拿16个字节来表示IP地址~~
IPv4和IPv6不兼容!,导致世界主宰还是IPv4
为啥NAT能火,NAT是纯软件的方案,不需要换设备,只要更新一下路由器上面的程序(固件).成本非常低~~
IP地址的基本规则
1)网段划分
同一个局域网的主机,要按照一定的规则分配IP地址。
把一个IP地址(IPv4)分成两个部分
前半部分,网络号=>标识局域网
后半部分,主机号=>区分同一个局域网中的不同主机。
同一个局域网内部,主机之间的IP,网络号相同,主机号要不同~~
局域网之间,网络号可以相同.但是,两个相邻的局域网(同一个路由器,wan口和lan处于两个不同局域网)路由器就是连接两个局域网的桥梁,网络号不能相同。
引入概念:子网掩码(Mask)
也是32位的整数.左半部分都是1,右半部分都是0不会0 1交替出现~
255.255.255.0
此处,前3个字节,24位是网络号后1个字节,8位,是主机号.
网段划分,分为ABCDE类
特殊的IP地址
主机号全0:这样的IP表示网段,不应该分配给具体的主机~~
主机号全1(二进制):这样的IP表示广播IP,
往广播IP上发送数据,此时,就会发送给局域网中的所有设备。
127.*这样的地址,环回ip(loopback)。
127.0.0.1往这个ip中发送数据,就是自己来接收~微信,可以自己给自己发消息~~
IP协议:
1地址管理2)路由选择
最优解不是说只有一种按照不同的角度,得到最优解~。
网络中,路由器的寻路,则无法做到“最优解”只能做到“较优解”
每一台路由器,无法知道整个网络的“全貌但是可以知道它附近的网络设备情况是咋样的(朋友)
如何达到~~只能通过“启发式”“探索式”方式,逐渐找到最终的目标~ 。
启发式过程就是问路的过程。
每个路由器,虽然无法感知到整个网络结构的全貌,但是可以认识到它周围的网络设备路由器中,会维护一个数据结构,路由表,记录了周围的朋友都是啥样的。
当路由器收到数据的时候,就会根据目的ip,查询路由表,看看在路由表中是否存在如果存在,好办,直接按照目标的位置继续转发即可,如果不存在,就会从朋友中,挑选一个最“神通广大”的朋友,把这个数据交给这个最神通广大的朋友~~。
路由表中的“下一跳表项”。牵扯到“路由表生成算法”。
以太网,横跨数据链路层和物理层~~
mac地址(物理地址)
物理地址,是在网卡出厂的时候,就设置好的~~
通过mac是可以定位到你这个人的~~
IP地址作用是支持整个传输过程转发
MAC的作用支持两个相邻节点之间的转发.
主机A就要查询路由表,发现目的ip在路由表里没有没有就需要走"下一跳"~~(默认的表项)
到了数据链路层)就要决定,具体怎么找(数据包要从路由器的哪个接口发送出去)
长期目标的起点
长期目标的终点 四缺一不可
短期目标的起点
短期目标的终点、
IP数据报:分用的时候发现类型是0x0800的时候此时就需要把这个数据交给网络层的IP协议了。
ARP协议是为了给每个路由器/交换机建立一个"转发表”(不是路由表)。
刚才谈到的转发数据的过程中
先根据目的ip,确定接下来往哪走,知道下一跳的IP(查路由表)根据下一跳的IP,查转发表,知道IP对应的mac/端口是哪个然后再发.......
DNS
域名解析系统
域名就是一串单词,就可以使用这一串单词,来表示某个/某组IP地址了
以前人们都用hosts
但是文件很大,而且不方便更新,网站频繁更新。
所以引用了DNS服务器
1)客户端缓存.
你的电脑尝试访问某个域名,得到ip.(记住了)
放入了缓存之中。
下次再访问同一个域名的时候,就不会重新查询DNS服务器你每天上的就这么廖廖几个网站,但是这些网站访问此时都是很多的~~
2)分布式的方式.
全世界各个地方,建设了很多DNS镜像服务器.
所有镜像服务器都是一样的,只有一个根域名服务器(其他镜像服务器的源头)。
pic.scgou,com
com: 一级域名。
scgou:二级域名。
pic:三级域名。
查询过程,先查询一级域名 =〉二级 =〉三级