计算机网络
有时候回忆起一些计算机网络的知识、问题,就在这里记录下。
- 物理层
线路里的电信号、无线网络里的无线信号。传输bit流
- 链路层
媒体访问控制地址MAC(功能上其实类似网络层)、碰撞检测(同一交换机局域网环境下线路占用问题,一方必须等另一方释放对线路的占用才能使用线路传输数据)、指数退避(线路阻塞后指数型等待时间,一开始假如1.X秒,后面就是2,4,8…)。将网络层的分组封装成帧,传输。
- 网络层
报文交换、路由。将传输成的报文,分装成分组,传输。
- 传输层
TCP,UDP
- 应用层
HTTP(GET获取,POST添加操作,PUT修改操作,DELETE删除操作)。
网络中立性,如果没有网络中立性(公平对待所有数据包),网络服务提供商就可以理所当然地提出提速的“高级套餐”(虽然现在其实某些应用之类的也有类似操作)
Linux 查看网卡全双工 还是半双工 以及设置网卡为半双工
下面写一些自己的总结啥的,想到一些比较值得注意的点就自己总结一下。
网卡接收数据:
网卡网络服务中,网卡NIC通过硬件中断IRQ通知CPU有数据要处理时,CPU在查询已注册的中断函数,请求调用网卡驱动NIC Driver的相对应函数,这个过程所有其他硬件不能请求硬中断,也就是没法和CPU交互;然后网卡驱动NIC Driver收到请求后,先禁用网卡的中断IQR,这样CPU就能再响应其他硬件的中断了。此时NIC Driver启用软中断,经过内核读取网卡写到内存的数据包,调用相应软中断处理函数,然后网卡把数据交给CPU让其软中断上下文中处理网络数据,接着调用协议栈响应的函数将数据给协议栈处理,待内存中所有数据包处理完后(即poll函数执行完后),才启用网卡的硬中断,这样网卡下次就能再收到数据通知CPU。
大致就是:网卡NIC– 请求硬中断–> CPU — 请求网卡驱动调用函数 –> NIC Driver – 禁用网卡硬中断,此时别的硬件能够对CPU请求硬中断操作 –> NIC Driver – 启用软中断 –> 和内核、内存、CPU在软中断过程交互处理网卡写到内存的数据 – > 交给协议栈处理 –内存所有数据包处理完后–> 启用网卡硬中断,能够再收到数据并通知CPU