网络协议图

先介绍网络层(IP协议)
一.基本概念
• 主机:配有IP地址,但是不进⾏路由控制的设备;
• 路由器:即配有IP地址,⼜能进⾏路由控制;
• 节点:主机和路由器的统称;
二.协议报文格式

IP协议的复杂程度不亚于TCP,这里就不介绍那么详细,日常开发最多用到传输层就够了,网络层一般不会涉及到
三.IP协议/网络层做的两个工作
1.地址管理:使用IP地址,这样的概念,来表示网络上某个设备的位置
报头属性的介绍


思考:如果基于UDP实现传输超过64kb的数据要怎么设计?
在应用层协议中就可以表示符,指定片偏移,指定标志位




接下来重点讨论32IP地址 (版本IPV4也是现今世界用的最多的)
32位ip地址是否够用?
32位IP地址能表示的数量最多也就42万亿9千多万(2的32次方),现今能上网的设备早就突破这个数字来,全球的手机电脑,各种只能家具什么的,都需要一个IP地址
不够用了怎么办?
1.动态分配IP地址(治标不治本)
2.NAT网络地址转换(主力方案)
3.IPV6(中级方案) 16个字节来表示ip地址 共有2^32 * 2^32 * 2^32 * 2^32 = 天文数字
接下来介绍NAT(网络地址转换)机制


NAT背景下网络通信时如何进行的
1)如果同一个局域网内部的两台设备想通信,是否可以通信?
肯定是没问题的,因为同一个局域网的两台电脑的IP地址肯定是不一样的,可以正常通信
2)两个公网设备进行通信是否可行?
也是没问题的,公网ip都是不重复的,可以正常通信
3)如果两个局域网的两台电脑要通信呢,这两台设备很可能IP地址一样,这时候咋整呢?
当前的规则,是禁止这种情况的!!!!!
如果必要的时间,迫切需要两台设备通信呢?比如两个人在地球的两端发微信通信,这就需要有一个带有外网IP的设备进行中转!
4)局域网内部的设备访问带有外网IP的设备, 是否可行?
可行的,这个过程就涉及到NAT工作机制了

上述是经过IP和端口号经过NAT机制转换的全过程
但是还有一个问题,万一又有一个舍友2的端口号和我俩的重复该怎么办?
这是小概率事件,真出现了也没关系,比如下图舍友2的端口号和我的端口号一样,经过NAT不就跟我的IP冲突了吗

不会的

上述就是NAT机制工作的全过程
5)公网设备尝试访问局域网设备是否可行?
不行!!! 公网中只能看到路由器的公网IP,无法直接定位到局域网内的具体设备,相当于给局域网加了一层"隐身保护"。
但是有特殊情况,比如:内网穿透

为什么主流是NAT机制而不是使用IPV6版本?
其实IPv6和NAT诞生的时间差不多,为啥NAT能成功呢,而IPv6举步维艰呢?
是因为IPv6和IPv4不兼容,要想升级IPv6,就要更换路由器设备==>花钱
(升级IPv6不会提高网速,更不会提高流畅性)
相比之下,NAT方案只需要路由器开发商开发出新版本的软件(路由器固件),升级软件,即可直接支持(成本非常低)
中国IPV6的普及程度非常高,但是只是普及还没使用,想要使用随时可以大规模更换,主要原因分配IPV4的IP地址的分配权在美国手里,在中美关系下行的局势下,美国一旦不给中国分配IP地址,分分钟让中国全国都不能通信,虽然IPV6美国有话语权,但是中国也有
IP地址的组成
IP地址分为两个部分:网络号+主机号
网络号:标识网段(局域网),保证相互连接的两个网段具有不同的标识
主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号


如果手动把路由器网络号设置成与相邻局域网的网络号,那么这两个路由器都无法通信
子网掩码


特殊IP地址
强制要求

习惯用法

小结

2.路由选择
上面介绍的知识,主要是IP 协议如何管理地址的.(地址管理)
IP 协议的另一个重要的功能,路由选择.(数据报在 IP 协议下是如何进行传输的)
互联网,整体来说,非常庞大,复杂.任何一个路由器,都无法认识到网络的全貌!!
在高德地图上,如果你搜一个目的地,就能够规划处几条路线.地图软件路径规划,是站在全局的角度,地图服务商这边能够知道整个的城市道路情况, 交通情况做出一个"最优解"但是路由器,无法做到理解全貌,只能认识部分网络环境 (路由器能够知道和它相邻的一些设备的情况)
在这个前提下,进行路由转发,就只能"摸着石头过河”,走一步算一步,这里给出的路径,也不一定是最优解,只能说是"较优解”
路由器转发数据的过程,类似于"问路"
比如↓



四.数据链路层
在这里只简单的介绍以太网协议
以太网协议不只是数据链路层的协议还包含更下一层的物理层
但凡你的电脑是通过网线上网的走的协议就是以太网协议, 网线==以太网线
通过WiFi上网走的是801.11协议
以太网数据帧


这里就有一个问题:IP地址和mac地址有啥区别,有了IP地址为啥还有mac地址?
其实理论上来说,网络通信中,有一组地址,就够用了
最初构建 网络层协议的大佬 和 构建数据链路层协议的大佬,不是一伙人~~
发明之前没讨论,所以都发明出来了,但是发明出来之后谁也不服谁,就都留下了
IP 就专门给网络层使用,mac 专门给数据链路层使用~~
程序员日常开发的时候,基本都是和 IP 打交道,不会涉及到 mac
IP 是在网络层使用,关注于整个网络路径的转发传输过程
Mac 是在数据链路层使用,关注与转发的细节,两个相邻设备之间的转发~~
举个例子
因此我们在通讯的时候,只需要自动填写对方的IP地址,操作系统会查询arp表,自动获取对方的MAC地址,从网卡发出

以太网数据帧其他属性

第二种数据类型发送接收ARP
第三种就不介绍了
三.DNS域名解析系统
平时我们上网要访问服务器,需要知道服务器的IP地址,而IP地址是渔船数字,虽然这个数字使用点分十进制已经清晰不少了,但是仍然不方便人们传播记忆,于是就使用单词来代替IP地址
使用baidu,taobao等单词来代替IP地址
这样的单词就称为域名,实践中为了保证域名的唯一性,域名往往是分级
www.baidu.com com是一级,baidu是二级,www是三级
域名是给人看的,但是机器不认识,于是就有一套系统,把域名自动翻译成IP地址,这个系统就是DNS


全世界上网的设备这么多,如果每次发起网络请求,都需要先访问 DNS 服务器的话, DNS 服务器就要承担海量的并发量,挂了吗??
如何解决上述方案?


美国对于IPV4和DNS绝对掌控,中国如何突破(大力发展IPV6)
具体看这个
2050

被折叠的 条评论
为什么被折叠?



