0%

《计算机网络》以太网协议

以太网协议

以太网是使用最广泛的局域网技术。由于其简单、成本低、可扩展性强、与IP网能够很好地结合等特点,以太网技术的应用正从企业内部网络向公用电信网领域迈进。以太网接入是指将以太网技术与综合布线相结合,作为公用电信网的接入网,直接向用户提供基于IP的多种业务的传送通道。

以太帧格式

以太帧格式

数据传输原理

网线上传输的都是包装了4层协议之后的数据,基本如下:

[MAC地址[IP地址[端口[数据]]]]

应用层将数据准备好之后,通过TCP连接将数据传给tcp包,tcp包中代码会将数据先加上端口信息(源端口、目标端口),然后加上IP信息(源ip、目标ip)

接着TCP包将数据通过系统调用发给操作系统,操作系统根据arp缓存表取出目标MAC地址,然后给数据加上MAC地址(假设网线连上了路由器,这里就是路由器上的连接到的那个端口的MAC地址)

最后操作系统将数据递交给网卡,网卡就将数据转化成电平信号通过网线传递出去

路由器收到电平信号,就转化成二进制数据,然后解包,找到目标ip,如果发现是自己的ip,说明数据到达了终点路由器,于是解析出目标端口,通过 路由器端口与内部主机ip:端口的映射表 找到内部主机ip以及端口,然后将目标ip改成内部主机ip,目标端口改成内部主机端口,然后从相应的插孔(根据插孔与内部主机ip的映射表)发出去

如果路由器发现不是自己的ip,则根据路由器中的路由缓存表,找到对应的插孔,通过这个插孔将数据转化成电平信号发送过去。这就发送给了下一个路由器

目标机器的网卡收到数据后,通过硬中断将数据交给操作系统,操作系统先判断目标MAC地址是不是自己地址,不是的话就忽略

是的话就解包,将MAC信息扔掉,然后判断目标IP是不是操作系统中某网卡的ip(因为操作系统中还有lo回路网卡或者虚拟网卡),如果没有匹配,则忽略

如果匹配了,则根据目标ip以及目标端口向对应的socket(tcp包在启动服务器的时候通过listen系统调用会让操作系统产生这个socket)发送事件

tcp包通过epoll机制读取自己监听的socket下的事件,如果读取到有数据到达的事件,就向socket的缓冲区取出数据,然后将ip信息以及端口信息扔掉,应用层最终读到的就只有应用层数据了

路由器端口与内部主机ip:端口的映射表

生活中的路由器用的都是NAT技术,且用了端口多路复用技术(PAT),路由器会对内部主机发出的包进行网络层的源ip替换,且进行传输层的源端口替换(端口替换成路由器分配的一个唯一端口。
路由器中有一张路由器端口与内部主机ip:端口的映射表)。
路由器收到数据包后,根据包中的端口号从映射表中找到内部主机的ip 以及端口,将包发过去。

路由缓存表

pc以及路由器中存有一张路由表,记录的是路由路径信息,字段有目标ip,目标网络掩码,优先级,路由开销,插孔,下一跳ip地址




微信关注我,及时接收最新技术文章