如果一个IP数据报携带的数据载荷太长了,超过64kb,就会在网络层针对数据进行拆分。把一个数据拆分成多个IP数据报。再分别发送给接收方,再重新拼装。
接收方:数据链路层,针对两个数据帧进行分用,得到两个IP数据报,交给网络层,网络层针对这俩IP数据报进行解析,把里面的载荷拼成一个,交给传输层。
161.185.187.142
是采用点分十进制表示的。(使用三个.
把32位 4个字节的数字给分割开,分成四部分,每个部分分别使用0-255
十进制整数表示。)所谓地址,期望每个设备都不相同。但是 随着时代的发展,32位数字,只能表示42亿九千万个数字,即IP地址不够用。为了解决这个问题,有很多方法:
动态分配IP地址。
NAT网络地址转换。本质上就是使用一个IP代表一批设备。
在NAT背景下 将IP地址分为两个大类:
(1)内网IP(私有IP)10.*
, 172.16.*-172.31.*
, 192.168.*
(2)外网IP(公网IP)剩下的就是公网IP
NAT要求,公网IP必须是唯一的,私网IP可以在不同局域网中重复出现。
如果某个私网里的设备想访问公网的设备,就需要对应的NAT设备(路由器),把IP地址进行映射,从而完成网络访问。
反之,公网的设备,无法直接访问私网的设备。不同局域网的私网的设备没法直接相互访问。
内网IP只要在局域网内部不重复即可,不同局域网中则是可以重复的。
NAT机制能够有效的解决IP地址不够用的问题 但是使得网络环境更加复杂了。
IPv6:从根本上解决了IP不够用的问题。使用16字节表示IP地址。
当前世界上 仍然是以NAT+Ipv4+动态分配来进行网络组建的。
IP地址分为两个部分,网络号和主机号
网络号:标识网段,保证相互连接的两个网段具有不同的标识;
主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;
即通常情况下:IP 192.168.0.10
中:192.168.0
为网络号10
为主机号。
一个IP地址从哪到哪是网络号,从哪到哪是主机号,是由子网掩码来确定的。
1的部分就描述了IP有多少位是网络号。
路由选择就是规划路径 相当于使用地图导航。
由于真实的网络环境非常复杂,任何一个节点(路由器)都是无法感知到网络环境的全貌的。一个路由器最多只认识他的一些邻居。如果要进行一个比较长的路径的转发,就比较麻烦。
考虑相邻节点之间的传输。(通过网线/光纤/无限直接相连的两个设备)
以太网帧格式:
以太网数据帧 = 帧头+载荷+帧尾
帧头:含有目的地址(mac地址(物理地址)),源地址, 类型。
载荷:完整的IP数据报。
IP和mac是如何相互配合的?
IP用来描述整个传输过程的起点终点,mac则是用来表述两个相邻节点的起点和终点。
这是数据链路层中另外的协议:ARP协议。
通过这个协议,让某个路由器/交换机,能够认识局域网中的其他设备。通过ARP协议会在交换机/路由器中建立一个表。这个表相当于一个hash表,能够建立出IP和mac之间的映射关系。
MTU是一个数据链路层的数据帧,它表示了能够承载数据的最大长度。(载荷的长度)
载荷具体多长,和使用的物理介质有很大关系。当然也和数据链路层使用的协议有很大的关系。比如以太网协议 MTU1500字节。
正式因为MTU引起了IP这个协议来进行分包组包。
IP的分包组包通常不是根据这个IP最大长度来分的。大概率情况下,数据链路层的MTU比64kb要小。
其实网络上的服务器,要访问它,需要的是, IP地址。但是IP地址太拗口,于是使用一些简单的单词构成字符串来表示这个地址。每个域名都对应了一个/N个IP地址。既然如此,就需要能够把域名和IP地址给对应上。
在早期的时候, 互联网上的服务器很少, 这域名和IP这样的映射关系只是使用一个hosts文件来维护, 每个用户只需要手动自己的hosts文件就可以了, 现在的电脑还是有这个文件的, 也可以使用.
后来互联网蓬勃发展, 到现在每天都有很多新的网站诞生, 此时想要依靠手机维护已经不现实了, 于是现在就有了DNS服务器来维护域名和IP的映射关系, 当你想要访问某个域名时, 就会自动请求DNS服务器, 然后就会返回具体IP地址进行访问.
如果电脑的DNS服务器配置不对, 或者是DNS服务器挂了, 就会出现一个典型的情况: 网络正常的情况下, QQ等应用程序可以用, 但是网页打不开了.
我们自己电脑的DNS服务器可以通过如下方式配置,
首先打开设置中 “网络和Internet” 中的 “高级网络设置” , 点击 “更多网络适配器器选项”.
这里可以自己去配置DNS服务器的地址。