文章目录
计算机网络
以下内容主要整理自《TCP/IP详解 卷一》、《图解TCP/IP》、《图解HTTP》、《程序员面试笔试宝典》节选等,想要了解更多推荐阅读以上数据相关章节部分。
1 网络模型
1.1 OSI七层模型与TCP/IP五层模型
(图片出自《图解TCP/IP》)
OSI(Open System Interconnection,开发系统互连)七层模型与TCP/IP五层模型的区别是:
- OSI模型更注重“通信协议必要的功能是什么”;
- 而TCP/IP五层模型则更强调“在计算机上实现协议应该开发哪种程序”。
通常面试都会问到的是TCP/IP五层模型的划分:
(1)物理层:负责数据传输的硬件(比如以太网或电话线路)。
(2)数据链路层:控制物理层与网络层之间的通信,主要负责物理传输的准备(比如物理地址寻址,流量控制、重发等)。MAC地址和交换机都工作在这一层。
(3)网络层:网络层使用IP协议,将网络地址翻译成物理地址,并进行选路。
(4)传输层:主要为两台主机上的应用提供端到端的通信。常见的传输协议有TCP、UDP协议。
(5)应用层:主要负责处理特定的应用程序细节。
2 网络协议
2.1 常见网络协议
(1) TCP
TCP是面向连接的、可靠的、基于字节流的通信协议。TCP为提供可靠性传输,实行“顺序控制”或“重发控制”机制。此外还具备“流量控制”、“拥塞控制”等众多机制。
(2) UDP
UDP是提供无连接的通信,不能保证数据包被发送到目标地址,典型的即时传输少量数据的应用程序通常使用UDP。
(3) HTTP
HTTP是指超文本传输协议,主要负责服务器与浏览器之间的通信。HTTP把客户端浏览器的请求发送到服务器,并把响应的网页内容由服务器返回到客户端浏览器。
【版本】
HTTP常用的有两个版本,一个HTTP1.0,另一个是HTTP1.1。区别是:
- HTTP1.0中每一个命令和应答都会触发一次TCP连接的建立和断开。
- HTTP1.1允许在一个TCP连接上发送多个命令和应答,即持久连接。
因此HTPP1.1大量地减少了TCP连接和断开操作,从而提高了效率。
【缺点】
- 通信使用明文(不加密),内容可能被窃听。
- 不验证通信方的身份,可能遭遇伪装。
- 无法证明报文的完整性,有可能被篡改。
(4) HTTPS
HTTPS从简单的来说就是安全的HTTP协议,使用了SSL协议。
HTTPS=HTTP+加密+认证+完整性保护
关于HTTPS的加密部分可以参考本文[3 加密算