【青训营笔记】 网络接入,网络传输,TCP连接

182 阅读7分钟

网络接入

路由

路由是否一定是对称的?

  • 路由不一定是对称的。对称路由表示数据包的发送路径和返回路径是相同的。非对称路由是指数据包的返回路径与发送路径不同。这种情况可能是由网络拓扑的动态变化、负载均衡或路径优化策略决定的,网络中的每个路由器可以根据自身的路由表,动态选择路径,而不强制要求路径对称。

路由工作在哪一层协议?

  • 路由工作在OSI模型的第三层,即网络层。在TCP/IP模型中也属于互联网层。网络层的核心职责是管理数据包的转发和寻址,通过IP协议决定数据包的发送路径。网络层负责在网络间传递数据包,确保数据包能够从源地址发送到目标地址。

路由会更改IP地址吗?

  • 通常情况下,路由不会更改数据包的IP地址。路由器仅根据目的IP地址来决定下一跳设备,将数据包转发到下一条路径。源IP和目的IP在整个传输过程中保持不变。但在某些特殊情况下,如NAT(网络地址转换)中,路由器可能会更改源IP地址,以实现内部私有IP和外部公网IP之间的转换。

路由如何确定发包接口?

  • 路由器通过查找路由表来决定数据包的最佳传输路径。路由表中包含每个目的网络的路由信息,每条路由记录都指定了一个出口接口。确定出口接口后,路由器会使用ARP协议来查询目的地的MAC地址,确保数据包可以通过相应的接口传输。

ARP协议

跨网段传输中的ARP工作方式

  • 当数据包需要跨网段传输时,源设备会首先检查ARP缓存表中是否存有目标IP地址对应的MAC地址。如果没有,设备会向本地网络发送ARP请求,以广播形式询问网络中其他设备的MAC地址。ARP应答是单播回复,目标设备直接返回MAC地址,源设备在获取MAC地址后即可完成数据包的传输。

免费ARP与ARP代理

  • 免费ARP:用于检测本设备的IP地址是否被占用。发送ARP请求时,源IP地址和目标IP地址都是自身IP,若有其他设备回应说明IP冲突。
  • ARP代理:由网关设备(如路由器)响应非本地子网的ARP请求。例如,若设备A在子网1,设备B在子网2,A发起ARP请求,网关设备C可以响应,并代替B返回MAC地址,以实现A与B之间的跨网段通信。

IP协议

IP地址的作用与MAC地址的区别

  • IP地址用于唯一标识网络上的设备,通常是全球唯一的。IP地址能够路由,从而在互联网中传递数据包。而MAC地址是网卡的硬件地址,全球唯一,但只能在本地网络中识别,不能跨越路由器。

IPv4地址不足的解决方案

  • IPv4地址的耗尽带来了多个解决方案:

    • NAT(网络地址转换) :多个内部设备可以通过一个公共IP地址访问互联网,缓解IPv4地址不足问题。
    • IPv6:IPv6采用128位地址,提供了更大的地址空间,是IPv4的替代方案。
    • 私有地址空间:局域网内部使用私有IP,所有内部流量通过NAT转换后共享一个公共IP访问外部网络。

NAT协议

家庭路由器如何实现互联网连接

  • 家庭路由器通过NAT将家庭局域网的私有IP映射为一个公共IP地址,从而允许多台设备共享同一公网IP访问互联网。NAT在数据包传输中修改数据包的源IP和端口号,以便路由器可以正确地将响应包发回给家庭网络的特定设备。

网络传输

数据包模型

OSI七层模型与TCP/IP四层模型

  • OSI七层模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
  • TCP/IP模型包括网络接口层、互联网层、传输层和应用层。TCP/IP模型在网络应用中实际使用广泛,四层简化结构满足大多数网络传输需求。

数据包发送过程

  • 数据在应用层生成,逐层向下传输。每一层都会在数据包中加入特定的协议头,以便在接收端能够正确解析。当数据包到达传输层后,协议头将传递的数据封装成段(TCP)或数据报(UDP),网络层则加入IP头进行路由和寻址,数据链路层负责物理传输。

DNS请求

DNS解析过程

  • 客户端发送DNS请求以解析域名,DNS服务器通过递归查询(逐级向根DNS、顶级域DNS等查询),直到找到目标域名的IP地址。解析结果返回给客户端后,客户端即可与目标IP地址建立连接。

DNS使用UDP的原因

  • DNS查询主要使用UDP协议,因为UDP简单快速,能够快速地完成查询过程。UDP并不提供丢包检测或重传机制,但DNS通过重试确保数据包最终到达。DNS数据包一般较小,不易分片,UDP性能比TCP更优。

TCP连接

TCP的三次握手

三次握手过程

  • 第一次握手:客户端向服务器发送SYN报文,请求建立连接;
  • 第二次握手:服务器收到SYN后,发送SYN-ACK确认包表示同意连接;
  • 第三次握手:客户端发送ACK确认包,连接建立成功。这一过程确保了双方具备发送和接收数据的能力,有助于防止重复连接。

时间戳的作用

  • TCP的时间戳字段用于防止旧数据包影响新的连接,还可以用来测量RTT(往返时间),从而调整数据发送频率以优化网络性能。

TCP传输

Sequence Number与Acknowledge Number

  • Sequence Number(序列号) :数据包在整个数据流中的位置,确保数据包按序排列。
  • Acknowledge Number(确认号) :接收方确认已收到数据的下一个期望序号。

丢包与滑动窗口机制

  • TCP使用滑动窗口ACK确认来确保可靠传输。当数据包丢失时,发送方会重新发送滑动窗口中的数据,滑动窗口还能控制传输速率防止网络拥塞和接收方数据溢出

TIME-WAIT状态

  • TCP连接关闭后,主动关闭方进入TIME-WAIT状态,确保最后的ACK被对方收到,避免旧数据包误入新连接。TIME-WAIT状态持续一定时间 (通常为2倍的最大报文段寿命) 后自动关闭。

HTTPS加密

SSL/TLS握手

  • HTTPS通过SSL/TLS建立安全连接。握手过程包括交换数字证书、生成对称密钥、加密传输数据。具体步骤:

    • 客户端和服务器交换公钥,服务器通过证书验证自身身份;
    • 双方协商加密算法和对称密钥,之后用对称密钥进行数据加密传输。

对称加密与非对称加密

  • 对称加密:加密和解密使用相同密钥,适用于大量数据的快速加密。
  • 非对称加密:使用公钥加密、私钥解密。非对称加密速度慢,但适合用于密钥交换,以保障密钥传输安全。

网络协议分析

网络协议分析依赖抓包工具(如Wireshark)来获取和分析网络数据。

各层协议头信息

  • 每个数据包的协议头(如IP头、TCP头)都包含关键的源和目标信息、协议标志等,有助于理解数据包的来源、去向和传输方式。

数据包序列号和ACK序列

  • TCP连接中的序列号和ACK号可以帮助追踪数据包的顺序和丢包情况,有助于发现连接中的传输问题。

流量特征分析

  • 分析HTTP头信息、TCP的SYN/ACK包等,能够了解请求内容和响应状态,这在定位网络性能瓶颈、检测异常流量和安全分析中非常有用。