OSI模型TCP/IP协议族TCP/IP协议族体系结构TCP/IP与OSI对比OSI七层模型TCP/IP四层模型核心功能典型协议/技术应用层应用层直接面向用户提供网络服务HTTP, FTP, SMTP, DNS表示层合并至应用层数据格式转换、加密/压缩JPEG, SSL/TLS, ASCII会话层合并至应用层建立/维护/终止会话连接NetBIOS, RPC传输层传输层端到端可靠传输、流量控制TCP可靠、UDP高效网络层网络层路由选择、IP寻址IP, ICMP, ARP数据链路层网络接口层相邻节点帧传输、错误检测Ethernet, Wi-Fi, MAC地址物理层合并至网络接口层物理介质传输比特流光纤、网线、无线电波TCP协议TCP三大核心特性①面向连接三次握手建立连接像打电话客户端喂听得到吗SYN服务端嗯听得到你听得到我吗SYN-ACK客户端我也听得到ACK四次挥手告别要礼貌A我说完了准备挂啦FINB好的等我再说最后一句...ACKB我也说完了FINA拜拜ACK②可靠传输丢包重传发快递时快递员会电话确认你是否收到数据排序把乱序的拼图重新排好③流量控制滑动窗口根据接收方能力动态调整发送速度别把对方“噎死”IP/端口/MAC地址IP/端口/MAC地址IP地址IPV4/IPV6定义逻辑地址例192.168.1.1作用网络层寻址定位设备在网络中的位置端口定义0~65535的整数例HTTP用80端口作用区分同一设备上的不同应用MAC地址定义物理地址例00-1A-2B-3C-4D-5E作用数据链路层唯一标识网卡物理层与MAC地址物理层传输介质负责通过电缆、光纤、无线电波等物理媒介传输原始比特流0和1信号处理将数字信号转换为适合传输的模拟信号的QAM调制如Wi-Fi定义比特与电/光信号的映射规则如曼彻斯特编码关键特性物理层仅关注信号传输质量不识别设备地址依赖网卡、交换机端口、光纤收发器等设实现物理层功能备MAC层MAC子层介质访问控制层核心职责•控制设备如何访问共享物理介质如以太网、Wi-Fi•定义帧Frame的封装格式包括源/目标MAC地址•实现冲突检测与避免如CSMA/CD用于以太网CSMA/CA用于Wi-FiLLC子层逻辑链路控制层核心职责•提供逻辑链路标识通过SAP服务访问点•实现流量控制与错误恢复如滑动窗口协议物理层与MAC层的协作MAC地址MAC地址的结构与特性•格式48位6字节十六进制表示如00:1A:2B:3C:4D:5E•全球唯一性由IEEE分配给厂商前24位为OUI确保无重复•不可路由性仅在局域网内有效无法跨网络直接寻址MAC地址的作用场景核心职责•局域网通信交换机通过MAC地址表转发帧•ARP协议将目标IP地址解析为MAC地址局域网内•安全过滤网络接入控制如MAC地址白名单局域网内主机A向主机B发送数据数据链路层MAC子层•主机A封装帧目标MAC为主机B的地址物理层•将帧转换为电信号通过网线传输交换机处理•物理层接收电信号还原为帧•交换机检查目标MAC地址查表确定转发端口主机B接收•物理层接收信号还原为帧•MAC子层校验MAC地址若匹配则传递给上层网络层与IP协议常用网络层协议协议全称功能应用场景IPInternet Protocol数据包路由与寻址所有互联网通信的基础ICMPInternet Control Message Protocol网络诊断与错误报告ping命令检测连通性ARPAddress Resolution Protocol将IP地址解析为MAC地址局域网内设备通信RARPReverse Address Resolution Protocol将MAC地址解析为IP地址无盘工作站启动IGMPInternet Group Management Protocol管理组播组成员视频会议、直播OSPFOpen Shortest Path First动态路由协议链路状态算法内部网关协议企业内网BGPBorder Gateway Protocol自治系统AS间路由交换外部网关协议互联网骨干路由ARP协议地址解析协议的工作流程如下检查缓存主机A要发送数据给主机B已知B的IP地址先查看本机ARP缓存中是否有B的IP对应的MAC地址。发送广播请求若无主机A广播一个ARP请求包包含自己的IP和MAC以及目标IPB的IP询问“谁的IP是xx请告诉你的MAC地址”。目标响应同一网络中的所有设备收到广播只有目标主机B识别出自己的IP会单播回复一个ARP应答包包含自己的MAC地址。更新缓存主机A收到应答后将B的IP与MAC映射存入ARP缓存然后利用该MAC地址封装数据帧进行通信。协议详解与协作关系IP协议功能•寻址通过IP地址唯一标识设备IPv432位IPv6128位•路由基于路由表选择最佳传输路径•分片与重组当数据包超过链路MTU时进行分片接收端重组关键特性•无连接发送前不建立专用通道•不可靠依赖上层协议如TCP保证可靠性ICMP协议功能•错误报告当IP数据包传输失败时向源端发送错误消息如目标不可达、超时•网络探测通过ping测试连通性traceroute追踪路径ARP协议IP-MAC工作流程•主机A广播ARP请求“谁的IP是192.168.1.2请告诉MAC地址”•主机B单播回复“我是192.168.1.2我的MAC是00:1A:2B:3C:4D:5E”ARP缓存表临时存储IP-MAC映射减少重复查询RARP协议MAC-IP应用场景无盘工作站从服务器获取IP地址现多被DHCP取代、IGMP协议功能•成员管理主机加入或离开组播组如239.255.255.250•组播路由路由器通过IGMP报文维护组播组成员信息应用场景•IPTV直播同时向多个用户发送相同视频流•在线会议一对多音视频传输IP数据包结构版本号首部长度服务类型TOS总长度标识标志位片偏移生存时间TTL协议首部检验和源IP地址目的IP地址选项字段长度可变填充数据版本号4bitIPV4/IPV6首部长度4bit数据包头的长度服务类型TOS8bit最初用于定义优先级、延迟、吞吐量等服务质量现在多用于区分服务标记流量类别如视频、语音优先级总长度16bit整个IP数据包的总长度头部数据16bit最大长度为2^16 –1 65535字节超过下层数据链路协议MTU时需要分片标识16bit唯一标识一个数据包同一个数据包的不同分片共享相同标识便于重组标志3bit•第一位bit未启用保留始终为0•第二位bit表示禁止分片若为1则不需要分片则当数据包超过MTU时会被丢弃0则需要分片•第三位bit表示更多分片1表示后续还有分片0表示最后一个分片标志位片偏移13bit指示当前分片在原始数据包中的位置生存时间TTL8bit 防止数据包无限循环。每经过一个路由器减1当TTL0时丢弃数据包并发送ICMP超时消息协议8bit•6TCP•17UDP•1ICMP头部校验和16bit仅校验头部数据完整性不包括数据部分。接收方重新计算校验和以验证是否出错源地址32bit 发送方的IPV4地址目的地址32bit接收方的IPV4地址选项可变最多40字节扩展功能如记录路由、时间戳等比较少用存在时头部长度需要相应的增加填充数据网络层与IP协议IP地址解析以IPV4为例点分十进制形式192.168.1.1二进制视角32位二进制数分为4个8位组如11000000.10101000.00000001.00000001 →192.168.1.1主机号1网络号192.168.1.0IPV4地址分类私有地址类别地址范围应用场景A 类10.0.0.0 ~ 10.255.255.255大型企业内网B 类172.16.0.0 ~ 172.31.255.255中型机构C 类192.168.0.0 ~ 192.168.255.255家庭 / 小型办公室子网掩码子网掩码A类默认子网掩码255.0.0.0B类默认子网掩码255.255.0.0C类默认子网掩码255.255.255.0核心功能定义网络边界明确IP地址中哪部分是网络号哪部分是主机号二进制特性由连续的1和连续的0组成如11111111.11111111.11111111.00000000 → 255.255.255.0子网掩码表示方式点分十进制255.255.255.0CIDR表示法废除传统分类允许灵活划分/24表示前24位为网络号子网掩码的运作逻辑按位与运算将IP地址和它的子网掩码进行与运算得到网络地址IP地址:192.168.1.100 → 11000000.10101000.00000001.01100100子网掩码:255.255.255.0 → 11111111.11111111.11111111.00000000网络号:11000000.10101000.00000001.00000000 → 192.168.1.0划分子网的方法以C类地址192.168.1.0/24为例•首先确定需求子网数目例如需要4个子网•计算所需主机位数2^n 子网数此时n2(2^2 4)•新子网掩码原掩码 n/24-/26 (255.255.255.192)•计算子网地址范围子网1192.168.1.0/26子网划分详细计算•每个子网的主机数量2(^32−新掩码位数) −2减2是排除网络地址和广播地址•/26→2^6−262台主机/子网子网网络地址可用IP范围广播地址子网1192.168.1.0192.168.1.1 ~ 192.168.1.62192.168.1.63子网2192.168.1.64192.168.1.65 ~ 192.168.1.126192.168.1.127子网3192.168.1.128192.168.1.129 ~ 192.168.1.190192.168.1.191子网4192.168.1.192192.168.1.193 ~ 192.168.1.254192.168.1.255IPV6•地址长度128位→ 理论地址数量≈3.4×10383.4×1038地球每平方米6.5×10236.5×1023个地址•简化头部固定40字节取消校验和交由上层协议处理•地址类型单播、组播、任播•示例简化写法十六进制分段2001:0db8:85a3::8a2e:0370:7334::表示连续0的缩写路由核心功能路由过程示例传输层与端口传输层的核心使命功能定位•端到端通信为不同主机上的应用进程提供逻辑通信网络层负责主机到主机•两大核心服务•可靠传输TCP•高效传输UDP端口的本质•定义16位整数0~65535与IP地址共同组成套接字Socket唯一标识通信端点•示例192.168.1.100:8080 表示IP为192.168.1.100的设备上运行在8080端口的应用端口的核心作用•服务标识客户端通过端口号访问特定服务如HTTP默认80端口•并发支持服务端通过不同端口同时处理多个请求传输层与端口端口分类与规则1、端口号范围类别范围说明公认端口0~1023系统级服务需要管理员权限注册端口1024~49151用户级应用需要向 IANA 注册动态端口49152~65535客户端临时使用操作系统自动分配2、常见端口示例端口协议/服务用途22SSH安全远程登录80HTTP网页传输443HTTPS加密网页传输3306MySQL数据库服务53DNS域名解析传输层协议与端口的协作TCP协议端口使用场景服务端绑定固定端口如Web服务器监听80端口客户端使用动态端口发起连接如手机APP随机使用50000端口访问服务器三次握手中的端口交互•客户端SYN源端口50000目标端口80•服务端SYN-ACK源端口80目标端口50000•客户端ACK源端口50000目标端口80UDP协议端口使用特点•无需预先建立连接直接通过端口发送数据包•客户端和服务端端口的使用方式与TCP类似但无连接状态典型应用•DNS查询客户端从53端口获取域名解析结果•实时音视频Zoom使用UDP端口传输媒体流多路复用/解复用发送方复用将不同应用的数据封装到不同端口的报文段接收方解复用根据目标端口号将数据分发给正确的应用进程传输层与网络层的协作流程Socket IP地址 端口号 协议类型示例TCP 192.168.1.100:8080 表示一个TCP通信端点应用层与架构模式应用层功能定位•服务提供为终端用户提供具体网络服务如网页浏览、文件传输、邮件收发•协议实现定义数据格式和交互规则如HTTP、FTP、SMTP•核心特性•用户可见直接面向用户操作如浏览器输入URL•协议多样性不同服务对应不同协议DNS用于域名解析WebSocket用于实时通信协议全称用途默认端口HTTPHyperText Transfer Protocol网页数据传输80/TCPHTTPSHTTP Secure加密网页传输443/TCPFTPFile Transfer Protocol文件上传下载21/TCPSMTPSimple Mail Transfer Protocol邮件发送25/TCPDNSDomain Name System域名解析域名→IP53/UDP架构模式C/S架构Client-Server核心思想•客户端发起请求如微信桌面端•服务器集中处理请求并响应如腾讯聊天服务器典型协议SMTP邮件客户端与邮件服务器通信优缺点优点•高性能客户端可分担计算压力如游戏本地渲染•功能定制化客户端可深度优化用户体验缺点•维护成本高需为不同平台开发客户端Windows、macOS、Android等•升级困难用户需手动更新客户端版本B/S架构Browser-Server核心思想•浏览器统一客户端如Chrome、Firefox•服务器提供Web服务如Nginx、Apache典型协议HTTP/HTTPS优缺点优点•跨平台任何设备通过浏览器即可访问•易维护服务端更新即全网生效缺点•性能受限复杂计算依赖服务端如在线视频编辑•功能限制浏览器沙箱环境限制硬件访问如摄像头需授权套接字与字节序套接字为应用程序提供统一的网络通信能力如同电话插孔标准化连接方式抽象底层协议细节TCP/UDP开发者聚焦业务逻辑套接字编程流程套接字类型类型协议特性应用场景流式套接字 (SOCK_STREAM)TCP可靠、面向连接、双向字节流网页、文件传输数据报套接字 (SOCK_DGRAM)UDP不可靠、无连接、数据包独立实时音视频、DNS查询原始套接字 (SOCK_RAW)自定义 (如 ICMP)直接访问底层协议网络诊断工具 (ping)网络字节序与主机字节序字节序的本质定义多字节数据如int、float在内存中的存储顺序两种类型•大端序网络字节序高位字节在前人类书写习惯数据的高字节保存在内存的低地址中而数据的低字节保存在内存的高地址中比如0x1234存储为12 34•小端序主机字节序低位字节在前x86/ARM架构数据的高字节保存在内存的高地址中而数据的低字节保存在内存的低地址中比如0x1234存储为34 12大小端转换头文件#include arpa/inet.h1、htonl()函数作用主机→ 网络序32位如IPv4地址函数原型uint32_t htonl(uint32_t hostlong)参数hostlong表示主机字节顺序的32位数返回值32位的网络字节顺序2、htons()函数作用主机→ 网络序16位如端口号函数原型uint16_t htons(uint16_t hostlong)参数hostlong表示主机字节顺序的16位数返回值16位的网络字节顺序3、ntohl()函数作用网络→ 主机序32位函数原型uint32_t ntohl(uint32_t hostlong)参数hostlong表示网络字节顺序的32位数返回值32位的主机字节顺序4、ntohs()函数作用网络→ 主机序16位函数原型uint16_t ntohs(uint16_t hostlong)参数hostlong表示网络字节序顺序的16位数返回值16位的主机字节顺序inet_addr()函数作用将点分十进制字符串转换成网络字节序的无符号四字节整型函数原型uint32_t inet_addr(const char *cp);参数cp是一个指向以null结尾的字符串的指针该字符串表示一个点分十进制的IPv4地址例如192.168.1.1返回值32位的无符号长整型值IPV4地址inet_ntoa()函数作用将网络字节序的无符号四字节整型转换成点分十进制字符串函数原型char *inet_ntoa(struct in_addrin);参数in一个in_addr结构体其中包含要转换的网络字节序IPv4地址返回值指向静态分配的字符串的指针该字符串包含点分十进制的IP地址
Linux 网络编程 学习笔记
发布时间:2026/6/4 9:29:14
OSI模型TCP/IP协议族TCP/IP协议族体系结构TCP/IP与OSI对比OSI七层模型TCP/IP四层模型核心功能典型协议/技术应用层应用层直接面向用户提供网络服务HTTP, FTP, SMTP, DNS表示层合并至应用层数据格式转换、加密/压缩JPEG, SSL/TLS, ASCII会话层合并至应用层建立/维护/终止会话连接NetBIOS, RPC传输层传输层端到端可靠传输、流量控制TCP可靠、UDP高效网络层网络层路由选择、IP寻址IP, ICMP, ARP数据链路层网络接口层相邻节点帧传输、错误检测Ethernet, Wi-Fi, MAC地址物理层合并至网络接口层物理介质传输比特流光纤、网线、无线电波TCP协议TCP三大核心特性①面向连接三次握手建立连接像打电话客户端喂听得到吗SYN服务端嗯听得到你听得到我吗SYN-ACK客户端我也听得到ACK四次挥手告别要礼貌A我说完了准备挂啦FINB好的等我再说最后一句...ACKB我也说完了FINA拜拜ACK②可靠传输丢包重传发快递时快递员会电话确认你是否收到数据排序把乱序的拼图重新排好③流量控制滑动窗口根据接收方能力动态调整发送速度别把对方“噎死”IP/端口/MAC地址IP/端口/MAC地址IP地址IPV4/IPV6定义逻辑地址例192.168.1.1作用网络层寻址定位设备在网络中的位置端口定义0~65535的整数例HTTP用80端口作用区分同一设备上的不同应用MAC地址定义物理地址例00-1A-2B-3C-4D-5E作用数据链路层唯一标识网卡物理层与MAC地址物理层传输介质负责通过电缆、光纤、无线电波等物理媒介传输原始比特流0和1信号处理将数字信号转换为适合传输的模拟信号的QAM调制如Wi-Fi定义比特与电/光信号的映射规则如曼彻斯特编码关键特性物理层仅关注信号传输质量不识别设备地址依赖网卡、交换机端口、光纤收发器等设实现物理层功能备MAC层MAC子层介质访问控制层核心职责•控制设备如何访问共享物理介质如以太网、Wi-Fi•定义帧Frame的封装格式包括源/目标MAC地址•实现冲突检测与避免如CSMA/CD用于以太网CSMA/CA用于Wi-FiLLC子层逻辑链路控制层核心职责•提供逻辑链路标识通过SAP服务访问点•实现流量控制与错误恢复如滑动窗口协议物理层与MAC层的协作MAC地址MAC地址的结构与特性•格式48位6字节十六进制表示如00:1A:2B:3C:4D:5E•全球唯一性由IEEE分配给厂商前24位为OUI确保无重复•不可路由性仅在局域网内有效无法跨网络直接寻址MAC地址的作用场景核心职责•局域网通信交换机通过MAC地址表转发帧•ARP协议将目标IP地址解析为MAC地址局域网内•安全过滤网络接入控制如MAC地址白名单局域网内主机A向主机B发送数据数据链路层MAC子层•主机A封装帧目标MAC为主机B的地址物理层•将帧转换为电信号通过网线传输交换机处理•物理层接收电信号还原为帧•交换机检查目标MAC地址查表确定转发端口主机B接收•物理层接收信号还原为帧•MAC子层校验MAC地址若匹配则传递给上层网络层与IP协议常用网络层协议协议全称功能应用场景IPInternet Protocol数据包路由与寻址所有互联网通信的基础ICMPInternet Control Message Protocol网络诊断与错误报告ping命令检测连通性ARPAddress Resolution Protocol将IP地址解析为MAC地址局域网内设备通信RARPReverse Address Resolution Protocol将MAC地址解析为IP地址无盘工作站启动IGMPInternet Group Management Protocol管理组播组成员视频会议、直播OSPFOpen Shortest Path First动态路由协议链路状态算法内部网关协议企业内网BGPBorder Gateway Protocol自治系统AS间路由交换外部网关协议互联网骨干路由ARP协议地址解析协议的工作流程如下检查缓存主机A要发送数据给主机B已知B的IP地址先查看本机ARP缓存中是否有B的IP对应的MAC地址。发送广播请求若无主机A广播一个ARP请求包包含自己的IP和MAC以及目标IPB的IP询问“谁的IP是xx请告诉你的MAC地址”。目标响应同一网络中的所有设备收到广播只有目标主机B识别出自己的IP会单播回复一个ARP应答包包含自己的MAC地址。更新缓存主机A收到应答后将B的IP与MAC映射存入ARP缓存然后利用该MAC地址封装数据帧进行通信。协议详解与协作关系IP协议功能•寻址通过IP地址唯一标识设备IPv432位IPv6128位•路由基于路由表选择最佳传输路径•分片与重组当数据包超过链路MTU时进行分片接收端重组关键特性•无连接发送前不建立专用通道•不可靠依赖上层协议如TCP保证可靠性ICMP协议功能•错误报告当IP数据包传输失败时向源端发送错误消息如目标不可达、超时•网络探测通过ping测试连通性traceroute追踪路径ARP协议IP-MAC工作流程•主机A广播ARP请求“谁的IP是192.168.1.2请告诉MAC地址”•主机B单播回复“我是192.168.1.2我的MAC是00:1A:2B:3C:4D:5E”ARP缓存表临时存储IP-MAC映射减少重复查询RARP协议MAC-IP应用场景无盘工作站从服务器获取IP地址现多被DHCP取代、IGMP协议功能•成员管理主机加入或离开组播组如239.255.255.250•组播路由路由器通过IGMP报文维护组播组成员信息应用场景•IPTV直播同时向多个用户发送相同视频流•在线会议一对多音视频传输IP数据包结构版本号首部长度服务类型TOS总长度标识标志位片偏移生存时间TTL协议首部检验和源IP地址目的IP地址选项字段长度可变填充数据版本号4bitIPV4/IPV6首部长度4bit数据包头的长度服务类型TOS8bit最初用于定义优先级、延迟、吞吐量等服务质量现在多用于区分服务标记流量类别如视频、语音优先级总长度16bit整个IP数据包的总长度头部数据16bit最大长度为2^16 –1 65535字节超过下层数据链路协议MTU时需要分片标识16bit唯一标识一个数据包同一个数据包的不同分片共享相同标识便于重组标志3bit•第一位bit未启用保留始终为0•第二位bit表示禁止分片若为1则不需要分片则当数据包超过MTU时会被丢弃0则需要分片•第三位bit表示更多分片1表示后续还有分片0表示最后一个分片标志位片偏移13bit指示当前分片在原始数据包中的位置生存时间TTL8bit 防止数据包无限循环。每经过一个路由器减1当TTL0时丢弃数据包并发送ICMP超时消息协议8bit•6TCP•17UDP•1ICMP头部校验和16bit仅校验头部数据完整性不包括数据部分。接收方重新计算校验和以验证是否出错源地址32bit 发送方的IPV4地址目的地址32bit接收方的IPV4地址选项可变最多40字节扩展功能如记录路由、时间戳等比较少用存在时头部长度需要相应的增加填充数据网络层与IP协议IP地址解析以IPV4为例点分十进制形式192.168.1.1二进制视角32位二进制数分为4个8位组如11000000.10101000.00000001.00000001 →192.168.1.1主机号1网络号192.168.1.0IPV4地址分类私有地址类别地址范围应用场景A 类10.0.0.0 ~ 10.255.255.255大型企业内网B 类172.16.0.0 ~ 172.31.255.255中型机构C 类192.168.0.0 ~ 192.168.255.255家庭 / 小型办公室子网掩码子网掩码A类默认子网掩码255.0.0.0B类默认子网掩码255.255.0.0C类默认子网掩码255.255.255.0核心功能定义网络边界明确IP地址中哪部分是网络号哪部分是主机号二进制特性由连续的1和连续的0组成如11111111.11111111.11111111.00000000 → 255.255.255.0子网掩码表示方式点分十进制255.255.255.0CIDR表示法废除传统分类允许灵活划分/24表示前24位为网络号子网掩码的运作逻辑按位与运算将IP地址和它的子网掩码进行与运算得到网络地址IP地址:192.168.1.100 → 11000000.10101000.00000001.01100100子网掩码:255.255.255.0 → 11111111.11111111.11111111.00000000网络号:11000000.10101000.00000001.00000000 → 192.168.1.0划分子网的方法以C类地址192.168.1.0/24为例•首先确定需求子网数目例如需要4个子网•计算所需主机位数2^n 子网数此时n2(2^2 4)•新子网掩码原掩码 n/24-/26 (255.255.255.192)•计算子网地址范围子网1192.168.1.0/26子网划分详细计算•每个子网的主机数量2(^32−新掩码位数) −2减2是排除网络地址和广播地址•/26→2^6−262台主机/子网子网网络地址可用IP范围广播地址子网1192.168.1.0192.168.1.1 ~ 192.168.1.62192.168.1.63子网2192.168.1.64192.168.1.65 ~ 192.168.1.126192.168.1.127子网3192.168.1.128192.168.1.129 ~ 192.168.1.190192.168.1.191子网4192.168.1.192192.168.1.193 ~ 192.168.1.254192.168.1.255IPV6•地址长度128位→ 理论地址数量≈3.4×10383.4×1038地球每平方米6.5×10236.5×1023个地址•简化头部固定40字节取消校验和交由上层协议处理•地址类型单播、组播、任播•示例简化写法十六进制分段2001:0db8:85a3::8a2e:0370:7334::表示连续0的缩写路由核心功能路由过程示例传输层与端口传输层的核心使命功能定位•端到端通信为不同主机上的应用进程提供逻辑通信网络层负责主机到主机•两大核心服务•可靠传输TCP•高效传输UDP端口的本质•定义16位整数0~65535与IP地址共同组成套接字Socket唯一标识通信端点•示例192.168.1.100:8080 表示IP为192.168.1.100的设备上运行在8080端口的应用端口的核心作用•服务标识客户端通过端口号访问特定服务如HTTP默认80端口•并发支持服务端通过不同端口同时处理多个请求传输层与端口端口分类与规则1、端口号范围类别范围说明公认端口0~1023系统级服务需要管理员权限注册端口1024~49151用户级应用需要向 IANA 注册动态端口49152~65535客户端临时使用操作系统自动分配2、常见端口示例端口协议/服务用途22SSH安全远程登录80HTTP网页传输443HTTPS加密网页传输3306MySQL数据库服务53DNS域名解析传输层协议与端口的协作TCP协议端口使用场景服务端绑定固定端口如Web服务器监听80端口客户端使用动态端口发起连接如手机APP随机使用50000端口访问服务器三次握手中的端口交互•客户端SYN源端口50000目标端口80•服务端SYN-ACK源端口80目标端口50000•客户端ACK源端口50000目标端口80UDP协议端口使用特点•无需预先建立连接直接通过端口发送数据包•客户端和服务端端口的使用方式与TCP类似但无连接状态典型应用•DNS查询客户端从53端口获取域名解析结果•实时音视频Zoom使用UDP端口传输媒体流多路复用/解复用发送方复用将不同应用的数据封装到不同端口的报文段接收方解复用根据目标端口号将数据分发给正确的应用进程传输层与网络层的协作流程Socket IP地址 端口号 协议类型示例TCP 192.168.1.100:8080 表示一个TCP通信端点应用层与架构模式应用层功能定位•服务提供为终端用户提供具体网络服务如网页浏览、文件传输、邮件收发•协议实现定义数据格式和交互规则如HTTP、FTP、SMTP•核心特性•用户可见直接面向用户操作如浏览器输入URL•协议多样性不同服务对应不同协议DNS用于域名解析WebSocket用于实时通信协议全称用途默认端口HTTPHyperText Transfer Protocol网页数据传输80/TCPHTTPSHTTP Secure加密网页传输443/TCPFTPFile Transfer Protocol文件上传下载21/TCPSMTPSimple Mail Transfer Protocol邮件发送25/TCPDNSDomain Name System域名解析域名→IP53/UDP架构模式C/S架构Client-Server核心思想•客户端发起请求如微信桌面端•服务器集中处理请求并响应如腾讯聊天服务器典型协议SMTP邮件客户端与邮件服务器通信优缺点优点•高性能客户端可分担计算压力如游戏本地渲染•功能定制化客户端可深度优化用户体验缺点•维护成本高需为不同平台开发客户端Windows、macOS、Android等•升级困难用户需手动更新客户端版本B/S架构Browser-Server核心思想•浏览器统一客户端如Chrome、Firefox•服务器提供Web服务如Nginx、Apache典型协议HTTP/HTTPS优缺点优点•跨平台任何设备通过浏览器即可访问•易维护服务端更新即全网生效缺点•性能受限复杂计算依赖服务端如在线视频编辑•功能限制浏览器沙箱环境限制硬件访问如摄像头需授权套接字与字节序套接字为应用程序提供统一的网络通信能力如同电话插孔标准化连接方式抽象底层协议细节TCP/UDP开发者聚焦业务逻辑套接字编程流程套接字类型类型协议特性应用场景流式套接字 (SOCK_STREAM)TCP可靠、面向连接、双向字节流网页、文件传输数据报套接字 (SOCK_DGRAM)UDP不可靠、无连接、数据包独立实时音视频、DNS查询原始套接字 (SOCK_RAW)自定义 (如 ICMP)直接访问底层协议网络诊断工具 (ping)网络字节序与主机字节序字节序的本质定义多字节数据如int、float在内存中的存储顺序两种类型•大端序网络字节序高位字节在前人类书写习惯数据的高字节保存在内存的低地址中而数据的低字节保存在内存的高地址中比如0x1234存储为12 34•小端序主机字节序低位字节在前x86/ARM架构数据的高字节保存在内存的高地址中而数据的低字节保存在内存的低地址中比如0x1234存储为34 12大小端转换头文件#include arpa/inet.h1、htonl()函数作用主机→ 网络序32位如IPv4地址函数原型uint32_t htonl(uint32_t hostlong)参数hostlong表示主机字节顺序的32位数返回值32位的网络字节顺序2、htons()函数作用主机→ 网络序16位如端口号函数原型uint16_t htons(uint16_t hostlong)参数hostlong表示主机字节顺序的16位数返回值16位的网络字节顺序3、ntohl()函数作用网络→ 主机序32位函数原型uint32_t ntohl(uint32_t hostlong)参数hostlong表示网络字节顺序的32位数返回值32位的主机字节顺序4、ntohs()函数作用网络→ 主机序16位函数原型uint16_t ntohs(uint16_t hostlong)参数hostlong表示网络字节序顺序的16位数返回值16位的主机字节顺序inet_addr()函数作用将点分十进制字符串转换成网络字节序的无符号四字节整型函数原型uint32_t inet_addr(const char *cp);参数cp是一个指向以null结尾的字符串的指针该字符串表示一个点分十进制的IPv4地址例如192.168.1.1返回值32位的无符号长整型值IPV4地址inet_ntoa()函数作用将网络字节序的无符号四字节整型转换成点分十进制字符串函数原型char *inet_ntoa(struct in_addrin);参数in一个in_addr结构体其中包含要转换的网络字节序IPv4地址返回值指向静态分配的字符串的指针该字符串包含点分十进制的IP地址