news 2026/10/6 13:23:13

网络编程—网络协议

作者头像

张小明

前端开发工程师

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
  • 网络字节序===》大端存储网络设备使用的字节序
  • 主机字节序---》 小端存储intel,amd,arm目前主流CPU都是小端。

udp(用户数据报协议)

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

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

函数调用步骤

server:socket()=>bind()=>recvfrom()===>close()
client:socket()---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;
2、int 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/10/7 3:42:29

B站音频下载工具完整使用指南

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

作者头像 李华
网站建设 2026/10/5 17:22:13

HashCheck文件校验工具:三步完成专业级哈希验证

HashCheck文件校验工具:三步完成专业级哈希验证 【免费下载链接】HashCheck HashCheck Shell Extension for Windows with added SHA2, SHA3, and multithreading; originally from code.kliu.org 项目地址: https://gitcode.com/gh_mirrors/ha/HashCheck 在…

作者头像 李华
网站建设 2026/10/5 17:16:15

OBS网页集成插件:直播创作的全新维度

OBS网页集成插件:直播创作的全新维度 【免费下载链接】obs-browser 项目地址: https://gitcode.com/gh_mirrors/obs/obs-browser 在当今直播内容日益丰富的时代,如何让直播画面更具专业性和互动性成为创作者关注的重点。OBS Browser插件应运而生…

作者头像 李华
网站建设 2026/10/5 16:56:41

天津大学LaTeX论文模板:高效学术写作的终极解决方案

天津大学LaTeX论文模板是专为天大学子打造的学术写作利器,让繁琐的论文排版工作变得简单高效。无论你是本科生撰写毕业论文,还是研究生准备学术发表,这套专业的LaTeX论文模板都能帮你节省大量时间,让你专注于内容创作。 【免费下载…

作者头像 李华
网站建设 2026/10/5 10:56:46

告别复杂配置:这款文件共享工具让局域网传输变得如此简单

告别复杂配置:这款文件共享工具让局域网传输变得如此简单 【免费下载链接】chfsgui This is just a GUI WRAPPER for chfs(cute http file server) 项目地址: https://gitcode.com/gh_mirrors/ch/chfsgui 在当今数字化工作环境中,文件共享工具已经…

作者头像 李华
网站建设 2026/10/5 17:16:20

智能重置工具:彻底解决Cursor试用限制的专业指南

智能重置工具:彻底解决Cursor试用限制的专业指南 【免费下载链接】go-cursor-help 解决Cursor在免费订阅期间出现以下提示的问题: Youve reached your trial request limit. / Too many free trial accounts used on this machine. Please upgrade to pro. We have …

作者头像 李华