计算机网络常识
网络层次划分模型
为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在 1978年 提出了 "开放系统互联参考模型",即著名的 OSI / RM 模型(Open System Interconnection / Reference Model。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:
👋 物理层 1/7
物理层主要提供可靠的 物理媒体(中继器、集线器),确保原始的数据可在各种物理媒体上传输。
👋 链路层 2/7
链路层通过 网桥和交换机(https://www.zhihu.com/question/67473683)组建一个小型的局域网(目前最流行的局域网就是 以太网),使得本地的几台电脑 能够互相收发数据。
同时,每一台网络设备都具有物理地址 MAC地址 来标识在网络中的唯一身份。它收录在 Network Interface Card (网卡) 里。网卡的物理地址通常是由网卡生产厂家烧入,它存储传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一定是全球唯一的。生产以太网网卡的厂家就购买其中一组,具体生产时,逐个将唯一地址赋予以太网卡。
如何将数据组合成数据块,即帧(frame);
控制帧在物理信道上的传输,包括如何处理差错、调节速率以使与接收方相匹配;
在两个网络实体之间提供数据链路通路的建立、维持和释放的管理;
👋网络层 3/7
网络层主要依靠 路由器 (Router)进行寻径,使得 数据能够准确送达 至网络中的某一台主机。目前最流行 IP协议 来进行无连接的数据报传输、路由选择和差错控制。
在 IP协议 中,要求每台主机和路由器都有自己的IP地址。所以实际上每个主机和路由器的接口相关联的而不是与主机和路由器相关联的。当IP数据包经由路由器转发时,如果目标网络与本地路由器直接相连,则直接将数据包交付给目标主机,这称为直接交付;否则,路由器通过路由表查找路由信息,并将数据包转交给指明的下一跳路由器,这称为间接交付。
👋传输层 4/7
传输层主要使用 网关 这类翻译器(应对不同的通信协议、数据格式或语言,甚至体系结构),使得数据分段并可靠地送达。请注意任何具有上述功能的设备、应用都可以称之为网关。在传输层,信息传送的协议数据单元称为段或 报文。 传输时需要遵守对应的协议规则:
TCP协议(Transmission Control Protocol,可靠传输控制协议)
UDP协议(User Datagram Protocol,不可靠用户数据报协议)
👋会话层 5/7
会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。
👋表示层 6/7
表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
👋应用层 7/7
为操作系统或网络应用程序提供访问网络服务的接口。其需要遵守各类应用协议:
FTP(文件传送协议)
Telnet(远程登录协议)
DNS(域名解析协议)
SMTP(邮件传送协议)
POP3协议(邮局协议)
HTTP协议(Hyper Text Transfer Protocol)

常见的应用问题
👋数据报文在网络模型中的传输
HTTP报文 = TCP报文 = IP报文 = 以太网报文
各个网络层级都会对报文进行包转、拆解,并获取其中的数据进行下一步工作;
👋数据遵循TCP协议传输的细节
TCP/IP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它会保证数据不丢包、不乱序。建立/断开一个 TCP 连接时,需要客户端和服务器总共发送3/4个报文。
建立链接,首先由客户端发送报文给服务端,
服务端返回确认报文,客户端此时能够确认服务端可送达;
客户端再次发送报文,服务端收到后能够确认客户端可送达;
断开链接,首先需要客户端发送断开报文给服务端
服务端返回确认报文;
服务端发送断开报文给客户端;
客户端返回确认报文;
👋HTTP应用协议细节
HTTP 是无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。
请求方法的一些区别:
HTTP报文响应头的一些区别:
👋浏览器的同源策略
同源策略使得浏览器不能取得其他网站的资源,是浏览器的安全限制。
同源指的是:协议、域名、端口相同
对标签的资源请求,进行了轻微的跨域安全限制;
对AJAX进行了严格的跨域安全限制,一般我们使用 CORS / Cross-Origin Resource Sharing 规则解决跨域:
检查 GET / HEAD / POST 请求是否修改了默认请求头
非以上简单请求,浏览器会首先发送预检 OPTION 请求,并检查响应头是否包
Access-Controll-...
👋网络应用中的身份标识
cookie:默认情况下,浏览器会话结束时即删除所有 cookie 数据,不过也可以通过 setMaxAge 设置删除时间;
json-web-token:一旦用户登录,后续每个请求都将包含JWT,允许用户访问该令牌允许的路由、服务和资源。
session-storage:当浏览器进程结束时,将会清空域名下的对应数据;存储的数据可以跨越页面刷新而存在;
👋文件处理
文件上传
文件下载
缓存协议
CSRF
XSS
网络性能优化
分片传输
域名和DNS
SSL/TLS/HTTPS
👋WebSocket
WebSocket 是一种在单个TCP连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。建立长链接需要在应用层上再进行一次握手。
可以发送文本,也可以发送二进制数据。
没有同源限制,客户端可以与任意服务器通信。
协议标识符是ws
(如果加密,则为wss
),服务器网址就是 URL。