计算机网络
计算机网络
互联网的两个特点:连通性和共享性。
ISP :互联网服务提供者,提供和管理 IP 地址。
RFC 文档:互联网标准。
网络通信方式:
- 客户-服务器(C/S 方式)
- 对等方式(P2P)
互联网通信方式:电路交换$\rightarrow$报文交换$\rightarrow$分组交换。
网络性能指标:
- 速率(数据率)
- 带宽(最大速率)
- 吞吐量(实际传输数据量)
- 时延
- 时延带宽积
- 往返时间(RTT)
- 利用率
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 :重传时间。
流量控制:调整发送窗口大小。
拥塞控制:防止网络过载。
拥塞控制算法:
- 慢开始
- 拥塞避免
- 快重传
- 快恢复
运输连接管理:
三次握手
四次挥手
参考博文:超超超详细讲解TCP三次握手与四次挥手(大图解),值得收藏 - cpp后端技术的文章 - 知乎
https://zhuanlan.zhihu.com/p/591865232
应用层
常用协议:
DNS(域名系统)
FTP(文件传送协议)
- 控制连接
- 数据连接
NFS(网络文件系统)
TELNET(远程终端协议)
WWW(万维网)
- URL(统一资源定位符):{协议 : //主机名 : 端口/路径}
HTTP(超文本传送协议)
- 无连接、无状态
- 报文格式:请求行、请求头、请求体
- 状态码
- 1xx:通知信息
- 2xx:成功
- 3xx:重定向
- 4xx:客户端错误
- 5xx:服务器错误
DHCP(动态主机配置协议)
SNMP(简单网络管理协议)