news 2026/1/6 23:38:16

网络编程—网络协议

作者头像

张小明

前端开发工程师

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/1/6 17:43:51

D3QN算法实战:从入门到精通的PyTorch完整指南

D3QN算法实战:从入门到精通的PyTorch完整指南 【免费下载链接】D3QN D3QN Pytorch 项目地址: https://gitcode.com/gh_mirrors/d3/D3QN 想要快速掌握深度强化学习的终极武器吗?D3QN算法正是你需要的!🚀 这个巧妙融合Double…

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

Pspice安装教程:图文详解编译器与库文件配置步骤

Pspice仿真环境搭建实战:从编译器配置到库文件管理的完整指南 你有没有遇到过这种情况——辛辛苦苦装好OrCAD和Pspice,信心满满打开Capture准备画个电路仿真一下,结果一运行就弹出“ Model not found ”或者“ Compiler not found ”&am…

作者头像 李华
网站建设 2026/1/7 0:03:13

Vivado2021.1安装教程:Windows系统完整指南

Vivado 2021.1 安装实战指南:从零搭建 Windows 下的 FPGA 开发环境 你是不是也曾在准备开始 FPGA 项目时,卡在第一步—— Vivado 装不上 ? 点开安装包,进度条走到一半突然报错:“Failed to extract package”&…

作者头像 李华
网站建设 2026/1/1 16:01:17

AI编程工具Cursor试用限制深度解密与完全解除指南

AI编程工具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 this limit…

作者头像 李华
网站建设 2026/1/6 22:02:41

Hourglass倒计时神器:Windows平台专业时间管理工具完全解析

在快节奏的数字时代,精准的时间管理成为提升效率的关键因素。Hourglass作为一款专为Windows系统打造的开源倒计时工具,以其卓越的功能设计和简洁直观的操作体验,为各类用户提供专业级的时间管理解决方案。 【免费下载链接】hourglass The sim…

作者头像 李华
网站建设 2026/1/4 22:57:28

优雅围棋对弈软件Sabaki的完整使用指南

优雅围棋对弈软件Sabaki的完整使用指南 【免费下载链接】Sabaki An elegant Go board and SGF editor for a more civilized age. 项目地址: https://gitcode.com/gh_mirrors/sa/Sabaki 想要在电脑上体验专业级的围棋对弈吗?Sabaki这款优雅的围棋软件将为你的…

作者头像 李华