news 2026/4/15 15:02:35

网络编程—网络协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
网络编程—网络协议

网络协议是设备间通信的标准化规则集,定义数据封装、寻址、传输、校验与处理,确保异厂商 / 异系统互联互通。互联网以 TCP/IP 为核心栈,按分层分工协作,兼顾可靠、高效与安全。

osi模型

  • 应用层:为网络用户提供各种服务,例如电子邮件、文件传输等。
  • 表示层:为不同主机间的通信提供统一的数据表示形式。
  • 会话层:负责信息传输的组织和协调,管理进程会话过程。
  • 传输层:管理网络通信两端的数据传输,提供可靠或不可靠的传输服务。
  • 网络层:负责数据传输的路由选择和网际互连。
  • 数据链路层,负责物理相邻(通过网络介质相连)的主机间的数据传输,主要作用包括物理地址寻址、数据帧封装、差错控制等。该层可分为逻辑链路控制子层(LLC)和介质访问控制子层(MAC)
  • 物理层,负责把主机中的数据转换成电信号,再通过网络介质(双绞线、光纤、无线信道等)来传输。该层描述了通信设备的机械、电气、功能等特性

TCP/IP 四层模型(实际工业模型)

  • 物理层 / 数据链路层:以太网(帧、MAC)、Wi-Fi(802.11)、PPP、VLAN(802.1Q)、ARP(IP→MAC)。
  • 网络层:IP(IPv4/IPv6,核心寻址)、ICMP(ping/traceroute)、OSPF/BGP(路由)。
  • 传输层:TCP(面向连接、可靠、流控 / 拥塞控制,适合文件 / 网页);UDP(无连接、低延迟,适合直播 / 游戏 / 物联网)。
  • 应用层:HTTP(80)/HTTPS(443,TLS 加密)、DNS(域名→IP)、SMTP/POP3/IMAP(邮件)、FTP/SFTP(文件传输)、SSH(远程管理)、NTP(时间同步)。

TCP/IP 五层模型(教学简化模型)

  • 应用层(对应 OSI 应用层 + 表示层 + 会话层)
  • 传输层(对应 OSI 传输层)
  • 网络层(对应 OSI 网络层)
  • 数据链路层(对应 OSI 数据链路层)
  • 物理层(对应 OSI 物理层)

关键区别

  • OSI 七层:理论模型,分层清晰但复杂,未完全落地;
  • TCP/IP 四层:实践模型,简洁高效,是互联网的实际标准;
  • 五层模型:教学模型,平衡理论与实践,便于理解和学习。
OSI 7 层TCP/IP 4 层核心职责典型协议 / 技术
应用层(L7)应用层面向用户服务HTTP/HTTPS、DNS、SMTP/POP3/IMAP、FTP/SFTP、WebSocket
表示层(L6)并入应用层加密、编码、格式转换TLS/SSL、MIME、Base64
会话层(L5)并入应用层会话建立 / 维护 / 终止NetBIOS、RPC
传输层(L4)传输层端到端可靠 / 实时传输TCP、UDP、SCTP
网络层(L3)网络层跨网寻址与路由IP(IPv4/IPv6)、ICMP、ARP、OSPF、BGP
数据链路层(L2)网络接口层局域网帧传输与 MAC 寻址以太网、Wi-Fi(802.11)、PPP、VLAN(802.1Q)
物理层(L1)网络接口层比特流与物理介质以太网物理层、Wi-Fi 射频、光纤 / 双绞线电气特性

ip的组成

IP地址==网络位+主机位
ip地址版本,V4(主流) V6(未来的方向)

相关网络配置

  • ifconfig查看网络相关配置。 主要查看本机的ip
  • ifconfig ens33 192.168.0.13/24 up临时设置本机ip地址,重启后失效。
  • 测试:pingwww.baidu.com测试本机是否可以正常上网
  • netstat -anp查本本机上所有的网络通信有那些
  • sudo vim /etc/network/interfaces虚拟机网络配置文件 ,设置ip(手动分配,或自动分配)ip地址,永久生效。
  • sudo /etc/init.d/networking restart进行网络设置的加载

名词解释

  • socket套接字,打开本地网络设备后,获得的文件描述符。方便后续进行网络收发。
  • ip+port地址+端口===》地址用来识别主机, 端口用来识别应用程序
  • 端口号的范围:1-65535
  • 网络字节序===》大端存储网络设备使用的字节序
  • 主机字节序---》 小端存储intelamdarm目前主流CPU都是小端。

udp(用户数据报协议

数据报
  1. 数据与数据之间有边界
  2. 发送和接收的次数要对应
  3. 没有写阻塞。发送太快,会导致数据丢失。
  4. 读阻塞。
特性:
  1. 无连接
  2. 低延迟,
  3. 网络资源使用率低

服务端:提供服务的一端,1
客户端:使用服务的一端 。多个

函数调用步骤

serversocket()=>bind()=>recvfrom()===>close()
clientsocket()---sendto() -----close()

函数调用关系

相关函数

int socket(int domain, int type, int protocol);
功能:程序向内核提出创建一个基于内存的套接字描述符
参数:
  • domain地址族,PF_INET == AF_INET ==>互联网程序
  • PF_UNIX == AF_UNIX ==>单机程序
type套接字类型:
  • SOCK_STREAM流式套接字===TCP
  • SOCK_DGRAM用户数据报套接字===>UDP
  • SOCK_RAW原始套接字===IP
protocol协议==0表示自动适应应用层协议。
返回值:
  1. 成功 返回申请的套接字id
  2. 失败-1
2int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen);
功能:如果该函数在服务器端调用,则表示将参数1相关的文件描述符文件与参数2指定的接口地址关联,用于从该接口接受数据。
sockfd, 需要被绑定ip和端口号的套接字
my_addr ipv4对应的地址结构体,man 7 ip
struct _sockaddr_in ///网络地址结构
{
u_short sin_family; ////地址族
u_short sin_port; ///地址端口
struct in_addr sin_addr; ///地址IP
};
socklen_t addrlen:参数2的长度。
返回值:
  • 成功0
  • 失败-1
发送接收函数:
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
功能:用于UDP协议中向对方发送数据。
参数:
  • sockfd本地的套接字id
  • buff本地的数据存储,一般是要发送的数据。
  • len要发送的数据长度
  • flags要发送数据方式,0表示阻塞发送。
  • dest_addr:必选,表示要发送到的目标主机信息结构体。
  • addrlen:目标地址长度。
返回值:
  • 成功 发送的数据长度
  • 失败-1
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
功能:用于UDP协议中获取对方发送的数据。
参数:
  • sockfd本地的套接字id
  • buff要存储数据的内存区,一般是数组或者动态内存。
  • len要获取的数据长度,一般是buff的大小。
  • flags获取方式,0阻塞
  • src_addr可选,表示对方的地址信息结构体,如果为NULL,表示不关心对方地址。
  • addrlen对方地址信息结构体大小。如果对方地址是NULL,则该值也为NULL
返回值:
  • 成功 接收到的数据长度
  • 失败-1
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 14:29:02

B站视频下载终极指南:快速上手BilibiliDown下载工具

B站视频下载终极指南:快速上手BilibiliDown下载工具 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/…

作者头像 李华
网站建设 2026/4/14 1:11:06

GPT-SoVITS训练过程中常见问题及解决方案汇总

GPT-SoVITS训练过程中常见问题及解决方案汇总 在语音合成技术快速演进的今天,个性化语音克隆已不再是实验室里的概念。随着 GPT-SoVITS 这类开源项目的兴起,普通人只需一段几分钟的录音,就能训练出高度还原自己音色的语音模型。这种“低门槛、…

作者头像 李华
网站建设 2026/4/8 20:17:48

通俗解释MOSFET栅极电容特性:驱动设计前置知识

深入理解MOSFET栅极电容:驱动设计的核心前置课你有没有遇到过这样的情况?明明选了一颗导通电阻极低、额定电流充足的MOSFET,结果在实际电路中发热严重,效率上不去,甚至莫名其妙地烧管子。排查半天,发现罪魁…

作者头像 李华
网站建设 2026/4/12 9:24:15

BilibiliDown技术深度解析:多线程架构下的高性能B站视频下载实现

BilibiliDown技术深度解析:多线程架构下的高性能B站视频下载实现 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh…

作者头像 李华
网站建设 2026/4/8 18:56:02

Silk-v3-decoder 音频解码工具终极使用指南

Silk-v3-decoder 音频解码工具终极使用指南 【免费下载链接】silk-v3-decoder [Skype Silk Codec SDK]Decode silk v3 audio files (like wechat amr, aud files, qq slk files) and convert to other format (like mp3). Batch conversion support. 项目地址: https://gitco…

作者头像 李华
网站建设 2026/4/13 13:41:22

半加器在ALU中的初步应用:架构简析

半加器在ALU中的角色:从“最简加法”看数字系统设计的起点你有没有想过,现代CPU每秒执行数十亿次运算的背后,其实是由一个个极其简单的逻辑门组合而成?那些复杂的浮点计算、图像处理、人工智能推理,追根溯源&#xff0…

作者头像 李华