当前位置: 首页 > news >正文

网络编程基础知识

一、物理层与 MAC 地址

  • 定位:OSI 模型第 1 层,负责硬件层面的「比特流传输」。

1.物理层

  • 核心作用:把二进制的 0/1 信号,通过电缆、光纤、无线电等物理介质传输出去。
  • 关注的是:电压、频率、信号编码方式、传输介质(网线、光纤),不关心数据内容。

2.MAC 地址(物理地址)

  • 全称:Media Access Control 地址,也叫硬件地址。
  • 特点:每个网卡出厂时就烧录了一个全球唯一的 48 位地址,格式如 AA:BB:CC:DD:EE:FF。
  • 作用:在同一局域网内,用来唯一标识一台设备,数据链路层(以太网)就是靠它来转发数据帧的。

二、网络层与 IP 协议

  • 定位:OSI 模型第 3 层,负责「跨网络的路由寻址」,核心是 IP 协议。

1.IP 协议(网际协议)

  • 核心作用:给不同网络的设备分配唯一的逻辑地址(IP 地址),并负责把数据包从源主机,通过路由器转发到目标主机。
  • 核心版本:
  1. IPv4:32 位地址(如 192.168.1.1),现在地址已经耗尽,是目前主流。
  2. IPv6:128 位地址,解决地址耗尽问题,同时支持更安全、更高效的传输。

2.IP 地址分类

  • A/B/C/D/E 类地址,其中 A/B/C 类是常用的单播地址,D 类用于组播,E 类保留。
  • 私有 IP 地址段(局域网内专用,不能公网路由):

A 类:10.0.0.0/8
B 类:172.16.0.0/12
C 类:192.168.0.0/16

3.子网划分与掩码

  • 子网掩码:用来区分 IP 地址中的「网络号」和「主机号」,如 255.255.255.0(/24)。
  • 作用:把大的 IP 网段划分成多个小的子网,方便管理和路由。

4.ARP 协议(地址解析协议)

  • 核心作用:把IP 地址解析成对应的 MAC 地址
  • 流程:主机 A 要给主机 B 发数据,先查 ARP 缓存,没有就发广播请求,主机 B 收到后单播回复自己的 MAC 地址,A 再更新缓存并发送数据。

5.ICMP 协议(互联网控制报文协议)

  • 核心作用:IP 协议的辅助协议,用来传递网络错误和控制信息。
  • 常见应用:ping 命令(测试网络连通性)、traceroute(追踪路由路径)。

三、传输层与接口

  • 定位:OSI 模型第 4 层,负责「端到端的数据传输」,给应用层提供可靠 / 不可靠的传输服务。

1.TCP 协议(传输控制协议)

  • 核心特点:面向连接、可靠传输、有序、有确认重传、流量控制、拥塞控制。
  • 适用场景:文件传输、网页浏览、邮件发送等,对数据完整性要求高的场景。
  • 关键机制:三次握手、四次挥手、滑动窗口、超时重传。

2.UDP 协议(用户数据报协议)

  • 核心特点:无连接、不可靠传输、无序、无确认、开销小、延迟低。
  • 适用场景:直播、游戏语音、视频通话、DNS 查询等,对实时性要求高、能容忍少量丢包的场景。

3.端口号

  • 作用:用来区分同一台主机上不同的应用进程(比如浏览器和微信都用 IP,但靠端口号区分)。
  • 范围:0-65535,其中 0-1023 是公认端口(如 HTTP 的 80、HTTPS 的 443、SSH 的 22)。

四、应用层与架构模式

  • 定位:OSI 模型第 7 层,直接和用户 / 应用交互,定义了应用之间通信的规则。

1.常见应用层协议

协议端口核心用途
HTTP/HTTPS80/443网页浏览、数据交互
FTP21/20文件传输
SSH22远程登录与管理
DNS53域名解析(域名→IP)
SMTP/POP3/IMAP25/110/143邮件发送与接收

2.常见架构模式

  • C/S(客户端 / 服务器)模式:客户端主动发起请求,服务器被动响应,如 QQ、游戏客户端。
  • B/S(浏览器 / 服务器)模式:客户端就是浏览器,无需安装专用软件,如网页版知乎、电商网站。
  • P2P(点对点)模式:节点之间直接通信,无中心服务器,如早期的迅雷、BT 下载。

五、套接字与网络字节序

  • 这部分是网络编程的核心基础,把前面的协议,变成你能写代码的接口

1.套接字(Socket)

  • 本质:操作系统给应用层提供的「网络编程接口」,是应用程序和传输层(TCP/UDP)之间的桥梁。
  • 分类:

流式套接字(SOCK_STREAM):基于 TCP,面向连接、可靠传输。
数据报套接字(SOCK_DGRAM):基于 UDP,无连接、不可靠传输。
原始套接字(SOCK_RAW):可以直接访问 IP 层,用于自定义协议、抓包等。

2.网络字节序(大端序)

  • 背景:不同 CPU 架构(x86 是小端序,部分服务器是大端序),多字节数据(如 IP 地址、端口号)的存储顺序不同,跨平台传输会出错。
  • 解决:网络传输统一使用大端序(高字节存低地址),所以主机在发送数据前,需要把主机字节序转换成网络字节序。
  • 常用转换函数:

htons():主机字节序转网络字节序(16 位,端口号)
htonl():主机字节序转网络字节序(32 位,IP 地址)
ntohs():网络字节序转主机字节序(16 位)
ntohl():网络字节序转主机字节序(32 位)

六、整体知识串联

  1. 应用层(浏览器)要发数据,通过 Socket 接口,把数据交给传输层。
  2. 传输层(TCP/UDP)给数据加上端口号,封装成段 / 报文,交给网络层。
  3. 网络层(IP 协议)加上 IP 地址,封装成数据包,同时用 ARP 协议解析 MAC 地址,交给数据链路层。
  4. 数据链路层加上 MAC 地址,封装成帧,通过物理层的信号传输到目标主机。
  5. 目标主机按相反的顺序,逐层解封装,把数据交给对应的应用进程。

七、核心考点:应用层协议 vs 传输层协议

1. 只使用 TCP 的协议(必须可靠传输)

协议端口号核心用途为什么用 TCP?
HTTP/HTTPS80 / 443网页浏览、API 接口数据不能丢、不能乱序,否则网页会出错
FTP21(控制)/20(数据)文件传输文件数据必须完整,不能丢包损坏
SSH22远程登录、安全管理交互命令必须可靠传输
Telnet23明文远程登录(已淘汰)早期远程管理,依赖可靠传输
SMTP25邮件发送邮件内容必须完整送达
POP3110邮件接收邮件内容必须完整
IMAP143邮件接收(同步)邮件状态同步需要可靠传输

2. 只使用 UDP 的协议(优先低延迟)

协议端口号核心用途为什么用 UDP?
DNS(查询)53域名解析单次查询数据量小,延迟优先,丢包可重发
DHCP67/68自动分配 IP 地址广播通信,无连接更方便
TFTP69简单文件传输(嵌入式设备用)轻量级、无连接,适合资源受限设备
SNMP161/162网络设备监控监控数据小,延迟优先

3. 既用 TCP 又用 UDP 的协议(看场景)

协议端口号使用场景说明
DNS53普通查询用 UDP(快),超过 512 字节的响应 / 区域传输用 TCP(可靠)

💡补充考点:网络层 / 数据链路层相关协议

  1. 网络层协议(IP 层)

IP 协议:核心,提供 IP 寻址和路由
ICMP 协议:IP 的辅助协议,用于 ping、traceroute 等网络诊断
ARP 协议:IP 地址 → MAC 地址解析(部分教材认为属于数据链路层)
RARP 协议:MAC 地址 → IP 地址解析(已淘汰)

  1. 数据链路层协议

以太网协议(Ethernet):局域网帧传输,用 MAC 地址寻址
PPP 协议:点对点通信协议,常用于拨号、VPN

💡答题小技巧(秒选方法)

  1. 优先记 “必须用 TCP” 的:HTTP/HTTPS、FTP、SSH、邮件协议,看到这些直接选 TCP。
  2. 优先记 “必须用 UDP” 的:DNS(默认)、DHCP、TFTP,看到这些优先选 UDP。
  3. 特殊情况:DNS 只有在大数据量时才用 TCP,绝大多数题目里都默认用 UDP。
http://www.jsqmd.com/news/690176/

相关文章:

  • Python矩阵运算与机器学习应用指南
  • 大型语言模型提示工程:7种前沿技术深度解析
  • 别再写try-catch了,推荐用这一种方式
  • U/V 双频专业无线对讲模块 小型化高集成射频方案
  • Memoria-智能影记创新实训博客(三):故事生成功能接口实现与界面展示
  • 高德地图API本地调试踩坑记:为什么官方demo能跑,我的代码就报错?
  • 突破硬件限制:OpenCore Legacy Patcher如何让2008-2017年Mac重获新生
  • PCA与t-SNE:数据降维可视化的核心技术与应用
  • Harness 中的熔断半开状态探测机制
  • 更强、更轻、更耐热:机器学习正帮我们设计“下一代超级合金”!
  • 世界读书日:华为阅读带读者开启阅读自由!
  • 别再硬编码了!用Unity Timeline+Playable实现GalGame对话系统(附完整项目)
  • VSCode 2026启动速度提升300%:实测验证的5个隐藏配置项与3个插件替代方案
  • centos 上没有安装telnet命令 ,如何测试到1个目标IP的 443端口是否open
  • 量子稳定器模拟器Sdim:高维量子纠错码研究新工具
  • 奥运羽毛球男单奖牌
  • easyRSA - Writeup by AI
  • 百度地图BMapGL鼠标绘制功能避坑指南:从GL版切回经典版的真实案例
  • uni-app弹窗进阶:用Vuex管理全局状态,实现一个支持多按钮回调的showToast
  • LTspice 3.3V 稳压二极管模型
  • 算法训练营第十一天|删除有序数组中的重复项 II
  • 5分钟掌握音乐格式转换:Unlock-Music浏览器解密工具完整指南
  • RAG系列:RAG核心技术原理解析
  • 2026年4月西安老酒回收机构估价能力权威排行盘点:西安剑南春回收,西安名酒回收,西安收老酒,实力盘点! - 优质品牌商家
  • VLC Android电视版和ChromeOS:3大核心优势与完整配置指南
  • Vue3 + wangEditor实战:如何像搭积木一样扩展一个自定义菜单(以“首行缩进”为例)
  • 告别信号模糊:手把手教你理解PCIe 3.0的动态均衡(含FIR滤波器与CTLE/DFE详解)
  • 如何彻底告别审稿焦虑:Elsevier Tracker让你的学术投稿进度一目了然
  • GB/T34944-2017 合规:Java 代码漏洞测试用例编写(附案例)
  • 时间序列预测中基线模型的重要性与实践