文章

计算机网络

计算机网络

参考计算机网络 – View of Thai

推荐课程1.0 认识计算机网络_哔哩哔哩_bilibili

屏幕截图,日期为2025年2月15日

OSI参考模型(七层)与TCP/IP模型(四层)

123

网络层

ARP

传输层

tcp udp

作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP 协议采纳三次握手四次挥手策略

三次握手(three-way handshaking)

TCP 三次握手,其实就是 TCP 应用在发送数据前,通过 TCP 协议跟通信对方协商好连接信息,建立起 TCP 的连接关系

  1. 第一次握手:客户端发送 SYN 报文,并进入 SYN-SENT 状态,等待服务器的确认
  2. 第二次握手:服务器收到 SYN 报文,需要给客户端发送 ACK 确认报文,同时服务器也要向客户端发送一个 SYN 报文,所以也就是向客户端发送 SYN + ACK 报文,此时服务器进入 SYN-RCVD 状态
  3. 第三次握手:客户端收到 SYN + ACK 报文,向服务器发送确认包,客户端进入 ESTABLISHED 状态。待服务器收到客户端发送的 ACK 包也会进入 ESTABLISHED 状态,完成三次握手

四次挥手(Four-Way-Wavehand)

当我们的应用程序不需要数据通信了,就会发起断开 TCP 连接。建立一个连接需要三次握手,而终止一个连接需要经过四次挥手

  1. 第一次挥手:客户端发送一个 FIN,用来关闭客户端到服务端的数据传送,客户端进入 FIN_WAIT_1 状态
  2. 第二次挥手:服务端收到 FIN 后,发送一个 ACK 给客户端,确认序号为收到序号 +1(与 SYN 相同,一个 FIN 占用一个序号),服务端进入 CLOSE-WAIT 状态
  3. 第三次挥手:服务端发送一个 FIN,用来关闭服务端到 客户端的数据传送,服务端进入 LAST-ACK 状态
  4. 第四次挥手:客户端收到 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的一些关键特点:

  1. 加密:通过SSL/TLS协议对传输的数据进行加密,防止中间人攻击和数据窃听。

  2. 身份验证:HTTPS使用数字证书来验证网站的身份,确保用户连接的是合法的服务器,而不是攻击者伪造的站点。

  3. 数据完整性:通过加密和校验机制,确保数据在传输过程中未被篡改。

  4. SEO优势:搜索引擎(如Google)更倾向于优先展示使用HTTPS的网站,这有助于提升网站的搜索排名。

  5. 用户信任:浏览器通常会显示一个锁定图标,表示连接是安全的,从而增强用户对网站的信任。 总之,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

本文由作者按照 CC BY 4.0 进行授权