目录
一、网络基本原理
网络:进程与进程间的跨主机通信
OS的网络管理模块将数据从 内存——>输出设备(网卡)——>再一层一层传递给另一台主机
网卡:如何发送数据(填充数据就是把数据复制给网卡+触发发送),如何接收数据(接收数据+interrupt中断机制给到OS+OS把数据给进程)
进程并不是原封不动的把数据复制给网卡的,而是会进行数据封装,这个封装是经过层层封装,也就是说现代网络是分层讨论的,理论上是OSI(Open System Interconnection,开放系统互连)7层,实际是TCP/IP5层(有哪些层,层与层之间的关系,每层是干嘛的)
-
应用层(处理业务逻辑,传输层基础上,业务到底具体是怎么通信的,通信规则的解决)(只有这一层是我们考虑设计的,以下四层全部是OS帮我们实现的,无需过多关心)
-
传输层(进程到进程间的通信,即具体是哪个进程)
主机到主机:
-
网络层(跨LAN的主机与主机的通信)
-
数据链路层(LAN内部的主机与主机的通信)
-
物理层(最底层传输介质的转换与通信)
局域网LAN:被路由器网线直接连接的局部网络,主机间可以直接通信,路由器可以分隔不同局域网
局域网组网:
-
方式一:直接主机-主机
网络设备的存在:集线器Hub、交换机Switch
-
方式二:基于集线器(集线器工作在物理层)
集线器是不知道数据是要给谁的,它会全给——>只有目标主机接收数据,其他主机忽略,这份工作由数据链路层实现,数据链路层解决一个局域网内部的数据通信
-
方式三:基于交换机(交换机工作在数据链路层)
Hub并不方便,所以有了交换机,是可以知道数据发送给哪个目标的,只会把数据发给指定主机
-
方式四:基于交换机和路由器(有路由器,所以是跨局域网的,跨局域网是网络层要解决的,路由器工作在网路层)
路由器:路由寻址
广域网:局域网组成广域网
二、各层协议概览及常见术语:
各层封装
数据链路层——数据帧
网络层——数据包
传输层——TCP(报文) UDP(段)
应用层——请求响应模型、订阅推送模型
MAC地址
绑定在网卡上的物理地址,出厂就确定的
IP地址
用于网络层,一个网内的IP地址不应该重复,被随机分配也可以自己设置,不同网内的主机是不可能通信的(比如我们的以太网和军用网络是不一样的,是不能通信的)
端口
一个主机内部用于区分不同进程,0-65525
ip:port:
ip:port:唯一确定网络中的一个进程(唯一确定是哪个主机中的哪个进程)
A的ip:port + B的ip:port——>叫做四元组,唯一确定了一条通信线路
五元组:再加上传输层协议是TCP还是UDP,就成了5个信息
进程&port
一个进程可以同时绑定多个端口号;但是一个端口号同一时刻只能属于一个进程
几个小栗子
(1)LAN内部通信
(应用层是协议内容,传输层加一个端口信息,网络层加ip地址信息,数据链路层实现局域网内部的通信,最后物理层转换信号)
(2)跨局域网通信(路由器与路由器之间找,直到找到最终目标路由)
协议
约定、规则
语法 + 语义 + 时序
网络分布式架构的特点
(1)数据在整个通信线路上对于线路中的设备是透明的,有数据监听和数据篡改的风险
(2)网络传输天生是不可靠的,并不能保证数据一定能发送给目标方
(3)来回线路不一定一致