计算机网络
OSI参考模型(七层)与TCP/IP模型(四层)
网络层
ARP
传输层
tcp udp
作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP 协议采纳三次握手四次挥手策略
三次握手(three-way handshaking)
TCP 三次握手,其实就是 TCP 应用在发送数据前,通过 TCP 协议跟通信对方协商好连接信息,建立起 TCP 的连接关系
- 第一次握手:客户端发送 SYN 报文,并进入 SYN-SENT 状态,等待服务器的确认
- 第二次握手:服务器收到 SYN 报文,需要给客户端发送 ACK 确认报文,同时服务器也要向客户端发送一个 SYN 报文,所以也就是向客户端发送 SYN + ACK 报文,此时服务器进入 SYN-RCVD 状态
- 第三次握手:客户端收到 SYN + ACK 报文,向服务器发送确认包,客户端进入 ESTABLISHED 状态。待服务器收到客户端发送的 ACK 包也会进入 ESTABLISHED 状态,完成三次握手
四次挥手(Four-Way-Wavehand)
当我们的应用程序不需要数据通信了,就会发起断开 TCP 连接。建立一个连接需要三次握手,而终止一个连接需要经过四次挥手
- 第一次挥手:客户端发送一个 FIN,用来关闭客户端到服务端的数据传送,客户端进入 FIN_WAIT_1 状态
- 第二次挥手:服务端收到 FIN 后,发送一个 ACK 给客户端,确认序号为收到序号 +1(与 SYN 相同,一个 FIN 占用一个序号),服务端进入 CLOSE-WAIT 状态
- 第三次挥手:服务端发送一个 FIN,用来关闭服务端到 客户端的数据传送,服务端进入 LAST-ACK 状态
- 第四次挥手:客户端收到 FIN 后,客户端进入 TIME_WAIT 状态,接着发送一个 ACK 给服务端,确认序号为收到序号 +1,服务端进入 CLOSED 状态,完成四次挥手
应用层
DNS
域名解析系统
FTP
FTP(文件传输协议)使用TCP实现可靠传输,采用控制连接和数据连接
端口:20 默认用该端口数据连接,21 默认用该端口传输命令控制
简单文件传输协议TFTP:基于UDP,使用69端口
HTTP
使用端口80
经典面试题:输入Url到返回一个浏览器界面的过程?
持久连接和非持久连接(keep alive, closed)
返回报文的状态码
- 1** - 信息,服务器收到请求,需要请求者继续执行操作
- 2** - 成功
- 3** - 重定向
- 4** - 客户端错误,请求包含语法错误或无法完成请求
- 5** - 服务器错误,服务器在处理请求的过程中发生了错误
- User-Agent(UA)信息:工具指纹(如
Java/1.8)。 - 服务器类型判断:HTTP头(
Server字段)、文件后缀(.jsp、.php)。
HTTPS
HTTPS(HyperText Transfer Protocol Secure)是超文本传输协议的安全版本。它在HTTP的基础上增加了SSL/TLS协议,以确保数据在客户端(如浏览器)和服务器之间的安全传输。以下是HTTPS的一些关键特点:
加密:通过SSL/TLS协议对传输的数据进行加密,防止中间人攻击和数据窃听。
身份验证:HTTPS使用数字证书来验证网站的身份,确保用户连接的是合法的服务器,而不是攻击者伪造的站点。
数据完整性:通过加密和校验机制,确保数据在传输过程中未被篡改。
SEO优势:搜索引擎(如Google)更倾向于优先展示使用HTTPS的网站,这有助于提升网站的搜索排名。
用户信任:浏览器通常会显示一个锁定图标,表示连接是安全的,从而增强用户对网站的信任。 总之,HTTPS提供了更高的安全性和隐私保护,尤其在涉及敏感信息(如个人数据和支付信息)时,使用HTTPS是非常重要的。
其他协议
SSH
- SSH(Secure Shell,安全外壳协议)是一种基于客户端 - 服务器架构的协议,通过加密技术对网络通信进行加密,从而为远程登录、文件传输等操作提供安全保障。它运行在应用层,使用 TCP 协议进行数据传输,其默认端口号为 22。
Telnet
- Telnet(Teletype Network Protocol,网络终端协议)是 TCP/IP 协议族的一部分,运行在应用层,使用 TCP 协议进行数据传输,其默认端口号为 23。
- 它允许用户在本地计算机(客户端)上运行一个 Telnet 客户端程序,通过网络连接到远程服务器上的 Telnet 服务器,从而在本地计算机上操作远程服务器,就像直接在远程服务器的控制台前操作一样。
SMB
SMB(Server Message Block)是一种网络协议,用于在计算机网络中共享文件、打印机和其他资源。它最初由 IBM 开发,后来被 Microsoft 和其他公司广泛采用。SMB 允许应用程序在网络中的计算机上读取和写入文件,并请求服务。端口:445
SNMP
SNMP(Simple Network Management Protocol)是一种用于网络管理的协议,主要用于监控和管理网络设备,如路由器、交换机、服务器、打印机等。SNMP允许网络管理员通过集中管理的方式来获取设备的状态信息、性能数据以及进行配置管理。端口:161
LDAP
LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是一种用于访问和管理目录服务的协议。它主要用于在网络中存储和检索信息,尤其是关于用户、设备和资源的结构化数据。端口:389
Rexec
Rexec(远程执行,Remote Execution)是一种网络协议,允许用户在远程计算机上执行命令。它是早期网络管理和自动化的一种方法,通常用于在网络中的计算机上执行命令或程序。端口:512,513,514
NFS
NFS(Network File System,网络文件系统)是一种用于在网络上共享文件的协议。它允许不同主机之间通过网络访问和共享文件,就像访问本地文件一样。NFS最初由Sun Microsystems在1980年代开发,现已成为Unix和Linux系统中广泛使用的标准。端口:1025,111








