网络要点


网络

UDP和TCP的区别

UDP(用户数据报协议) 是无连接的,不保证数据包的顺序和完整性,适用于实时应用。
UDP的特点:

  • 无连接:不需要建立连接即可发送数据。
  • 不可靠:不保证数据包的顺序和完整性,可能丢包。
  • 速度快:由于没有连接建立和确认机制,传输速度较快。
  • 适用场景:实时视频、音频传输,在线游戏等。

TCP(传输控制协议) 是面向连接的,保证数据包的顺序和完整性,适用于需要可靠传输的应用。
TCP的特点:

  • 面向连接:在传输数据前需要建立连接(三次握手)。
  • 可靠传输:通过确认机制、重传机制保证数据包的顺序和完整性。
  • 流量控制和拥塞控制:通过滑动窗口、拥塞控制算法防止网络拥塞。
  • 适用场景:文件传输、邮件、网页浏览等。

三次握手和四次挥手

三次握手:建立TCP连接的过程,确保双方都准备好进行通信。

  1. 客户端发送SYN包(同步序列编号)请求建立连接。
  2. 服务器收到SYN包,回复SYN-ACK包(确认同步序列编号)。
  3. 客户端收到SYN-ACK包,发送ACK包(确认序列编号),连接建立。

四次挥手:断开TCP连接的过程,确保双方都同意断开连接。

  1. 客户端发送FIN包(结束标志)请求断开连接。
  2. 服务器收到FIN包,回复ACK包(确认序列编号)。
  3. 服务器发送FIN包请求断开连接。
  4. 客户端收到FIN包,回复ACK包,连接断开。

拥塞控制和流量控制

拥塞控制:防止网络拥塞,常用算法有慢启动、拥塞避免、快速重传和快速恢复。

  • 慢启动:初始发送窗口较小,逐步增大,避免网络拥塞。
  • 拥塞避免:当网络拥塞时,减小发送窗口,逐步增大。
  • 快速重传:检测到丢包时,立即重传丢失的数据包。
  • 快速恢复:在快速重传后,快速恢复发送窗口大小。

流量控制:防止发送方发送数据过快,接收方处理不过来,常用方法是滑动窗口协议。

  • 滑动窗口协议:通过动态调整发送窗口大小,控制数据发送速率。

TCP的状态,比如TCP TIME_WAIT状态

TCP有多种状态,如LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT、CLOSED等。
TIME_WAIT状态:表示连接已关闭,但等待一段时间以确保对方收到关闭确认。

  • 原因:确保最后一个ACK包能被对方收到,防止旧连接的数据包影响新连接。
  • 持续时间:通常为2倍的MSL(最大报文段生存时间)。
  • 详细解释:
    • 当TCP连接的主动关闭方发送最后一个ACK包后,进入TIME_WAIT状态。
    • 在TIME_WAIT状态期间,连接的资源(如端口号)不会立即释放,以确保最后一个ACK包能被对方收到。
    • 如果在TIME_WAIT期间收到旧连接的数据包,可以安全地丢弃这些数据包,防止影响新连接。
    • TIME_WAIT状态的持续时间通常为2倍的MSL(最大报文段生存时间),以确保所有旧连接的数据包都已过期。

最大报文段生存时间(Maximum Segment Lifetime,MSL)
是指一个TCP报文段在网络中存在的最长时间。MSL的主要作用是确保网络中旧的报文段在一定时间内被丢弃,从而避免影响新的连接。

常用网络状态查看命令 比如 netstat

  • netstat:显示网络连接、路由表、接口统计等信息。
    • 用法示例:netstat -an 显示所有连接和监听端口。
  • ss:显示套接字统计信息,比netstat更高效。
    • 用法示例:ss -tuln 显示所有监听的TCP和UDP端口。
  • ifconfig:配置网络接口,查看网络接口状态。
    • 用法示例:ifconfig eth0 显示eth0接口的配置信息。
  • ping:测试网络连通性,发送ICMP回显请求。
    • 用法示例:ping google.com 测试与google.com的连通性。
  • traceroute:跟踪数据包的路由路径,显示经过的每个路由器。
    • 用法示例:traceroute google.com 显示到google.com的路由路径。

文章作者: xucanxx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xucanxx !
  目录