网络复习篇——网络基础(一)

目录

一.同一数据链路发送数据

二.网络协议栈与操作系统的关系

三.封装,解包,分用

四.IP协议的屏蔽作用

[五.IP地址 VS Mac地址](#五.IP地址 VS Mac地址)


在看完《图解http》和《图解TCP/IP》之后我又把C++的网络课进行二刷,加深自己的理解。

一.同一数据链路发送数据

当我们向同一数据链路中的另一台主机发送数据时,我们的数据会广播到这个数据链路中的所有主机中。每个主机的数据链路层检查报文中的目的Mac地址与自己的是不是一样,不一样则丢弃,一样则向上传递到网络层,进而贯穿操作系统到应用层。

当同一数据链路中的两台主机同时发送数据时会发送数据碰撞,因为在网线中的数据都是电信号或者光信号。为了避免碰撞,有碰撞避免算法,该算法下,同一数据链路中的主机会生成随机数,在这个随机数时间后再发送这个数据到网线中,由于每个主机生成的随机数极大概率不一样,所以碰撞的概率就很小了。

令牌环网有令牌环算法,它将一个令牌依次分发给该数据链路中的主机,持有令牌的主机则可以向数据链路中发送数据,这个就如同多线程中的加锁,是一个道理。

交换机可用于划分碰撞域,进一步减小碰撞的可能性。

二.网络协议栈与操作系统的关系

应用层就是操作系统的上层应用,也就是用户态。

传输层和网络层则是操作系统内核提供的,主流的TCP/IP协议栈几乎在所有的操作系统中都支持。我们在socket编程时调用的接口就是在传输层上的。开发网络工具时还会用到网络层和数据链路层的接口。

数据链路层就对应操作系统中的驱动程序。因为硬件的接口是非常张牙舞爪的,所以驱动程序对硬件接口进行封装和对操作系统提供服务。网络中的数据链路层同样是网卡驱动在管理网卡。

物理层就对应操作系统管理的硬件了,在网络中是网卡设备。

网络通信的本质就是在贯穿协议栈,同时也在贯穿操作系统。

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;
  • 对于一台路由器,它实现了从网络层到物理层;
  • 对于一台交换机,它实现了从数据链路层到物理层;
  • 对于集线器,它只实现了物理层。

可以说,一台主机可以有路由器,交换机,集线器的功能;一个路由器可以有交换机和集线器的功能。

但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发)。

三.封装,解包,分用

网络通信的过程,本质就是发送端逐层封装 、接收端逐层解包的过程。

  1. 几乎任何层的协议,都要提供一种能力,将报头和有效载荷分离的能力。
  2. 几乎任何层的协议,都要在报头中提供,决定将自己的有效载荷交付给上层的哪一个协议的能力。

四.IP协议的屏蔽作用

在跨子网传输时,我们要通过路由器进行路由选择,此时用到的是ip协议。在路由器中的ip协议这一层会将接收到的Mac帧报头被解包的数据,路由选择之后会再将数据链路的报头加上,如果以太网协议就加上以太网报头,如果是令牌环网就加上令牌环网协议报头。也就是IP协议屏蔽了底层网络的差异化,靠的就是工作在IP层的路由器。IP实现了全球主机的软件虚拟层,一切皆是IP报文!

五.IP地址 VS Mac地址

ip地址,尤其是目的IP,一般都是不会改变的,协助我们进行路径选择。

Mac地址,出局域网之后,原地址和目的地址都要重写 / 替换 ,让路由器重新封装数据链路报头

ipv4的IP地址4字节,ipv6的IP地址16字节。Mac地址6字节。

相关推荐
端平入洛1 天前
delete又未完全delete
c++
端平入洛2 天前
auto有时不auto
c++
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
西岸行者3 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
哇哈哈20213 天前
信号量和信号
linux·c++
多恩Stone3 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
呉師傅3 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
starlaky3 天前
Django入门笔记
笔记·django
勇气要爆发3 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
蜡笔小马3 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost