网络原理
网络层
网络层主要负责:地址管理、路由选择 主要协议:IP协议 IP协议当前主要就两个版本:IPv4、IPv6
网段划分
把一个IP地址分为两部分 网络号:局域网的身份标识 主机号:用来区分一个局域网中不同的主机 同一个局域网中,各个设备的网络号相同,主机号不同 两个相邻的局域网,网络号不同 过去曾提出把所有的IP地址分为5类 A 0+7位网络号+24位主机号 0.0.0.0-127.255.255.255 B 10+14位网络号+16位主机号 128.0.0.0-191.255.255.255 可划分65535台主机 C 110+21位网络号+8位主机号 192.0.0.0-223.255.255.255 D 1110+28位多播组号 224.0.0.0-239.255.255.255 E 11110+27位留待后用 240.0.0.0-247.255.255.255 但是这种划分方式导致B类网络地址不够用,而A类却浪费了大量地址 所以现在基本不用这种方式,而是引入了子网掩码来区分网络号和主机号 子网掩码也是一个32位的整数,特点就是从二进制的角度来看,前半部分都是1后半部分都是0。子网掩码与ip地址进行按位 与运算 得到的结果就是网络号,剩下的部分就是主机号。如: IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24,表示IP地址为140.252.20.68, 子网掩码的高24位是1,也就是255.255.255.0 特殊的IP地址: 将IP地址的主机号全部置为0,就成了网络号,代表这个局域网 将IP地址的主机号全部置为1,就成了广播地址,用于给这个网络的所有主机发送数据报 127.* 的IP地址用于本机的环回IP,通常使用127.0.0.1 IP地址的数量限制 IPv4 是一个32位的整数,范围:0-42.9亿 所以导致IP不够分,于是出现了两个方案: 动态分配:某个设备不上网,就不分配IP地址,只给使用网络的分配IP地址,但是这个方案治标不治本,还是不够用 NAT机制:把IP地址分为外网IP和内网IP,用一个外网IP代替N个内网IP(路由器用外网IP换掉源IP,把不同IP的源端口换为不同的源端口)这样一来,路由器接收到服务器的响应时,通过端口再传给不同的主机即可。这样一来,结合端口号就可以区分不同的设备(外网IP唯一) IP地址专门划分出一部分标识局域网内部使用的IP(私网IP): 10.* 172.16.* 192.168.* 在命令行窗口敲入 ipconfig 查看本机IP 如果有外网IP,就能被所有设备访问,如果没有外网IP,就只能被局域网内部的设备访问 IPv6 是和IPv4 并列的协议,可以理解为IPv4的升级版,IPv6能够保证地址够用。IPv6用16个字节来表示IP地址 也就是128bit位,能表示的范围为2128 IPv6虽然可以从根本上解决IP不够用的问题,但是IPv6与IPv4不兼容,而当前情况下,大部分设备都只支持IPv4,如果要升级IPv6就需要更换这些设备
路由选择
路由就是一次一次在网络上寻找目的地(目的地址)时问路的过程 每个路由器内部都会维护一个数据结构 路由表 ,如果直接能查到目的IP,就直接转发至目的IP的端口,如果查不到,就转发至这个路由器默认的端口(路由器的WAN口,也就是转发至路由器的上一级端口),再次进行查询,直到找到为止。 网络通信的核心过程就是 查路由表 的过程
数据链路层
在目的地址传输数据时,路线怎么选,这是网络层的工作,那么路线选好后,要怎么传输,这就是数据链路层的工作了。 数据链路层中最核心的协议:以太网协议 FDDI协议,平时用的网线就叫以太网线 关于网络传输的数据,涉及到几个不同的概念: 传输层,数据一般叫做 数据段 segement 网络层,数据一般叫做 数据报 packet 数据链路层,数据一般叫做 数据帧 frame MAC地址,也叫物理地址,是和主机网卡设备绑定的,只要主机出厂,MAC地址就被写死了。每个设备的MAC地址都是唯一的,不会冲突,每个设备的MAC地址一般是不能被改变的。 虽然已经有IP地址了,但是MAC地址也有准确的定位: IP地址立足于全局,进行网络路线规划 MAC地址立足于局部,只关注相邻节点间的通讯 目的地址:这里的目的地址指的是目的MAC地址,这个目的MAC地址并不是最终的IP地址所在的地址,而是这个设备的相邻设备,根据MAC找到要从哪个网口把数据发送出去,然后目的MAC得到数据后会修改目的MAC,又改为下一个目的MAC地址,直到到达最终地址。如果只有IP或只有MAC地址,也完全可以完成转发功能。 源地址:与目的地址一样,每到达一个目的MAC地址,就会重新进行构造源地址和目的MAC地址 MAC地址为6个字节 48位,如图 由于物理地址不可改变,所以常用来: 1、绑定付费软件使用(如:外挂) 2、不允许游戏多开的检测 3、封号(封机)
ARP协议
我们在传输数据时,到达目的MAC地址后,就需要更改目的MAC地址,查询路由表就可以得到下一个设备的IP,然后我们用下一个设备的IP通过ARP协议来获得下一个设备的MAC地址 ARP 会每隔一段时间,给当前局域网进行广播(一个局域网中的设备并不是一成不变),广播给当前局域网中的所有设备后,各个设备就会回应一个ARP响应,ARP响应中就会带有自己的IP和MAC,然后路由器就会把这些信息保存起来。 ARP协议只是辅助转发,并不是真正携带数据。 ARP应用比较广泛,是通过IP来查找MAC RARP应用的比较少,是通过MAC来查IP
应用层
DNS协议
DNS协议,又名域名解析系统。作用就是通过域名来查找IP地址。 一般访问网站时,我们通常都是通过域名来来访问,而不是通过IP地址来访问(域名就是一个字符串),但是本质上的网络传输,还是靠IP地址。 DNS可以把域名转化为IP地址,记录了域名和IP的映射关系 如果代码是供个人使用,就没有使用域名的需要,如果是给广大用户使用,那么域名就有必要要搞一个了(而且要备案) 原本这个映射关系保存在本地,但是维护的成本太高,所以就把这个映射关系放在了服务器上,(hosts文件虽然保留了下来,但是已经不再使用了),但是全世界这么多客户端都访问DNS服务器来获取IP,DNS的服务器是不够用的,于是有了两种解决方案: 浏览器本地缓存。 分布式:全球存在很多DNS服务器,网络运营商也会搭建自己的DNS服务器,都是从 根域名服务器 进行数据同步的。 https://www.baidu.com/ 在这个url中,一级域名为com(二级域名baidu,三级域名www),,DNS服务器1就只保存com系列的域名、服务器2就只保存cn系列的域名,服务器3就只保存vip(org…)系列的域名,这样一来每个服务器保存的数据都不会很多,压力就不至于太大了。 比较知名的 根域名服务器 : 8.8.8.8 114.114.114.114
补充
有时候电脑可以登上QQ,使用各种软件,但是网页打不开。 这种情况多半是当前的域名解析服务器出现了问题,手动把IPv4中的获取DNS域名改为8.8.8.8就可以了
浏览器中输入一个url,会发生什么事情? 在后端,网络传输过程(DNS解析,HTTP协议的格式,TCP建立连接和传输,IP协议转发过程,数据链路层转发过程) 应用程序(Tomcat根据请求找到servlet代码,执行代码,根据请求构造响应,把响应返回给客户端) 服务器整体系统处理流程(分布式架构的基本面) 在前端,网络传输过程(DNS解析,HTTP协议的格式,TCP建立连接和传输,IP协议转发过程,数据链路层转发过程) 浏览器是如何处理用户操作的(包括但不限于 浏览器如何读取到地址栏的字符串。如何构造一个HTTP请求,如何发送出去) 浏览器如何处理服务器的响应数据(如果相应是一个HTML,浏览器如何把HTML文件渲染成最终页面的效果)
|