计算机网络

互联网的两个特点:连通性和共享性。

ISP :互联网服务提供者,提供和管理 IP 地址。

RFC 文档:互联网标准。

网络通信方式:

  • 客户-服务器(C/S 方式)
  • 对等方式(P2P)

互联网通信方式:电路交换$\rightarrow$报文交换$\rightarrow$分组交换。

网络性能指标:

  1. 速率(数据率)
  2. 带宽(最大速率)
  3. 吞吐量(实际传输数据量)
  4. 时延
  5. 时延带宽积
  6. 往返时间(RTT)
  7. 利用率

OSI :开放系统互连基本参考模型。

网络协议三要素:语法、语义、同步。

OSI 七层协议
$$
应用层 \
\downarrow\
表示层 \
\downarrow\
会话层 \
\downarrow\
运输层 \
\downarrow\
网络层 \
\downarrow\
数据链路层 \
\downarrow\
物理层 \
$$
TCP/IP 体系结构
$$
应用层 \
(DNS,HTTP,SMTP,…) \
\downarrow\
运输层 \
(TCP,UDP) \
\downarrow\
网际层 \
(IP) \
\downarrow\
链路层
$$


物理层

数据通信系统模型:源系统$\rightarrow$传输系统$\rightarrow$目的系统。

信息交互方式:

  • 单向通信(单工)
  • 双向交替通信(双工)
  • 双向同时通信(全双工)

宽带接入技术:ADSL 技术、FTTx 技术。


数据链路层

信道类型:

  • 点对点(一对一)
  • 广播信道

帧:协议数据单元。

三个基本问题:

  • 封装成帧
  • 透明传输
  • 差错检测

协议:

  • PPP 协议

以太网将该层划分为两部分:

  • LLC(逻辑链路控制)
  • MAC(MAC媒体接入控制)

网络适配器(网卡、网络接口卡NIC):用于传输网络数据包。

MAC 地址(物理地址、硬件地址):48位。

以太网交换机:交换和转发 MAC 帧,具有自学习功能。

VLAN:虚拟局域网。


网络层

路由传送数据类型:数据和路由信息。

协议:

  • ICMP(网际控制报文协议)
  • IGMP(网际组管理协议)
  • IP(网际协议)
  • ARP(地址解析协议)

中间设备区分:

  • 转发器–物理层
  • 网桥、桥接器、交换机–链路层
  • 路由器–网路层
  • 网关–网络层之上

IP 地址:{网络地址,主机号},32位。

点分十进制:如128.11.3.3。

分类 IP 地址:A、B、C、D、E五类。

无分类编址 CIDR:{网络前缀,主机号}

地址掩码(子网掩码):1的个数表示网络前缀长度。

IP 地址与 MAC 地址的区别:

  • IP 是虚拟地址,MAC 是物理地址
  • IP 是网络层及以上使用,MAC 是数据链路层使用

ARP 协议:IP 地址转换 MAC 地址协议。

ARP 高速缓存:存放 IP 地址到 MAC 地址的映射表。

使用 IP 地址的原因:

  • MAC 地址互不相同,地址转换复杂
  • MAC 地址数量庞大,寻址困难

IP 数据报(首部,固定20字节,可选40字节):

  • 版本(IPv4、IPv6)
  • 首部长度
  • 区分服务
  • 总长度
  • 标识
  • 标志(分片)
  • 片偏移(分片在原数据报的偏移)
  • 生存时间
  • 协议(数据所用协议)
  • 首部校验和
  • 源地址
  • 目的地址
  • 可变部分

分组转发算法:

  • 最长前缀匹配
  • 二叉树搜索

网际控制报文协议(ICMP):

  • ping (测试连通性)
  • traceroute(跟踪路由)

IPv6 协议:

  • 128位地址长度
  • 冒号十六进制记法

IPv4 过渡 IPv6:

  • 隧道技术
  • 双协议栈

路由选择协议:

  • 内部网关协议 IGP:RIP、OSPF
  • 外部网关协议 EGP:BGP-4

VPN:虚拟专用网。

网络地址转换(NAT):内网$\rightarrow$外网。


运输层

协议:

  • 用户数据报协议 UDP
  • 传输控制协议 TCP

典型应用层协议对应关系:

应用层协议 运输层协议
DNS(域名系统) UDP
TFTP(简单文件传送协议) UDP
RIP(路由信息协议) UDP
DHCP(动态主机配置协议) UDP
SNMP(简单网络管理协议) UDP
NFS(网络文件系统) UDP
IGMP(网际组管理协议) UDP
SMTP(简单邮件传送协议) TCP
TELNET(远程终端协议) TCP
HTTP(超文本传送协议) TCP
FTP(文件传送协议) TCP

用户数据报协议(UDP):

  • 无连接的
  • 尽最大努力交付
  • 面向报文的
  • 无拥塞控制
  • 支持一对一、一对多、多对一、多对多
  • 首部开销小(8字节)

UDP 首部格式,每个2字节:

  • 源端口
  • 目的端口
  • 长度(总长度)
  • 检验和

传输控制协议(TCP):

  • 面向连接的
  • 点对点连接
  • 可靠传输
  • 全双工
  • 面向字节流

套接字(socket):{IP 地址 : 端口号}

可靠传输工作原理:停止等待协议$\rightarrow$连续ARQ协议$\rightarrow$滑动窗口协议。

常用熟知端口号:

应用 端口
FTP 21
TELNET 23
SMTP 25
DNS 53
TFTP 69
HTTP 80
SNMP 161
SNMP(trap) 162
HTTPS 443

TCP 首部格式,固定20字节,可选40字节:

  • 源、目的端口
  • 序号(按字节编号)
  • 确认号(期望收到的下一个报文的第一个数据字节的序号)
  • 数据偏移(数据主体距开头的偏移)
  • 保留
  • 控制位(URG、ACK、PSH、RST、SYN、FIN)
  • 窗口
  • 检验和
  • 紧急指针(紧急数据报末尾的位置)
  • 选项

RTT :报文往返时间。

RTO :重传时间。

流量控制:调整发送窗口大小。

拥塞控制:防止网络过载。

拥塞控制算法:

  1. 慢开始
  2. 拥塞避免
  3. 快重传
  4. 快恢复

运输连接管理:

  • 三次握手

  • 四次挥手

参考博文:超超超详细讲解TCP三次握手与四次挥手(大图解),值得收藏 - cpp后端技术的文章 - 知乎
https://zhuanlan.zhihu.com/p/591865232


应用层

常用协议:

  • DNS(域名系统)

  • FTP(文件传送协议)

    • 控制连接
    • 数据连接
  • NFS(网络文件系统)

  • TELNET(远程终端协议)

  • WWW(万维网)

    • URL(统一资源定位符):{协议 : //主机名 : 端口/路径}
  • HTTP(超文本传送协议)

    • 无连接、无状态
    • 报文格式:请求行、请求头、请求体
    • 状态码
      • 1xx:通知信息
      • 2xx:成功
      • 3xx:重定向
      • 4xx:客户端错误
      • 5xx:服务器错误
  • DHCP(动态主机配置协议)

  • SNMP(简单网络管理协议)