计算机网络知识梳理
要梳理计算机网络的知识,我的起点是3个问题:
- 什么是计算机网络? 把计算机连接起来的,就是网络,把不同的网络连接起来的就是互连网。
- 为什么要构建计算机网络? 构建计算机网络的目的,就是数据通信,并在数据通信的基础上,实现资源共享。
- 如何实现? 采用分层结构。
要解决问题,通常有两种方法,一种方法是分解复杂问题,另一种方法是把具体问题抽象化。计算机的分层结构,一方面拆分了复杂问题,使得这个工程易于实现和标准化;另一方面,下层对上层来说,被抽象成了一个接口。
分层结构有三种:OSI标准化的七层模型;方便说明与学习的五层模型;实际采用的TCP/IP协议栈模型。
在此以最常见的五层模型来梳理相关知识。
物理层
功能:物理层屏蔽了传输介质和通信手段的差异,实现了透明传输。传输单位是比特流。
常见的传输介质有:
- 双绞线
- 同轴光缆
- 光纤
- 无介质:无线电波,微波,红外线和激光
数据链路层
功能:实现了同一数据链路上的主机间的通信。将数据封装成帧。用mac地址寻址,mac地址占6字节。
mac帧包含了14字节的首部 & 4字节的FCS校验。
首部中,源/目的mac地址占了12字节,还有2字节的type
常见type有以下4种:
- IP:0x0800
- IPv6:0x8600
- ARP:0x0806
- VLAN:0x8100
帧长的大小有限制(46 - MTU),最小帧长是由于CSMA/CD的原因,最大帧长MTU是为了防止出现超大帧的情况,可以自己设置MTU的大小。
CSMA/CD的核心可以归纳为:先听后发,边听边发,冲突停止,随即重发。需要最小帧长来避免还未检测到冲突就发完了的情况。
CSNA/CD和CSMA/CA的区别是,CA适用于无线信道----不容易检测到信道是否空闲,因此需要先询问是否可以发生,收到确认后再发送。
网络层
功能:实现不同数据链路上的主机间的通信。将数据封装成IP数据包,通过路由器转发,用ip地址寻址。
协议:IP,ICMP,ARP,路由选择协议
路由选择协议有三种:OSPF,RIP,BGP
IP协议分为ipv4以及ipv6,ipv4中的三类私有地址,环回地址,广播地址等.
由于ipv4地址数量不足,出现了很多技术,比如:NAT,DHCP来缓解这种局面。
CIDR:消除了传统的三类子网划分,变成了<网络前缀::主机号>的形式.
ipv4首部结构包含的内容
- 首先包含了版本号,首部长度是可变的,因此需要首部长度和总长度,
- 因为总长度大于MTU,因此需要标识来帮助分片重组,标志来判断分片信息,片偏移。
- 需要生存时间来消除迷路的报文,
- 需要标识上一层的协议
- 需要源/目的ip。
- 还有一个很少使用的区分服务字段。
- 最后要做一个校验。
传输层
功能:实现进程与进程间的通信。传输TCP报文段和UDP数据报
TCP首部:
- 源/目的端口
- 第一个字节的序号,已收到字节的确认号,和首部长度
- 为了流量控制:保留和控制位(6种:RST,SYN,FIN,ACK等),需要接收窗口大小
- 指示优先级较高的数据的紧急指针
- 校验和
UDP首部
- 源/目的端口
- 数据长度
- 校验和
流量控制:滑动窗口机制
拥塞控制:慢开始,拥塞避免,快重传,快恢复。
应用层
实现应用程序之间的通信。
各种应用层协议:DNS,FTP,http,https。