网络协议课程笔记上

一、 TCP 协议核心概念

  • 端口: 0-65535 范围,用于区分不同应用和服务。
    • 0-1023: 系统/特权端口 (root 用户)。
    • 1024-49151: 应用/注册端口 (常用服务)。
    • 49152-65535: 动态/私有端口 (客户端临时分配)。
  • 三次握手 (Three-way Handshake): 建立可靠 TCP 连接的关键步骤。
    1. SYN: 客户端发送同步报文,请求连接。
    2. SYN-ACK: 服务器回复同步-确认报文,确认请求并同步序号。
    3. ACK: 客户端发送确认报文,连接建立。
    • 目的: 确保连接双方都准备好通信,并同步序列号,为可靠传输奠定基础。
  • 四次挥手 (Four-way Handshake): 安全断开 TCP 连接的步骤。
    1. FIN: 客户端发送完成报文,请求关闭连接 (不再发送数据)。
    2. ACK: 服务器回复确认报文,确认收到关闭请求 (可能继续发送数据)。
    3. FIN: 服务器发送完成报文,表示服务器也准备好关闭连接 (数据发送完毕)。
    4. ACK: 客户端回复确认报文,连接完全关闭。
    • 目的: 确保双方都完成数据传输并同意断开,避免数据丢失。
  • TCP 状态机: 描述 TCP 连接生命周期中不同状态的转换。
    • 关键状态: CLOSED, LISTEN, SYN_SENT, SYN_RECEIVED, ESTABLISHED, FIN_WAIT_1, FIN_WAIT_2, CLOSE_WAIT, LAST_ACK, TIME_WAIT.
    • 核心流程:CLOSEDLISTEN (服务器监听),经过三次握手进入 ESTABLISHED (连接建立),再通过四次挥手回到 CLOSED (连接关闭)。 TIME_WAIT 状态等待 2MSL 时间,确保网络中残余数据包消失。
  • MSL (最大报文段生存时间): TCP 连接超时时间,默认 60 秒。
    • 作用: 处理延迟或重传报文,避免资源立即释放,影响连接稳定性。
  • 半连接队列 & 全连接队列: 服务器端用于管理连接请求的队列。
    • 半连接队列 (SYN Queue): 存放 SYN 请求,等待完成三次握手。默认大小有限,超出可能导致 SYN Flood 攻击。
    • 全连接队列 (Accept Queue): 存放已完成三次握手,等待应用层 accept() 的连接。默认大小有限,过载可能导致连接拒绝。
    • 优化: 调整队列大小可提升并发连接处理能力。
  • Socket (套接字): 应用程序与 TCP/IP 协议栈交互的接口。
    • 客户端创建 Socket 发起连接,服务器端 Socket 监听端口、接受连接。
    • Socket 提供了 bind, listen, accept, read, write 等系统调用,实现网络通信。
  • 超时重传: TCP 保证可靠性的机制,数据包丢失后会重传,默认重传次数有限,超过则放弃连接。
  • 拥塞控制: 防止网络过载的机制,通过算法 (如 Reno, CUBIC, BBR) 动态调整发送速率,避免网络拥堵。

二、 UDP 协议核心概念

  • 用户数据报协议 (User Datagram Protocol): 传输层协议,提供不可靠、无连接的数据传输服务。
  • 特点:
    • 不可靠: 不保证数据包到达、顺序和完整性。
    • 无连接: 无需握手,直接发送数据。
    • 轻量级: 头部仅 8 字节,开销小,速度快。
    • 实时性: 适用于实时应用 (语音、视频)。
    • 支持广播/多播: 可以进行广播和多播通信。
  • 头部结构 (8 字节): 源端口, 目标端口, 长度, 校验和。
  • 应用场景: 对实时性要求高,但可容忍少量丢包的应用,如在线视频、语音通话、DNS 查询等。

三、 网络层协议核心概念

  • ICMP (Internet Control Message Protocol): 互联网控制报文协议,辅助 IP 协议,用于网络控制和错误报告。
    • Ping: 基于 ICMP Echo 请求/应答,测试网络连通性。
    • Traceroute: 基于 ICMP Time Exceeded 消息,追踪路由路径。
    • 防火墙: 可配置 ICMP 规则,控制 ICMP 流量,影响 ping 和 traceroute 功能。
  • ARP (Address Resolution Protocol): 地址解析协议,通过 IP 地址查找 MAC 地址。
    • ARP 请求广播: 询问目标 IP 的 MAC 地址。
    • ARP 响应单播: 目标主机回复包含 MAC 地址的响应。
    • ARP 缓存: 存储 IP-MAC 地址映射关系,提高效率。
    • ARP 欺骗/投毒: 网络攻击手段,伪造 ARP 响应,篡改 IP-MAC 映射,导致流量劫持或中断。
    • 静态 ARP 绑定: 防御 ARP 欺骗的方法,手动配置 IP-MAC 映射。
  • IP 协议 (Internet Protocol): 网络层核心协议,负责数据包路由和转发。
    • 无连接: 每个数据包独立路由。
    • 尽力而为: 不保证可靠 delivery。
    • 主要功能: IP 编址, 路由选择, 数据包分片与重组。
    • IP 数据包头部 (IPv4): 包含版本, 头部长度, 服务类型, 总长度, 标识, 标志, 片偏移, 生存时间 (TTL), 协议类型, 头部校验和, 源/目标 IP 地址等字段。
    • TTL (生存时间): 限制数据包在网络中的跳数,防止环路,ping 命令可观察 TTL 值。
  • IP 地址: 网络设备的逻辑地址,IPv4 为 32 位,点分十进制表示。
    • 网络 ID & 主机 ID: IP 地址分为网络标识和主机标识,用于网络分层和寻址。
    • 特殊 IP 地址:
      • 网络地址: 标识网段,不可分配给主机。
      • 广播地址: 广播消息到网段内所有主机,不可分配给主机。
      • 127.0.0.1: 本地环回地址,测试本机网络协议栈。
      • 0.0.0.0: 所有网络,所有接口。
    • IP 地址分类 (ABC 类): 根据网络 ID 长度划分,影响网络规模和主机容量。
      • A 类: 网络 ID 8 位,主机 ID 24 位,网络号范围 1-126。 (私有地址: 10.0.0.0/8)
      • B 类: 网络 ID 16 位,主机 ID 16 位,网络号范围 128-191。 (私有地址: 172.16.0.0/12)
      • C 类: 网络 ID 24 位,主机 ID 8 位,网络号范围 192-223。 (私有地址: 192.168.0.0/16192.168.0.0/24)
      • D 类: 组播地址 (224-239)。
      • E 类: 保留地址 (240-255)。
    • 私有 IP 地址: 用于局域网,公网 IP 地址用于互联网。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/15292.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode预览插件

在左侧列表拓展里搜索 Live Preview 安装,然后在html页面点击右键找到show Preview 结果如下图 然后就可以进行代码开发并实时预览了

【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战

【04】Java若依vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战 项目背景 本项目经费43000元,需求文档如下,工期25天,目前已经过了8天,时间不多了&#x…

【DeepSeek】DeepSeek概述 | 本地部署deepseek

目录 1 -> 概述 1.1 -> 技术特点 1.2 -> 模型发布 1.3 -> 应用领域 1.4 -> 优势与影响 2 -> 本地部署 2.1 -> 安装ollama 2.2 -> 部署deepseek-r1模型 1 -> 概述 DeepSeek是由中国的深度求索公司开发的一系列人工智能模型,以其…

Windows下AMD显卡在本地运行大语言模型(deepseek-r1)

Windows下AMD显卡在本地运行大语言模型 本人电脑配置第一步先在官网确认自己的 AMD 显卡是否支持 ROCm下载Ollama安装程序模型下载位置更改下载 ROCmLibs先确认自己显卡的gfx型号下载解压 替换替换rocblas.dll替换library文件夹下的所有 重启Ollama下载模型运行效果 本人电脑配…

使用Pytorch训练一个图像分类器

一、准备数据集 一般来说,当你不得不与图像、文本或者视频资料打交道时,会选择使用python的标准库将原始数据加载转化成numpy数组,甚至可以继续转换成torch.*Tensor。 对图片而言,可以使用Pillow库和OpenCV库对视频而言&#xf…

DeepSeek之Api的使用(将DeepSeek的api集成到程序中)

一、DeepSeek API 的收费模式 前言:使用DeepSeek的api是收费的 免费版: 可能提供有限的免费额度(如每月一定次数的 API 调用),适合个人开发者或小规模项目。 付费版: 超出免费额度后,可能需要按…

git fetch和git pull 的区别

git pull 实际上就是 fetch merge 的缩写, git pull 唯一关注的是提交最终合并到哪里(也就是为 git fetch 所提供的 destination 参数) git fetch 从远程仓库下载本地仓库中缺失的提交记录,并更新远程分支指针 git pull抓取更新再合并到本地分支,相当于…

信息科技伦理与道德3-2:智能决策

2.2 智能推荐 推荐算法介绍 推荐系统:猜你喜欢 https://blog.csdn.net/search_129_hr/article/details/120468187 推荐系统–矩阵分解 https://blog.csdn.net/search_129_hr/article/details/121598087 案例一:YouTube推荐算法向儿童推荐不适宜视频 …

[LVGL] 在VC_MFC中移植LVGL

前言: 0. 在MFC中开发LVGL的优点是可以用多个Window界面做辅助扩展【类似GUIguider】 1.本文基于VC2022-MFC单文档框架移植lvgl8 2. gitee上下载lvgl8.3 源码,并将其文件夹改名为lvgl lvgl: LVGL 是一个开源图形库,提供您创建具有易于使用…

[RabbitMQ] RabbitMQ常见面试题

🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…

《qt easy3d中添加孔洞填充》

《qt easy3d中添加孔洞填充》 效果展示一、创建流程二、核心代码效果展示 参考链接Easy3D开发——点云孔洞填充 一、创建流程 创建动作,并转到槽函数,并将动作放置菜单栏,可以参考前文 其中,槽函数on_actionHoleFill_triggered实现如下:

Git(分布式版本控制系统)系统学习笔记【并利用腾讯云的CODING和Windows上的Git工具来实操】

Git的概要介绍 1️⃣ Git 是什么? Git 是一个 分布式版本控制系统(DVCS),用于跟踪代码的变更、协作开发和管理项目历史。 由 Linus Torvalds(Linux 之父)在 2005 年开发,主要用于 代码管理。…

基于SpringBoot的校园社交平台

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

R语言LCMM多维度潜在类别模型流行病学研究:LCA、MM方法分析纵向数据

全文代码数据:https://tecdat.cn/?p39710 在数据分析领域,当我们面对一组数据时,通常会有已知的分组情况,比如不同的治疗组、性别组或种族组等(点击文末“阅读原文”获取完整代码数据)。 然而,…

mysql 主从配置

MySQL 主从复制是指在 MySQL 数据库系统中,主服务器(Master)将数据更新操作(如 INSERT、UPDATE、DELETE)复制到从服务器(Slave)。主从复制实现了数据的同步复制,使得从服务器可以保持…

DeepSeek为何能爆火

摘要:近年来,DeepSeek作为一款新兴的社交媒体应用,迅速在年轻人群体中走红,引发了广泛关注。本文旨在探讨DeepSeek为何能在短时间内爆火,从而为我国社交媒体的发展提供参考。首先,通过文献分析,…

黑马React保姆级(PPT+笔记)

一、react基础 1.进程 2、优势 封装成一个库,组件化开发更加方便 跨平台主要是react native等可以来写移动端如android,ios等 丰富生态:可以在很多浏览器用 3、市场 4、搭建脚手架 npx create-react-app react-basic npm start后仍然可能…

STM32 CUBE Can调试

STM32 CUBE Can调试 1、CAN配置2、时钟配置3、手动添加4、回调函数5、启动函数和发送函数6、使用方法(采用消息队列来做缓存)7、数据不多在发送函数中获取空邮箱发送,否则循环等待空邮箱 1、CAN配置 2、时钟配置 3、手动添加 需要注意的是STM32CUBE配置的代码需要再…

DeepSeek从入门到精通:全面掌握AI大模型的核心能力

文章目录 一、DeepSeek是什么?性能对齐OpenAI-o1正式版 二、Deepseek可以做什么?能力图谱文本生成自然语言理解与分析编程与代码相关常规绘图 三、如何使用DeepSeek?四、DeepSeek从入门到精通推理模型推理大模型非推理大模型 快思慢想&#x…

【vscode+latex】实现overleaf本地高效编译

overleaf本地高效编译 1. 配置本地latex环境2. vscode插件与配置3. 使用 之前觉得用overleaf在线写论文很方便,特别是有辅助生成latex格式公式的网页,不需要在word上一个一个手打调格式。 然而,最近在写一篇论文的时候,由于这篇论…