网络
UDP和TCP的区别
UDP(用户数据报协议) 是无连接的,不保证数据包的顺序和完整性,适用于实时应用。
UDP的特点:
- 无连接:不需要建立连接即可发送数据。
- 不可靠:不保证数据包的顺序和完整性,可能丢包。
- 速度快:由于没有连接建立和确认机制,传输速度较快。
- 适用场景:实时视频、音频传输,在线游戏等。
TCP(传输控制协议) 是面向连接的,保证数据包的顺序和完整性,适用于需要可靠传输的应用。
TCP的特点:
- 面向连接:在传输数据前需要建立连接(三次握手)。
- 可靠传输:通过确认机制、重传机制保证数据包的顺序和完整性。
- 流量控制和拥塞控制:通过滑动窗口、拥塞控制算法防止网络拥塞。
- 适用场景:文件传输、邮件、网页浏览等。
三次握手和四次挥手
三次握手:建立TCP连接的过程,确保双方都准备好进行通信。
- 客户端发送SYN包(同步序列编号)请求建立连接。
- 服务器收到SYN包,回复SYN-ACK包(确认同步序列编号)。
- 客户端收到SYN-ACK包,发送ACK包(确认序列编号),连接建立。
四次挥手:断开TCP连接的过程,确保双方都同意断开连接。
- 客户端发送FIN包(结束标志)请求断开连接。
- 服务器收到FIN包,回复ACK包(确认序列编号)。
- 服务器发送FIN包请求断开连接。
- 客户端收到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的路由路径。
- 用法示例: