8.3技术学习总结 | 青训营

2023年 8月 13日 54.2k 0

打开抖音会发生什么(计算机网络相关知识)

ep12 网络交互之网络接入

ep12.1 Linux环境搭建

VMware->CentOS->FinalShell

ep12.2 安装 Wireshark

ep12.3 听课笔记

域名解析(Domain Name System,DNS)是互联网中的一种服务,用于将人类可读的域名(例如www.example.com)转换为计算机可理解的IP地址(例如192.0.2.1)。因为计算机在互联网上通信时使用IP地址,而不是域名,所以需要DNS来帮助将域名映射到相应的IP地址。
DNS的作用在互联网通信中非常重要,它帮助我们使用方便易记的域名来访问网站,而不必记住复杂的数字IP地址。

HTTP的主要目标是支持客户端和服务器之间的通信,使得客户端可以从服务器请求资源,而服务器则可以向客户端返回请求的资源。这些资源可以是网页文件(HTML、CSS、JavaScript等)、图像、视频、音频文件等。

网络接入-路由 12:20

代码片段展示了一个函数 send_one_pkt() 的伪代码,用于发送一个数据包到目标地址。

  • void send_one_pkt(): 这是一个函数的声明,用于发送一个数据包。

  • rt = find_rt(dst): 这一行代码调用了一个函数 find_rt(dst) 来查找目标地址 dst 对应的路由项。在路由表中,每个目标地址都会有一个对应的路由项,包含了与该目标地址相关的信息,如出口网口和下一跳地址。

  • l2->dst_mac = rt->next_hop->mac: 这一行代码将数据包的目标MAC地址设置为路由表中找到的下一跳地址(next_hop)的MAC地址。在以太网通信中,数据包需要知道下一跳设备的MAC地址,以便正确地将数据包传送到下一跳。

  • p = append(p, 12): 这一行代码将数据包添加12字节的内容(可能是某种标记或数据)。

  • send(p, rt->port): 这一行代码调用了发送函数 send(),并指定了发送的数据包内容 p 和发送的网口 rt->port。数据包需要通过正确的出口网口发送到目标地址。

  • 提到了动态路由协议 BGP(边界网关协议)和 OSPF(开放最短路径优先协议)。这些协议是用于动态路由的,它们允许路由器之间动态地交换路由信息,以实现自动路由更新和选择最优路径的功能。这样,在网络拓扑发生变化时,路由器可以根据协议交换的信息自动调整路由表,以确保数据包可以以最佳路径传输。

    BGP主要用于互联网边界路由,用于连接不同的自治系统(AS)。OSPF则主要用于内部网络中的路由,用于在同一个自治系统内部动态选择最优路径。这些协议的目标是提高网络的可靠性、灵活性和性能。

    ARP协议

    ARP本质是查找下一跳的MAC,而不是请求目标地址。

    IP协议

    IPv4,IPv6,NAT

    ep13 网络交互之网络传输

    ep13.1 听课笔记

    网络传输-数据包-四层网络模型(与ep10.1联系)

    UDP->TCP 三次握手

    在计算机网络中,"seq"和"ack"是TCP协议(Transmission Control Protocol,传输控制协议)头部中的两个重要字段,用于管理数据传输和确认。

    seq (Sequence Number) - 序列号ack (Acknowledgment Number) - 确认号
    确认号的值是接收方期望接收的下一个字节的序列号。例如,如果接收方已经成功接收了序列号为100的数据包,那么它的确认号将设置为101,表示期望下一个数据包的序列号是101。

    HTTP/HTTP1.1

    SSL/TLS握手

    ep13.2 抓包(与ep12.2联系)01:04

    ep14 网络架构如何给抖音提质之网络提速

    QUIC/HTTP3.0

    协议优化/网络路径优化

    ep15 网络提速的优化之路

    容灾 故障排查

    课后作业1 UDP socket 实现 ack ,感知丢包重传

    提示

  • 学会UDP socket编程:
    UDP socket编程是通过使用UDP协议在网络上进行通信的一种方法。在常见的编程语言中,如Python、Java、C/C++等,都有相应的UDP socket库或API可以使用。通过这些库,可以创建UDP socket,发送和接收UDP数据包。

  • 先从简单的ack学习,客户端等ack再发包:
    在简单的ack实现中,客户端发送数据包给服务器,并等待服务器发送一个确认应答(ack)表示数据包已经收到。客户端只有在收到ack后,才继续发送下一个数据包。如果超过一定时间没有收到ack,客户端会认为数据包丢失,并进行重传。

  • 什么时候客户端认为是丢包?
    客户端可以设置一个超时时间,在发送数据包后等待ack的时间超过这个超时时间时,客户端会认为数据包丢失。这个超时时间通常是根据网络延迟和可靠性要求来设置的。如果在超时时间内没有收到ack,客户端会触发重传机制。

  • 重传怎么考虑效率?
    重传的效率可以通过以下几种方式来考虑:

    • 使用递增的重传超时时间:如果数据包连续多次未收到ack,则逐渐增加重传超时时间,避免因为临时网络拥塞导致频繁的重传。
    • 使用快速重传:在收到对同一个数据包的多个重复ack时,快速重传该数据包,而不等待超时。这可以加速丢包恢复过程。
    • 使用选择性重传:只重传确实丢失的数据包,而不是对所有数据包进行全局性的重传。这可以减少不必要的重传开销。
  • 能不能不阻塞只传丢掉的中间的段?
    UDP是无连接的,每个数据包都是独立的,因此如果数据包丢失,UDP协议本身并不提供自动的重传机制。在UDP中,如果发现某个数据包丢失,要实现重传,必须由应用程序自己处理。实现只传输丢失的中间段可以采用类似选择性重传的方法,即记录哪些数据包已经成功发送并收到ack,如果发现中间的某个数据包丢失,则只重传该数据包及其后续的数据包。这样可以避免重传整个数据段,从而提高效率。
  • 相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论