计算机网络基础知识—— 各层功能及网络层

5层模型及各层功能

  1. 应用层:不关心数据传输,只关心业务逻辑,只关心产生什么数据产生多大的数据。然后发送给下层。

  2. 传输层:

    1. 数据的拆分重组:比如10个G数据,传输层对数据进行分包,组包(分割和重组),拆分并组包成不同大小(TCP)。UDP不拆分直接发
    2. 提供不同可靠性传输,TCP可靠,UDP不可靠
    3. 端口寻址:IP层找到某个IP地址,然后传输层找到对应的应用进程端口号,将数据发送给相应进程。
    4. 其他TCP流控等功能。
  3. 网络层:

    1. 路由寻址:通过路由选择算法为分组通过通信子网选择最适当的路径。将数据包从一个ip通过各个路由跳传到目的ip
    2. 流量控制
      网络中多个层次都存在流量控制问题,网络层的流量控制则对进入分组交换网的通信量加以 一定的控制,以防因通信量过大造成通信子网性能下降。
    3. 网络连接建立与管理
  4. 数据链路层:
    https://blog.csdn.net/jinjiniao1/article/details/90633477

    1. MAC寻址
      这是数据链路层中的MAC子层主要功能。这里所说的“寻址”与“IP地址寻址”是完全不一样的,因为此处所寻找地址是计算机网卡的MAC地址,网络层找到目的网络IP,数据链路层会确定mac地址,也就是定位到哪一个设备,因为每个设备都有独立的mac地址。我们如何把数据从一个设备传输给另一个设备。
    2. 封装成帧:因为物理层只提供比特流传输,mac层把上层的发来的IP数据包封装成帧,加上头部和尾部,这样接收方就可以界定数据的大小和是否传输完整。提供差错控制功能:采用帧传输方式的好处是,在发现有数据传送错误时,只需将有差错的帧再次传送,而不需要将全部数据的比特流进行重传,这就在传送效率上将大大提高。
    3. 向上层提供服务:链路层向网络层提供的服务这个在5G中是通过RLC层也就是mac层的上一层来做的。无确认无连接,不做检测与控制由上层来做,提高效率。有确认无连接,不需要建立链路,但是会对帧进行确认,不一定按顺序发送。确认有连接,建立连接按顺序发送并且确认接收
  5. 物理层:在何种媒介上进行传输,比如wifi,或者光纤,或者5G。

网络层

ip协议作用

网络层协议:主要功能是寻址和路由,根据目的IP地址,并选择合适的路径,对数据进行转发直到目的主机。

为什么又了IP地址还需要mac地址

ip地址有什么用,为何不直接使用mac地址定位

当年设计出IP地址就是因为随着网络中的设备逐渐增多,人们发现路由(也就是寻找数据包从发送方到接收方的路径)变得越来越困难了,于是人们想了一个办法,就是把网络划分成很多个子网。这样,在路由的时候,路由器可以把其他子网看成一个整体来进行计算。对于目的地在其他子网的数据包,路由器只需要让数据包到达那个子网即可,而剩下的工作由子网内部解决。虽然这种方法只能让寻找到的路径接近最优而不保证最优,不过它大大减少了路由器的计算量,利大于弊,所以被采用了。如果直接使用mac地址,,我们会发现路由器需要记住每个MAC地址所在的子网是哪一个这个需要占用内存就太大了。

为何不放弃使用mac地址

由于IP只是逻辑上标识,任何人都随意修改,因此不能用来标识用户;也就是说我们给某个设备分配一个ip地址,我可以随时修改这个分配的IP,这是不安全也不方便的。那么我们需要一个固定的标识来确保设备的唯一性,这个就是mac地址。

类比形象理解:
IP地址好比住址的门牌号,住在不同的地方就有不同的门牌号,邮局送信的时候回根据这个门牌号找到你的位置。但是门牌号可能改变,也就是过段时间重新编排门牌号,你这个门牌号就变了。IP地址也是,分配给你的ip地址过一段时间可能就改变了,重新分配另一个。
MAC地址好比身份证号码,一出生就有的且不会发生改变。我想找到你这个人,仅根据IP地址找到了你家,却发现你不在家,你可能移动到其他地方,但是我还是可以根据身份证确定你的身份。

NAT网络地址转换

主要是将内部的私有IP地址(private IP)转换成可以在公网使用的公网IP(public IP)。
因为一个ip地址定位一个网络设备,ipv4的地址肯定不够用。可以使用NAT方式来进行一个公网IP对应多个私网IP地址进行联网。
比如给一个家庭分配一个公网ip,这个家里的所有设备上网都可以使用端口多路复用技术。具体的表现形式就是,对外只有一个公网IP,通过端口来区别不同私有IP主机的数据。
NAT可以同时让多个计算机同时联网,并隐藏其内网IP,因此也增加了内网的网络安全性;

如何解决ipv4不够用的问题

  1. 动态分配IP地址,不联网的设备就不给他分配ip地址,腾出来给其他人用
  2. NAT,将一个公网ip,通过+端口号的形式映射成多个私网ip。
  3. ipv6,下一代,可以给地球上每一个沙子都分配一个IP地址

交换机和路由器区别

  • 一般交换机用于局域网,工作在数据链路层和物理层,也有三层交换机工作在网络层,硬件实现路由转法,速度快,但只能实现简单转法
  • 路由器使用软件实现,较慢,能实现复杂网络路由。

两台电脑连起来后 ping 不通,你觉得可能存在哪些问题

  1. 物理层检查:检查是否正确连上网络
  2. 网络层:检查是否处在同一个局域网,或者路由设置不合理,网络延迟过大。
  3. 应用层,检查是否被防火墙或者软件拦截。

网络延迟计算

在这里插入图片描述

ping使用udp,所以一来一回就是60ms
HTTPS请求先要三次握手,就要90ms,然后又要进行ssl四次握手,前三次就完成建立连接需要180ms,而是到数据传输过去到服务端需要210ms

如果访问一个网站很慢,如何排查解决

这里列举出一些较常出现的问题:

  1. 首先最直接的方法是查看本地网络是否正常,通过测试软件测试本地网速和带宽,我们查看网络带宽是否被占用,例如当你正在下载电影时并且没有限速。

  2. 当网速测试正常时,我们对网站服务器速度进行排查,通过 ping 命令查看链接到服务器的时间和丢包等情况,一个速度好的机房,首先丢包率不能超过 1%,其次 ping 值要小,最后是 ping 值要稳定,如最大和最小差值过大说明路由不稳定。

  3. 看运营商原因:如果网页打开的速度时快时慢,甚至有时候打不开,如果是在有的地方打开速度快,有的地方打开速度慢,那应该是网络线路的问题。电信线路用户访问放在联通服务器的网站,联通线路用户访问放在电信服务器上的网站,相对来说打开速度肯定是比较慢。

  4. 可能是网站本身找原因。网站的问题主要包括网站程序设计、网页设计结构和网页内容三个部分。

多播

在这里插入图片描述

多播一般是局域网中的实现。
tcp只能是单播,他是点对点的协议。
多播分为广播和组播。
广播是,一个发送给所有,组播是一个反送给一组中的所有。
多播的好处:比如一个机器要发送1G的数据给100个机器,那么我们要单播发送那么在机器内部复制一百份数据,但是实际上多播不是这样处理的,发送端只发送1G而,这些复制都在网络交换机中进行复制,这样发送端就不需要处理大量数据了,整个网络带宽也消耗更少。

单台服务器最大支持多少连接数

https://blog.csdn.net/wangpeng322/article/details/99842126

有的朋友可能会说是65535,因为操作系统有65535个端口。错。
首先先了解下如何标识一个链接,操作系统是通过一个四元组来标识一个TCP链接:
{本地ip,本地port,远程ip,远程port} 也就是本地IP+端口,远程ip+端口
这四个要素唯一确定一个TCP链接,任意一个要素不相同,就认为是一个不同的链接。所以并发连接数并不仅由端口来决定。
连接发起端:一般是一个ip,(当然一个机器也可以配多个IP),端口号数为65535-1024(预留端口)=64000
链接接收端:接收端就多了可以开启的链接数就多了,最大的TCP链接数 = 所有有效ip排列组合的数量 * 64000(端口数量)
实际情况下,每创建一个链接需要消耗一定的内存,大概是4-10kb,所以链接数也受限于机器的总内存。(链接发起端,活力全开才64000左右链接,内存最多才占用640M,一般客户端都能 满足;内存限制主要还是考虑服务器端)
Linux上开启端口限制。

怎样实现高并发

  1. 不要处理一个链接时间太长,使用事件驱动,无阻塞,满足要求。
    高并发优化:

计算机安全

摘要算法:

场景举例:密码保存:他不可逆,服务器把用户密码加一段字符串然后使用md5加密生成一长串字符。这个过程不可逆,所以即使别人盗用,也不知道密码是什么。
在这里插入图片描述

Linux网络指令

  • ssh 远程登录
  • scp远程拷贝文件
  • ifconfig 查看当前机器网络接口
  • netstat 本机网络状态,也就是端口使用状态
  • ping 查看ip地址(做了DNS)和丢包率
  • telnet 和服务器建立连接并进行通信

什么是负载均衡Ngix

https://juejin.cn/post/6844904106541203464

什么是ARP

使用ARP协议可实现通过IP地址获得对应主机的物理地址(MAC地址)。
在局域网的任意一台主机中,都有一个ARP缓存表,里面保存本机已知的此局域网中各主机和路由器的IP地址和MAC地址的对照关系。ARP缓存

什么是套接字

如果我们不使用http协议,那么我们可以使用socket让不同主机上的进程可以通过套接字发送报文来进行通信。ip地址+协议+端口号唯一标示网络中的一个进程。例如 TCP 用主机的 IP 地址 + 端口号作为 TCP 连接的端点,这个端点就叫做套接字。一个进程通过调用套接字接口,然后放入通过ip地址和端口号,将数据发送到另一端的对应端口号上。
socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
套接字主要有以下三种类型:

  • 流套接字(SOCK_STREAM):流套接字基于 TCP 传输协议,由于 TCP 协议的特点,使用流套接字进行通信时能够保证数据无差错、无重复传送,并按顺序接收,通信双方不需要在程序中进行相应的处理。
  • 数据报套接字(SOCK_DGRAM):和流套接字不同,数据报套接字基于 UDP 传输协议,
  • 原始套接字(SOCK_RAW):当需要传送非传输层数据包(例如 Ping 命令时用的 ICMP 协议数据包)或者遇到操作系统无法处理的数据包时,此时就需要建立原始套接字来发送。

猜你喜欢

转载自blog.csdn.net/chongbin007/article/details/114046258
今日推荐