【计算机网络】计算机网络核心知识点

举报
互联网小阿祥 发表于 2023/05/31 22:26:35 2023/05/31
【摘要】 计算机网络核心知识点

1.计算机网络分类

  • 按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN)
  • 按照网络使用者:公用网络、专用网络

2.计算机网络的层次结构

(1)OSI 七层模型 Open System Interconnection 七层模型

在这里插入图片描述

(2)TCP/IP四层模型与OSI体系结构对比

在这里插入图片描述

  • TCP/IP 四层模型 Transmission Control Protocol/Internet Protocol)四层模型
    • 应用层:负责应用程序之间的沟通,如 HTTP、FTP、DNS 等
    • 传输层:负责两台主机之间的数据传输,端到端通信,如 TCP、UDP 等
    • 网际层:负责网络包的封装、寻址和路由,如 IP 等
    • 网络接口层:负责网络包在物理网络中的传输,如 MAC 寻址转化、通过网卡传输网络数据帧等

3.层次结构设计的基本原则

  • 各层之间是相互独立的
  • 每一层需要有足够的灵活性
  • 各层之间完全解耦

在这里插入图片描述

  • 网络分层模型下,数据在各层之间的传输
  • 发送数据包
    • 在网络协议栈中从上到下逐层处理,最终送到网卡发送出去
  • 接收数据包
    • 需要经过网络协议栈从下到上的逐层处理,最后送到应用程序中使用
  • 注意
    • 应用层是直接面向用户的一层,为应用程序提供统一协议的接口,但不是应用程序
    • 目的是保障不同类型的应用采用的低层通信协议是一致的

在这里插入图片描述

  • 分层的好处:

    • 每层分工明确,利用单一职责模式和责任链模式
    • 开发人员 负责 编写应用层 业务代码
    • 操作系统 负责 建立网络连接、可靠性传输
    • 交换机路由器 负责 物理媒介上传输二进制格式
  • 传输层协议和网际层协议有什么区别

    • 网际层协议负责提供主机间的逻辑通信

      • 互联网上N多台设备,通过IP地址识别通信主机,网络层可以具体定位到哪台设备
      • 网络层的只检验IP数据报首部中的校验和字段是否出现差错,而不检查数据部分
    • 传输层协议负责提供进程间的逻辑通信

      • 一个主机上N多进程,通过端口号识别应用层进程,传输层可以具体定位到哪个进程
      • 需要对收到的报文更进一步进行差错检测

4.网络层核心知识

(1)什么是IP协议(Internet Protocol)

  • IP协议是一种工作在网际层的网络协议,定义如何将数据包从一台计算机传输到另一台计算机。提供一种通用的方法来在网络中传输数据,提供不可靠、无连接的传送服务
  • App发送请求,达到运营商的交换机,交换机根据IP地址在进行路由转发(多次),最后达到目标服务器。IP协议用途是把数据包投递过去,但不确保数据一定送达,可以用传输层TCP协议的机制做可靠性传输。IP协议是其他协议的基础,比如TCP和UDP。

在这里插入图片描述

(2)IP协议的用途

  • 寻址和路由

    • IP数据报中有源IP地址和目的IP地址,表示数据包的源主机和目标主机。
    • 数据报在传输过程中,每隔中间的网络节点比如IP网关/路由器等,都是根据网络地址来进行转发的,直至目标主机。
  • 分片和重组

    • 数据报传输过程中会经过不同的网络,不同的网络环境中数据报的最大长度限制是不同的。
    • 通过给每个IP数据报分配一个标识符和分段组装信息,可以让数据报在不同的网络中能够被传输。
    • 被分段的IP数据报可以独立在网络中进行转发,在达到目标主机后由目标主机完成重组工作,恢复程原来的I数据报。

(3)网络层相关协议

  • IP协议(Internet Protocol,因特网互联协议);
  • ICMP协议(Internet Control Message Protocol,因特网控制报文协议)
  • ARP协议(Address Resolution Protocol,地址解析协议)
  • RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)

(4)IP地址分类

  • ip地址由4个小段,每个小段由8个bit,即四个字节组成共32位。例如 192.168.0.0 (二进制1100 0000, 1010 0000, 0000 0000, 0000 0000)。

  • IP 地址 = {<网络号>,<主机号>}

    • 网络号:属于互联网的哪一个网络

    • 主机号:属于该网络中的哪一台主机

类别 描述(商业应用中只用到A、B、C三类)
A类 0开头,前8为网络号,后24位的主机号;即0.0.0.0到127.255.255.255
B类 10开头,前16为网络号,后16位的主机号;即128.0.0.0到191.255.255.255
C类 110开头,前24为网络号,后8位的主机号,即192.0.0.0到223.255.255.255
D和E类 留作未来社会的应用,或做一些实验用到
  • 全球现有的IPv4地址一共有2的32次方个,估算约为42.9亿个,除去一些特用的IP和一些不能用的IP,剩下可用的不到40亿

(5)如果IPv4地址不够用怎么办

  • DHCP技术

    • 动态主机配置协议,动态分配IP地址,指给接入网络的设备分配IP地址。
    • 同一个MAC地址的设备,每次接入互联网时,得到的IP地址可能不一样
  • NAT技术

    • 网络地址转换协议,不同局域网的主机可以使用相同的IP地址,一定程度上缓解了IP资源枯竭的问题。

    • 局域网中使用的IP地址是不能在公网中使用的,当局域网主机想要与公网主机进行通信时,将主机IP地址转换为全球IP地址

    • 原理

      • 从局域网出去的IP数据报,将其IP地址替换为NAT服务器拥有的合法的公共IP地址,并将替换关系记录到NAT映射表
      • 从公共互联网返回IP数据报,根据目的IP地址查找NAT映射表,把内部局域网IP地址替换目的IP地址,转发到内部网络。
  • IPV6

    • 作为接替IPv4的下一代互联网协议,可以实现2的128次方个地址,

    • 即使给地球上每一粒沙子都分配一个IP地址也够用,从根本上解决IPv4地址不够用的问题

(6)什么是MAC地址(Media Access Control Address)

  • 用来定义网络设备的位置,也叫硬件地址,每一个电脑设备都有唯一的Mac地址共48位,使用十六进制表示。
  • MAC地址在世界是唯一的,通常表示12个16进制数。

在这里插入图片描述

  • ARP协议

    • Address Resolution Protocol,地址解析协议,实现 IP 地址到 MAC 地址的映射,ARP表是自动建立,不需要配置
    • 为网卡的IP地址到对应的硬件地址提供动态映射, 把网络层32位地址转化为数据链路层MAC的48位地址
  • RARP协议

    • Reverse Address Resolution Protocol 逆地址解析协议,把数据链路层MAC的48位地址 转化为 网络层32位地址

(7)IP和Mac的区别

  • MAC地址是数据链路层和物理层使用的地址,写在网卡上的物理地址,不可变更。

  • IP地址是网络层使用的地址,是一种逻辑地址,用来区别网络上的计算机

5.传输层核心知识

(1)什么是传输层

  • 网络层把数据发到对应的节点,传输层则进一步将数据可靠的传送到对应的端口。
  • 使用端口区分不同的进程,信息传送的协议数据单元称为段或报文。
  • 主要的协议:TCP和UDP

(2)UDP协议(User Dataram Protocol用户数据报协议)

  • 面向无连接的协议,它不需要建立连接,就可以发送数据。
  • 协议不需要握手,因此发送数据的速度最快,传输效率更高。
  • 不提供可靠性,因为它不会检查发送的数据是否损坏或丢失,所以可能会发生数据丢失或损坏的情况。
  • 支持多种应用,如视频会议、在线游戏等,它可以提供实时性和可靠性。

在这里插入图片描述

(3)TCP协议 (Transmission Control Protocol 传输控制协议)

  • 面向连接:TCP是面向连接的协议,在正式收发数据前,必须建立可靠的连接。
  • 可靠性:TCP协议提供了丰富的可靠性机制,如检验、确认和重传等,来确保数据的正确性。
  • 流量控制:提供了流量控制机制,可以防止发送方发送数据速度过快,从而使接受方来不及处理,从而确保网络的稳定性。
  • 拥塞控制:提供了拥塞控制机制,可以防止网络拥塞,从而提高网络的吞吐量。
  • 常用于传输文件、电子邮件、FTP等服务,能够校验数据的完整性,以保证数据不被破坏。

在这里插入图片描述

  • 协议部分解析
  • 源端口号:报文的发送端口
  • 目的端口号:报文的接收端口
  • 序号(seq):在TCP传送的数据流都有一个序号
    • 在SYN标志是1时,表示初始发送的序列号
  • 确认号(ack):期望收到对方下次发送的数据的第一个字节的序号,是上次已成功收到数据字节序号+1
    • 例如发送确认号为1001,则表示前1000个字节已经被确认接收
  • 标志位(控制位,方便后续了解TCP三次握手)
    • URG (urgent紧急,很少用)
      • 当URG=1时,此报文应尽快传送
    • RST (reset重置)
      • 重置复位标志,用于复位对应的TCP连接
      • RST一般是在FIN之后才会出现为1的情况,表示的是连接重置
    • FIN (finish结束)
      • 结束标志,用于结束一个TCP会话,释放连接
    • PSH (push传送)
      • 指数据包到达接收端以后,不对其进行队列处理,尽快把数据交给应用程序处理
      • 常规数据发送流程
        • 主机发送数据时,会放在TCP缓冲区中,直到该段达到一定大小,然后发送到接收器
        • 当段到达接收端时,被放置在TCP传入缓冲器中,会等待直到其他段到达,完成后数据就被传递到应用层
        • 这种设计保证数据传输尽可能高效,将它们组合成一个或多个较大的片段,节省时间和带宽
        • 上述流程大多数情况下是没问题的,但是有些则需要尽快处理,所以有这个标识位
    • ACK (acknowledgement 确认)
      • 确认标志,1表示确认收到请求,0表示未确认
    • SYN( 同步序列编号Synchronize Sequence Numbers)
      • SYN标志位和ACK标志位搭配使用,用来建立连接
      • 当连接请求的时候,SYN=1,ACK=0,代表连接开始但是未获得响应
      • 当连接被响应的时候,标志位中ACK会置为1 代表确认收到连接请求,变成了SYN=1,ACK=1
      • SYN与FIN不会同时为1的,因为前者 表示的是建立连接,而后者表示的是断开连接

6.MTU-MSS介绍

(1)什么是MTU(Maximum Transmission Unit)

  • MTU是指在网络中,单个数据包能够传输的最大字节数,数据链路层提供给上层网络最大一次传输大小。
  • 是网络设备在处理数据包时所能支持的最大封装单元大小(不同网卡的MTU也是不一样的)。
  • 以太网数据链路层中约定的数据载荷部分最大长度,数据不超过它时就无需分片。
  • MTU值越大传输的速率就越快,但也会增加网络的延迟。
  • 数据包从发送端传输到接收端,要经过多个网络,每条网络的MTU都可能不一样,通信过程中最小的MTU称为路径MTU

(2)什么是MSS(Max Segment Size,是TCP最大报文段大小)

  • 是一个TCP报文段中包含的最大字节,传输层TCP提交给网络层最大分段大小。
  • TCP在传输大量数据时以MSS的大小将数据进行分割发送,重发时也是以MSS位单位。
  • MSS的值由发送端和接收端在建立连接的请求时,会在TCP首部中写入MSS选项,告诉对方自己的接口能够适应的MSS的大小。
  • MSS = MTU -IP header头大小 - TCP头大小
  • TCP的MSS最大值是:以太网MSS = 1500(MTU)-20(IP首部长度)-20(TCP首部大小) = 1469字节

(3)TCP和UDP每次能够传输的最大长度是多少?

  • 以太网数据包(packet)的大小是固定1522字节
    • 其中22字节是头信息(head), 1500 字节是负载(payload)
    • IP 数据包在以太网数据包的负载里面,它也有自己的头信息20字节,所以 IP 数据包的负载最多为1480字节
    • TCP 数据包在 IP 数据包的负载里面,它的头信息最少也需要20字节,所以 TCP 数据包的最大负载是 1480 - 20 = 1460 字节
    • 但 IP 和 TCP 协议往往有额外的头信息,所以 TCP 负载实际为1400字节左右
  • UDP 数据包每次能够传输的最大长度 MSS = MTU(1500B)- IP头(20B) - UDP头(8B) = 1472(Bytes)
  • TCP 数据包每次能够传输的最大长度 MSS = MTU(1500B) - IP头(20B) - TCP头(20B) = 1460 (Bytes)

发送10MB数据包,最终应用程序是怎样获取数据的?

  • 假如发送一个 10MB 的文件,因为一个包最多1400字节,就必须分成多个包,起码需要发送7100多个包。

    • 注意:数据包大小在不同协议不一样,HTTP/2对比HTTP/1有优化压缩 HTTP协议的头信息。
  • 服务器的操作系统会把收集的数据包组装完成,根据TCP包的端口转给应用程序,应用程序不用关心数据通信的细节。

7.计算机网络的核心指标

  • 比特是计算机中的数据量单位,一个比特是一个1或一个0
  • 1Byte(字节)=8bit(比特) 字节的简写为B,比特简写为b
  • 小写b和大写B分别对应大小单位bit(比特)和byte(字节)

(1)速率

  • 连接在计算机网络上的主机在数字信道上传送比特的速率,也称为比特率或速率。
  • 单位:bit/s(b/s,bps) 或 kb/s = 10³ b/s(小写k指10³
  • 案例
    • 假如 数据块大小 100MB,网卡发送速率是100Mbps,发送时间大体是 8秒多
    • 100MB*8 / 100Mbps 约等于 8秒, 特别注意:1/8(B/s)=b/s,即1B=8bit,平时计算需要单位换算

(2)带宽

  • 网络通信线路所能传送数据的能力,在单位时间内从网络中的某一点到另一点所能通过的“最高数据率”,单位同速率也是bps
  • 案例
    • 家里带宽为800M,是指800Mbps或800Mb/s,真实速度其实要在带宽的基础上除以8即,800Mbps/8=100M/s
    • 用户在网上下载时显示的速率单位往往是Byte(字节)/s(秒),注意是大写字母B,字节和比特之间的关系为1Byte=8Bits;

(3)吞吐量

  • 单位时间内通过某个网络(或信道、接口)的实际的数据量,单位通常为 b/s(比特 / 秒)或者 B/s(字节 / 秒)
  • 吞吐量受带宽限制,吞吐量 / 带宽,就是该网络的使用率
  • 常用的网络吞吐率的单位有
    • PPS(即每秒发送多少个分组数据包)Packet Per Second(包 / 秒)表示以网络包为单位的传输速率
      • 云服务器实例每秒最多可以处理的网络数据包数量(包括收发包两个方向)
      • 网络收发包用于衡量云服务器的网络质量,PPS数值越大网络性能越好
    • BPS(Bytes Per Second)即每秒发送多少字节
    • bPS (bits Per Second )即每秒发送多少比特

(4)时延

  • 指数据(一个报文或分组,甚至比特)从网络的一端传送到另一端所需的时间
  • 源主机和目的主机之间路径会由多个链路和多个路由器组成,网络时延主要由 发送+传播+处理时延组成

(5)往返时间RTT

  • 从源主机发送信号到目标主机,目标主机接收信号再返回到源主机所需要时间(一个来回)

(6)丢包率

  • 丢包率即分组丢失率,是指在一定的时间范围内,传输过程中丢失的分组数量与总分组数量的比率。
  • 场景 :老王打王者荣耀游戏时丢包造成游戏卡顿

8.ifconfig命令简介

  • 展示网络信息和网卡接口手法数据包的统计信息

在这里插入图片描述

字段 说明
flags=4163<UP,BROADCAST,RUNNING,MULTICAST> RUNNING 表示物理网络是连通的,网卡已连接到交换机或路由器。如果没有,通常表示网线被拔掉
mtu 最大的传输单元,默认大小是 1500
inet ipv4地址,ECS实例绑定弹性公网IP(EIP)后,操作系统中只显示私网IP地址,不显示EIP的公网IP地址 公网IP存在于网关设备,并不在ECS实例的网卡上,所以在操作系统内看不到公网IP,只能看到网卡上的私网IP
netmask 子网的掩码
broadcast 广播地址
ether mac地址
RX,TX 接收和发送的数据包的个数 或 字节数
packets 包数
bytes 字节数
errors 表示发生错误的数据包数,比如校验错误等
dropped 表示丢弃的数据包数
overruns 表示超限数据包数,网络 I/O 速度过快,数据包来不及处理而导致的丢包
carrier 表示发生 carrirer 错误的数据包数,比如物理电缆出现问题等
collisions 表示碰撞数据包数

9.网络统计分析命令netstat

(1)netstat命令简介

  • 内核中访问网络及相关信息的命令,显示与IP、TCP、UDP和ICMP协议相关的统计数据,检验本机各端口的网络连接情况
参数 说明
-r –route,显示路由表信息
-n -n选项禁用域名解析功能,默认情况下netstat会通过反向域名解析技术查找每个ip地址对应的主机名
-s –statistics,按照每个协议来分类进行统计
-p –programs,与链接相关程序名和进程的PID
-l –listening,显示所有监听的端口
-a -all,显示所有链接和监听端口
-u –udp 显示UDP传输协议的连接状况
-t –tcp 显示TCP传输协议的连接状况
-i –interfaces,显示网卡界面信息

(2)应用场景

  • netstat -anp :显示系统端口使用和进程情况
    • netstat -anp |grep 端口 :显示指定系统端口使用和进程情况

在这里插入图片描述
在这里插入图片描述

  • netstat -nupl:UDP类型的端口

在这里插入图片描述

  • netstat -ntpl:TCP类型的端口
    • netstat -na|grep ESTABLISHED|wc -l:统计已连接上的,状态为"established"

在这里插入图片描述

  • netstat -l:只显示所有监听端口

在这里插入图片描述

  • netstat -lt:只显示所有监听tcp端口

在这里插入图片描述

  • netstat -atnlp 常用固定参数命令

在这里插入图片描述

字段 说明
Proto 协议名 tcp协议 或 udp协议
recv-Q 网络接收队列,表示收到的数据已经在本地接收缓冲,但还有多少没有被进程取走
send-Q 网络发送队列,发送队列不能很快清零,则可能是有应用向外发送数据包过快,或对方接收数据包不够快
Local Address 表示本地IP地址
:::port 表示对外开放的IPv6端口,外网可访问,::: 这三个冒号:中, 前两个"::“是"0:0:0:0:0:0:0:0"的缩写,表示IPv6的"0.0.0.0”,第三个冒号:是IP和端口的分隔符
如127.0.0.1:port 表示只能本机访问的端口,外网无法访问;
如0.0.0.0:port 表示对外开放的IPv4端口,外网可访问 如为0.0.0.0:* 则表示没有对外开放;
如是 : : : * 表示对外开放
Foreign Address 表示远程IP地址,显示规则与 Local Address 相同, 一般都是0.0.0.0:(IPv4) 和 :::(IPv6)。
State 链路状态 有11种,TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述
PID/Program PID即进程id,Program即使用该socket的应用程序

(3)state状态简介

  • LISTEN(socket进行监听)
  • SYN_SENT(客户端tcp发送一个SYN以请求建立一个连接.之后状态)
  • SYN_RECV(服务端发出ACK确认客户端的 SYN 后状态置为SYN_RECV)
  • ESTABLISHED(打开的连接,双方可以进行或已经在数据交互)
  • FIN_WAIT1(主动关闭端应用程序调用close,TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态)
  • CLOSE_WAIT(被动关闭端TCP接到FIN后,发出ACK以回应FIN请求,并进入CLOSE_WAIT)
  • FIN_WAIT2(主动关闭端接到ACK后,就进入了FIN-WAIT-2)
  • LAST_ACK(被动关闭端一段时间后程序将调用CLOSE关闭连接,TCP发送一个 FIN,等待对方的ACK.进入LAST-ACK)
  • TIME_WAIT(在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态)
  • CLOSING(少见,等待远程TCP对连接中断的确认)
  • CLOSED(被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束)
  • UNKNOWN(未知的Socket状态)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。