文章目录
- 5层模型及各层功能
- 网络层
- ip协议作用
- 为什么有了IP地址还需要mac地址
- ip地址有什么用,为何不直接使用mac地址定位
- 为何不放弃使用mac地址
- NAT网络地址转换
- 如何解决ipv4不够用的问题
- 交换机和路由器区别
- 什么是ARP
- 两台电脑连起来后 ping 不通,你觉得可能存在哪些问题
- ping过程
- 在同一个局域网中
- 不再同一局域网中
- 网络延迟计算
- 如果访问一个网站很慢,如何排查解决
- 多播
- 单台服务器最大支持多少TCP连接数
- 计算机安全
- 摘要算法:
- Linux网络指令
- 什么是负载均衡Ngix
5层模型及各层功能
- 应用层:不关心数据传输,只关心业务逻辑,只关心产生什么数据。产生多大的数据。然后发送给下层。
- 传输层:
- 数据的拆分重组:比如10个G数据,传输层对数据进行分包,组包(分割和重组),拆分并组包成不同大小(TCP)。UDP不拆分直接发
- 提供不同可靠性传输,TCP可靠,UDP不可靠
- 端口寻址:IP层找到某个IP地址,然后传输层找到对应的应用进程端口号,将数据发送给相应进程。
- 其他TCP流控,拥塞控制等功能。
- 网络层:
- 路由寻址:通过路由选择算法为分组通过通信子网选择最适当的路径。将数据包从一个ip通过各个路由跳传到目的ip
- 流量控制
网络中多个层次都存在流量控制问题,网络层的流量控制则对进入分组交换网的通信量加以 一定的控制,以防因通信量过大造成通信子网性能下降。 - 网络连接建立与管理
- 数据链路层:
- MAC寻址
这是数据链路层中的MAC子层主要功能。这里所说的“寻址”与“IP地址寻址”是完全不一样的,因为此处所寻找地址是计算机网卡的MAC地址,网络层找到目的网络IP,数据链路层会确定mac地址,也就是定位到哪一个设备,因为每个设备都有独立的mac地址。我们如何把数据从一个设备传输给另一个设备。 - 封装成帧:因为物理层只提供比特流传输,mac层把上层的发来的IP数据包封装成帧,加上头部和尾部,这样接收方就可以界定数据的大小和是否传输完整。提供差错控制功能:采用帧传输方式的好处是,在发现有数据传送错误时,只需将有差错的帧再次传送,而不需要将全部数据的比特流进行重传,这就在传送效率上将大大提高。
- 向上层提供服务:链路层向网络层提供的服务这个在5G中是通过RLC层也就是mac层的上一层来做的。
无确认无连接,不做检测与控制由上层来做,提高效率。
有确认无连接,不需要建立链路,但是会对帧进行确认,不一定按顺序发送。
确认有连接,建立连接按顺序发送并且确认接收
- 物理层:在何种媒介上进行传输,比如wifi,或者光纤,或者5G。
网络层
ip协议作用
主要功能:
- 路由包括两个基本动作:寻址和转发。寻址就是选择到达目的的最佳路径,有路由选择算法来实现的。寻址分为:直接寻址和间接寻址。直接寻址:源主机和目的主机在相同网络中,则可以直接将数据发送。间接寻址:源主机和目的主机在不同网络中,发生在三层的。就需要通过路由选择算法来选择下一条路由,一直到目的IP。
- IP子网机制:
于是人们想了一个办法,就是把网络划分成很多个子网。
这样,在路由的时候,路由器可以把其他子网看成一个整体来进行计算。对于目的地在其他子网的数据包,路由器只需要让数据包到达那个子网即可,而剩下的工作由子网内部解决。
为什么有了IP地址还需要mac地址
ip地址有什么用,为何不直接使用mac地址定位
如果直接使用mac地址相当于全网搜索目的mac,那么计算量太大。而使用ip子网机制,大大减小计算量和存储量。
虽然这种方法只能让寻找到的路径接近最优而不保证最优,不过它大大减少了路由器的计算量,利大于弊,所以被采用了。如果直接使用mac地址,,我们会发现路由器需要记住每个MAC地址所在的子网是哪一个这个需要占用内存就太大了。
为何不放弃使用mac地址
由于IP只是逻辑上标识,任何人都随意修改,因此不能用来标识用户;也就是说我们给某个设备分配一个ip地址,我可以随时修改这个分配的IP,这是不安全也不方便的。那么我们需要一个固定的标识来确保设备的唯一性,这个就是mac地址。
类比形象理解:
IP地址好比住址的门牌号,住在不同的地方就有不同的门牌号,邮局送信的时候回根据这个门牌号找到你的位置。但是门牌号可能改变,也就是过段时间重新编排门牌号,你这个门牌号就变了。IP地址也是,分配给你的ip地址过一段时间可能就改变了,重新分配另一个。
MAC地址好比身份证号码,一出生就有的且不会发生改变。我想找到你这个人,仅根据IP地址找到了你家,却发现你不在家,你可能移动到其他地方,但是我还是可以根据身份证确定你的身份。
NAT网络地址转换
主要是将内部的私有IP地址映射成可以在公网使用的公网IP。
因为一个ip地址定位一个网络设备,ipv4的地址肯定不够用。可以使用NAT方式来进行一个公网IP对应多个私网IP地址进行联网。
比如给一个家庭分配一个公网ip,这个家里的所有设备上网都可以使用端口多路复用技术。具体的表现形式就是,对外只有一个公网IP,通过端口来区别不同私有IP主机的数据。
NAT可以同时让多个计算机同时联网,并隐藏其内网IP,因此也增加了内网的网络安全性;
如何解决ipv4不够用的问题
- 动态分配IP地址,不联网的设备就不给他分配ip地址,腾出来给其他人用
- NAT,将一个公网ip,通过+端口号的形式映射成多个私网ip。
- ipv6,下一代,可以给地球上每一个沙子都分配一个IP地址
交换机和路由器区别
- 一般交换机用于局域网,工作在数据链路层和物理层,也有三层交换机工作在网络层,硬件实现路由转法,速度快,但只能实现简单转发
- 路由器使用软件实现,较慢,能实现复杂网络路由,他是IP层的传输
什么是ARP
使用ARP协议可实现通过IP地址获得对应主机的物理地址(MAC地址)。
在局域网的任意一台主机中,都有一个ARP缓存表,里面保存本机已知的此局域网中各主机和路由器的IP地址和MAC地址的对照关系。
两台电脑连起来后 ping 不通,你觉得可能存在哪些问题
- 物理层检查:检查是否正确连上网络
- 网络层:检查是否处在同一个局域网,或者路由设置不合理,网络延迟过大。
- 应用层,检查是否被防火墙或者软件拦截。
ping过程
给某台设备通信,我们最主要的任务是获取到该设备的mac地址。
在同一个局域网中
- 首先封装icmp报文,然后查询自己的主机ARP缓存表中是否存在目的ip对应的mac地址
- 如果不存在,则他会去交换机中ARP缓存表搜索对应mac地址
- 如果还没有则交换机发送ARP广播,目的机器接收到广播后发现是要的自己mac地址,然后将mac地址发送。
不再同一局域网中
- 如果发现目的ip和自己不是同一个网段,则主机会发送给网关,进行转发。
- 网关会使用路由协议一跳一跳,直到找到目的IP。
- 目的ip设备将mac地址返回给主机,然后主机发送数据。
网络延迟计算
- ping使用udp,所以一来一回就只用60ms。
- HTTPS使用TCP,请求先要三次握手,就要90ms,然后又要进行ssl四次握手,第四次是传输数据,所以发送数据时是180,而是到数据传输过去到服务端需要210ms.
如果访问一个网站很慢,如何排查解决
这里列举出一些较常出现的问题:
- 首先最直接的方法是查看本地网络是否正常,通过测试软件测试本地网速和带宽,我们查看网络带宽是否被占用,例如当你正在下载电影时并且没有限速。
- 当网速测试正常时,我们对网站服务器速度进行排查,通过 ping 命令查看链接到服务器的时间和丢包等情况,一个速度好的机房,首先丢包率不能超过 1%,其次 ping 值要小,最后是 ping 值要稳定,如最大和最小差值过大说明路由不稳定。
- 看运营商原因:如果网页打开的速度时快时慢,甚至有时候打不开,如果是在有的地方打开速度快,有的地方打开速度慢,那应该是网络线路的问题。电信线路用户访问放在联通服务器的网站,联通线路用户访问放在电信服务器上的网站,相对来说打开速度肯定是比较慢。
- 可能是网站本身找原因。网站的问题主要包括网站程序设计、网页设计结构和网页内容三个部分。
多播
多播一般是局域网中的实现。
tcp只能是单播,他是点对点的协议。
多播分为广播和组播。
广播是,一个发送给所有,组播是一个反送给一组中的所有。
多播的好处:比如一个机器要发送1G的数据给100个机器,那么我们要单播发送那么在机器内部复制一百份数据,但是实际上多播不是这样处理的,发送端只发送1G而,这些复制都在网络交换机中进行复制,这样发送端就不需要处理大量数据了,整个网络带宽也消耗更少。
单台服务器最大支持多少TCP连接数
有的朋友可能会说是65535,因为操作系统有65535个端口。错。
首先先了解下如何标识一个链接,操作系统是通过一个四元组来标识一个TCP链接:
{本地ip,本地port,远程ip,远程port} 也就是本地IP+端口,远程ip+端口
这四个要素唯一确定一个TCP链接,任意一个要素不相同,就认为是一个不同的链接。所以并发连接数并不仅由端口来决定。
连接发起端:一般是一个ip,(当然一个机器也可以配多个IP),端口号数为65535-1024(预留端口)=64000
链接接收端:接收端就多了可以开启的链接数就多了,接收端的一个端口可以接收很多个连接,最大的TCP链接数 = 所有有效ip排列组合的数量 * 64000(端口数量)
实际情况下,每创建一个链接需要消耗一定的内存,大概是4-10kb,所以链接数也受限于机器的总内存。(链接发起端,活力全开才64000左右链接,内存最多才占用640M,一般客户端都能 满足;内存限制主要还是考虑服务器端)
Linux上开启端口限制。
计算机安全
摘要算法:
场景举例:密码保存:他不可逆,服务器把用户密码加一段字符串然后使用md5加密生成一长串字符。这个过程不可逆,所以即使别人盗用,也不知道密码是什么。
当服务器从客户端拿到密码,还是使用摘要算法对密码加密生成字符串,然后和数据库中的比对看是否匹配。
Linux网络指令
- ssh 远程登录
- scp远程拷贝文件
- ifconfig 查看当前机器网络接口
- netstat 本机网络状态,也就是端口使用状态
- ping 查看ip地址(做了DNS)和丢包率
- telnet 和服务器建立连接并进行通信
什么是负载均衡Ngix