计算机网络基础详解:从OSI模型到HTTP/HTTPS与Socket编程

计算机网络基础详解:从OSI模型到HTTP/HTTPS与Socket编程

本文适合刚接触计算机网络的小白,带你从零开始理解网络的分层模型、常见协议、浏览器访问网页的全过程,以及简单的网络编程。


OSI七层模型

OSI(Open System Interconnection)参考模型是一个理想化的网络分层模型,将网络通信划分为 七层,每层都承担不同的职责。

七层结构

  1. 物理层(Physical Layer)

    • 任务:传输比特流(0 和 1)。
    • 数据单位:比特(bit)。
    • 示例:双绞线、光纤、无线电波。
    • 打个比方:相当于"马路",只负责运东西,不管东西是什么。
  2. 数据链路层(Data Link Layer)

    • 任务:把比特组装成帧,负责差错检测、点对点传输。
    • 数据单位:帧(Frame)。
    • 示例:以太网、MAC地址。
    • 打个比方:运输的"快递车",每一帧就是一车货。
  3. 网络层(Network Layer)

    • 任务:负责寻址和路由,保证数据能从源头到目的地。
    • 数据单位:包(Packet / IP数据报)。
    • 示例:IP、ICMP、ARP。
    • 打个比方:导航系统,决定车怎么走才能到目的地。
  4. 传输层(Transport Layer)

    • 任务:端到端的通信,保证数据可靠传输或快速传输。
    • 数据单位:报文段(Segment)。
    • 示例:TCP(可靠)、UDP(快速)。
    • 打个比方:送快递时选择"顺丰保价"还是"普通快递"。
  5. 会话层(Session Layer)

    • 任务:建立、管理和终止会话。
    • 示例:登录系统的会话管理。
  6. 表示层(Presentation Layer)

    • 任务:数据翻译、加密、压缩。
    • 示例:JPEG、SSL、TLS。
    • 打个比方:把中文翻译成英文,或者把大文件压缩成小文件。
  7. 应用层(Application Layer)

    • 任务:直接面向用户,提供各种网络服务。
    • 示例:HTTP、FTP、DNS、SMTP。
    • 打个比方:外卖APP,用户通过它下单。

TCP/IP四层模型

实际工程中常用的并不是OSI七层模型,而是 TCP/IP四层模型

  1. 网络接口层(对应物理层 + 数据链路层)
  2. 网络层(IP、ICMP、ARP)
  3. 传输层(TCP、UDP)
  4. 应用层(HTTP、FTP、DNS 等)

浏览器访问网页的全过程

当你在浏览器输入 http://www.example.com 时,发生了什么?

  1. DNS解析

    • 浏览器先检查本地缓存,如果没有,就向本地DNS服务器请求。
    • DNS有两种查询方式:递归查询、迭代查询。
    • 解析得到服务器IP地址。
  2. TCP三次握手

    • 客户端与服务器建立可靠连接。
    • 三次握手的作用:确认双方都具备收发能力。
  3. HTTP请求

    • 浏览器构造HTTP请求报文并发送到服务器。
    • 请求报文包括:请求行、请求头、请求体。
  4. 服务器处理并响应

    • 服务器返回HTTP响应报文,包含状态码(200、404等)和数据。
  5. 浏览器渲染页面

    • 浏览器解析HTML → 下载CSS/JS/图片 → 渲染页面。

HTTP与HTTPS

HTTP特点

  1. 简单快速。
  2. 无连接:每次请求都会断开连接。
  3. 无状态:服务器不记得客户端之前做过什么。

HTTPS特点

  1. 加密传输(TLS/SSL保证安全性)。
  2. 端口不同:HTTP是80,HTTPS是443。
  3. 需要证书:保证网站身份可信。
  4. 缺点:性能开销大,证书费用高。

常见HTTP状态码

  • 200 OK:请求成功。
  • 206 Partial Content:部分请求成功(断点续传)。
  • 301 Moved Permanently:永久重定向。
  • 302 Found:临时重定向。
  • 403 Forbidden:拒绝访问。
  • 404 Not Found:资源不存在。
  • 500 Internal Server Error:服务器内部错误。

Socket编程入门

Socket 是网络编程的核心。以 TCP为例

服务器端流程

  1. 创建套接字:socket()
  2. 绑定IP和端口:bind()
  3. 监听端口:listen()
  4. 等待客户端连接:accept()
  5. 数据收发:send()recv()
  6. 关闭连接:close()

客户端流程

  1. 创建套接字:socket()
  2. 连接服务器:connect()
  3. 数据收发:send()recv()
  4. 关闭连接:close()

总结

  1. OSI七层模型是理论框架,TCP/IP四层模型是实际应用。
  2. 浏览器访问网页的全过程涉及 DNS解析、TCP连接、HTTP请求与响应
  3. HTTP简单高效,但不安全;HTTPS更安全但有性能和成本代价。
  4. Socket是网络编程的基石,理解 socket → bind → listen → accept 就能写最简单的服务端。
相关推荐
whltaoin4 小时前
Java 网络请求 Jar 包选型指南:从基础到实战
java·http·okhttp·网络请求·retrofit
百花~4 小时前
HTTP~
网络·网络协议·http
BossFriday14 小时前
【手撸IM】高性能HTTP API服务设计与实现
网络·网络协议·http
爱吃KFC的大肥羊17 小时前
应用层协议——HTTP
网络·网络协议·http
2501_9159184117 小时前
iOS 框架全解析,原生框架与跨平台框架对比、开发应用打包与 App Store 上架实战经验
android·ios·小程序·https·uni-app·iphone·webview
boy快快长大18 小时前
【面试题】HTTP与HTTPS的区别
网络协议·http·https
安卓开发者1 天前
在鸿蒙NEXT中发起HTTP网络请求:从入门到精通
网络·http·harmonyos
你的人类朋友2 天前
HTTP为什么不安全?
安全·http·https
K_i1342 天前
Kubernetes HTTPS迁移:Ingress到GatewayAPI实战
容器·https·kubernetes