本文系统阐述了计算机网络的分层模型与关键协议。首先介绍OSI七层结构及各层职责;随后对简化的五层(物理、数据链路、网络、传输、应用)模型进行概述。接着说明客户端请求如何依据URL确定使用的协议,并指出TCP、HTTP、FTP分别位于传输层和应用层。随后简要描述TCP/IP协议族的四层体系、主要特性以及常见应用层协议。最后重点解释ARP协议的工作原理——通过广播请求将IP地址映射为MAC地址并缓存,以实现局域网内的地址解析。

TCP是一种面向连接的可靠传输协议,其四次挥手过程用于优雅地断开连接,确保双方都已完成数据传输。第一次挥手客户端发送FIN报文,告知服务器不再发送数据;服务器回复ACK确认,并进入关闭等待状态,可能继续发送数据。随后,服务器发送FIN报文,客户端再次确认。最后,客户端进入TIME-WAIT状态,经过2MSL后完全关闭连接,服务器则提前进入CLOSED状态。 四次挥手的原因在于TCP是全双工的,双方都需要确认没有数据需要发送,才能安全关闭连接。最后一次ACK至关重要,防止延迟报文段导致连接状态混乱。 TCP还会出现粘包和拆包问题,这是由于其流式传输特性,数据包边界不明确造成的。可以通过设置包头、包长或结束标识符来解决。 TCP与UDP的区别在于,TCP提供可靠、有序的连接,有拥塞控制和流量控制,适用于对数据完整性要求高的场景;而UDP则更快、更简单,但不可靠,适用于实时性要求高的场景。可以通过应用层实现可靠的UDP,例如通过超时重传和确认序列号。TCP报文首部中的序号字段占用4个字节,用于标识数据字节的顺序。TCP缓存用于临时存储待发送或接收的数据,提高传输效率。

TCP异常终止(reset报文)发生在无法正常四次挥手释放连接时,通过发送RST报文强制断开连接,释放资源。常见情形包括连接目标端口未监听、程序崩溃、接收到未知TCP报文、或长时间无确认。 UDP可靠传输可通过应用层实现确认、重传和窗口机制,或使用RUDP、RTP、UDT等已实现的可靠UDP协议。 报文乱序是由于IP路由不同导致的,TCP会先假设乱序并记录时间戳,判断是否丢包,避免不必要的重传。 IP地址分为A、B、C三类,以及D类(多播)和E类(保留)。分类是为了优化路由表大小和转发速度,避免路由器维护全网地址。 IPv4和IPv6的区别在于地址长度(32位vs 128位)、表示方法、包大小和安全性。IPv6内置IPSec支持,提供更强的安全性。 HTTPS通过SSL/TLS加密HTTP通信,确保数据安全。它采用混合加密机制,先用非对称加密协商对称密钥,再用对称加密进行数据传输,兼顾安全性和效率。常见的加密算法包括对称加密(AES、DES)、非对称加密(RSA、ECC)和Hash算法(MD5、SHA)。

本文系统介绍了HTTPS的握手与加密过程、HTTP常见错误码(4xx、5xx)及其含义、主要状态码分类与示例、301与302、302与304的区别。进一步阐述完整的HTTP请求包括DNS解析流程,解释重定向的概念、实现方式及其与服务器端请求转发的区别,并简要说明DNS解析的层级查询与缓存机制。

本文是一篇关于Linux操作系统常用命令的实用指南。核心内容涵盖了六个方面:1. 进程查看(ps、top命令);2. 文本搜索与日志分析(重点详解了grep命令的参数及正则表达式);3. 主机名修改(hostname与hostnamectl);4. 开机自启动实现方式(cron与rc.local);5. 内存状态监控(free与top命令);6. 文件压缩与解压(详细介绍了tar、gzip、bzip2及compress等工具及其用法)。

进程切换需保存完整上下文并刷新TLB,开销大于仅切换硬件上下文的线程切换。进程间通信方式包括匿名/有名管道(半双工、FIFO)、信号(异步通知)、消息队列(内核存储、支持随机读取)、共享内存(提供公共地址空间并配合信号量同步)以及 socket(跨主机双向通信)。信号量用于多进程/线程对公共资源的访问控制,提供 P(减)/V(增)操作并可在进程间或线程间共享。全文通过代码示例说明各机制的使用方法。