计算机网络基础知识

数据通信的三种交换方式

  • 电路交换
  • 报文交换
  • 分组交换

计算机网络核心

网络分层。

物理层的信道复用技术

  • 频分复用,FDM(Frequency Division Multiplexing)
  • 时分复用,TDM(Time Division Multiplexing)
  • 统计时分复用
  • 波分复用,WDM(Wavelength Division Multiplexing)
  • 码分复用,CDM(Code Division Multiplexing)

OSI七层协议以及TCP/IP协议

TCP/UDP层的称为报文segment,IP层的称为分组或包package,数据链路层称为帧frame。

传输层有两种不同的运输协议,一是面向连接的TCP协议,一个是无连接的UDP协议。当运输层采用面向连接的TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道。当运输层采用无连接的UDP协议时,这种逻辑通信信道仍然是一条不可靠信道。

有一点需要注意的是,在一台服务器上,TCP和UDP可以监听同一个端口,如DNS bind服务就可以同时监控TCP和UDP的53端口。但UDP的端口状态好像不叫监听LISTEN。如下:

网络协议栈

基于TCP/IP网络封解包及数据传输过程

发送端主机侧

(1)应用层封装HTTP报文。

(2)TCP层封装应用报文,生成TCP数据包,包括源端口,目标端口,TCP会根据MSS以及TCP发送窗口大小来决定每个TCP报文的payload大小,进而会分割应用层的报文。

(3)IP层封装TCP数据包,生成IP数据包,IP包中源IP地址,目标IP地址等信息。

(4)数据链路层封装IP数据包,生成MAC数据帧,帧中包括源MAC地址,目标MAC地址。需要注意的是,目标MAC地址在经过链路中的三层网络设备节点时,会被三层设备修改为下一跳IP对应的MAC地址。目标MAC地址的生成还是有一些复杂:

  • 确定下一跳IP地址

先查本地路由表,确定下一跳目标IP是什么。如果目标IP地址和自己不在同一个子网中,那么下一跳的IP地址就是缺省路由中的网关IP;如果目标IP地址和自己在同一个子网中,路由表中就没有下一跳路由器IP信息,那么下一跳IP地址其实就是最初的目标IP地址。

  • 确定下一跳IP的MAC地址

查询本机ARP缓存表(IP-MAC映射表)中,是否有下一条IP的MAC地址,有就直接使用。若本地ARP缓存中没有对应IP的MAC地址缓存记录,则发送ARP广播报文,询问广播域中指定IP地址的MAC地址是多少,然后该IP的拥有者会响应正确的MAC地址。获取到目标MAC地址后,就会设置到数据帧的目标MAC地址中。

(5)通过物理层,也就是双绞线或光纤,将二进制数据流发送到网络中。

交换机侧

交换机拆解数据链路层MAC帧,解析出目标MAC地址。然后交换机根据MAC地址转发表,将数据帧通过指定的交换机端口转发出去。

路由器侧

路由器拆解IP层数据包,解析出源IP地址和目标IP地址,然后路由器查询本地路由表,查找下一跳IP地址,ARP缓存表中查找下一跳IP对应的MAC地址。然后就是路由器的封包过程,生成IP数据包,再封装MAC数据帧(要修改目标MAC地址),最后通过MAC地址转发表,将数据帧从指定的端口发送出去。

接收端主机侧

接收端从数据链路层到应用层,依次拆包。确定数据包是不是发送给自己的,如果是,则将应用层的数据交给应用程序处理即可。

学习资料参考于:
https://segmentfault.com/a/1190000022037918