趣谈网络协议-笔记(1)

简介: 前言来自极客时间上的讲师刘超的关于网络协议的课程,质量非常高,强烈推荐。一、概念协议三要素语法语义顺序以太网 Ethernet当今局域网采用的最通用的通信协议标准,处于数据链路层。

前言

来自极客时间上的讲师刘超的关于网络协议的课程,质量非常高,强烈推荐。

一、概念

  • 协议三要素

    • 语法
    • 语义
    • 顺序
  • 以太网 Ethernet
    当今局域网采用的最通用的通信协议标准,处于数据链路层。它规定了包括物理层的连线、电子信号和介质访问层协议的内容。

  • 网关gateway,路由器router,交换机switch,集线器hub,网桥bridge
    hub: broadcast to every port, one-line
    switch: better hub, intelligent
    they are both used to exchange data within a local network
    hub->switch。bridge已淡出


router: routes data from one network to another, base on ip address
gateway: 离开局域网就要经过一个网关,网关是路由器的一个网口
参考1
参考2

tips:
  1. 想象自己是一个处理网络包的程序,如何拿到网络包,如何处理,如何发出去
  2. 网络上跑的包都是完整的,可以有下层没上层(例如:Ping),而不可能有上层没下层

二、分层结构

img_310ed98ebbcbc7eee7aedeed8f081b93.png

二层定义了本地局域网的传输行为,ip层定义了端到端的传输行为。网络传输以包为单位,二层叫帧,网络层叫包,传输层叫段。

  • 二层设备 三层设备
    • 二层设备: 工作在链路层的设备,摘下mac头,判断丢弃、转发或留着,转发出去前要把mac头再填上
    • 三层设备: 工作在ip层的设备,把mac头、ip头都摘下来,然后同上

三、ip地址

img_5848121a8e814b911d7d143657ca3b20.jpe
  • ipv6=128位
  • mac地址=6byte=48位,无定位功能
  • 无类型域间选路CIDR:将32位ip地址一份为二,前面网络号,后面主机号

下一篇:趣谈网络协议-笔记(2)


思考题

1.网络包到达网关时,可以通过路由表得到下一个网关的ip,直接通过ip就可以了,为何还要通过本地的mac地址呢?

摘评论里@芒果的发言:ip地址不是固定的。为何不直接用mac呢?因为ip选址+mac定位效率更高

2.网络分层协议的类比,比总经理&员工的比喻更恰当的?

评论里的快递比喻个人更认同

3.STP协议缺点

  • 拓扑发生变化,新的配置消息需要一定时延才能传播到整个网络,期间会导致网络不稳定
  • 网络规模大时,链路阻塞将不承担任何流量,造成带宽浪费

4.ICMP差错报文也出问题了呢?

差错报文不会产生差错报文

5.回复的包,公网ip NAT成内网ip时,怎么知道发给谁的?

是ip+端口(TCP、UDP)或ID(ICMP)哈希匹配算法

6.路由协议交换的信息本身,还要走路由吗,不是死锁了吗

OSPF直接基于IP协议,只发给邻居,只有一跳,不经过中间设备。BGP基于TCP, 在BGP peer之间交换信息

7. 计算机看来,怎样才算一个连接呢?

接收端和发送端为维护连接所保持的数据结构,即socket,就是连接

8. 如何在某个系统中查看TCP连接的状态?

netstat,lsof,ss等

9. bbr如何达到最优点的?

进入缓存并等待,会增加额外的时延

10. epoll是linux的函数,windows对应的机制是什么呢?如何写一个跨平台的程序呢

windows是IOCP,事件发生时,IOCP机制将数据直接copy到缓冲区,应用可以直接使用。而epoll的异步通知,应用需要调用IO函数获取数据。跨平台可以使用libevent库,这是一个事件通知库,适用于linux、win、bsd等。

11. 哪些手段可以提高https的效率?

从https设计的流程考虑:DNS查询(httpdns),tcp三次握手(改用基于udp的quic),交换3个key(共享密钥)

12. RTMP视频流传输机制存在什么问题?如何优化

基于TCP,不适合实时场景。使用基于udp的quic。

13.如何做跨机房的高可用?

  • 同城双活


    img_a66cc03376ad9c2dffa9806e75eb4db1.jpe
  • 异地灾备


    img_6fb802717c4027c8d6494779854c994e.jpe

14.公有云和私有云如何打通?

15.iptables如何通过QUEUE做负载均衡?

目录
相关文章
|
28天前
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
105 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
1月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
58 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
1月前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
53 0
|
1月前
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
57 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
1月前
|
机器学习/深度学习 网络架构 计算机视觉
目标检测笔记(一):不同模型的网络架构介绍和代码
这篇文章介绍了ShuffleNetV2网络架构及其代码实现,包括模型结构、代码细节和不同版本的模型。ShuffleNetV2是一个高效的卷积神经网络,适用于深度学习中的目标检测任务。
71 1
目标检测笔记(一):不同模型的网络架构介绍和代码
|
1月前
|
XML 开发工具 Android开发
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
ExoPlayer最初是为了解决Android早期MediaPlayer控件对网络视频兼容性差的问题而推出的。现在,Android官方已将其升级并纳入Jetpack的Media3库,使其成为音视频操作的统一引擎。新版ExoPlayer支持多种协议,解决了设备和系统碎片化问题,可在整个Android生态中一致运行。通过修改`build.gradle`文件、布局文件及Activity代码,并添加必要的权限,即可集成并使用ExoPlayer进行网络视频播放。具体步骤包括引入依赖库、配置播放界面、编写播放逻辑以及添加互联网访问权限。
133 1
FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频
|
1月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
47 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
47 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
1月前
|
机器学习/深度学习 Python
深度学习笔记(九):神经网络剪枝(Neural Network Pruning)详细介绍
神经网络剪枝是一种通过移除不重要的权重来减小模型大小并提高效率的技术,同时尽量保持模型性能。
50 0
深度学习笔记(九):神经网络剪枝(Neural Network Pruning)详细介绍
|
1月前
|
机器学习/深度学习 算法 TensorFlow
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决
学习率是深度学习中的关键超参数,它影响模型的训练进度和收敛性,过大或过小的学习率都会对网络训练产生负面影响,需要通过适当的设置和调整策略来优化。
292 0
深度学习笔记(五):学习率过大过小对于网络训练有何影响以及如何解决