数据通信的三种交换方式
- 电路交换
- 报文交换
- 分组交换
计算机网络核心
网络分层。
物理层的信道复用技术
- 频分复用,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地址转发表,将数据帧从指定的端口发送出去。
接收端主机侧
接收端从数据链路层到应用层,依次拆包。确定数据包是不是发送给自己的,如果是,则将应用层的数据交给应用程序处理即可。