计算机网络知识梳理


要梳理计算机网络的知识,我的起点是3个问题

  1. 什么是计算机网络? 把计算机连接起来的,就是网络,把不同的网络连接起来的就是互连网。
  2. 为什么要构建计算机网络?   构建计算机网络的目的,就是数据通信,并在数据通信的基础上,实现资源共享。
  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。