网络协议课程笔记上

一、 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.mzph.cn/bicheng/70709.shtml

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

相关文章

Linux云计算SRE-第六周

1. 总结openssh服务安全加固和总结openssh免密认证原理,及免认证实现过程。 1、 openssh服务安全加固 OpenSSH(Open Secure Shell)服务安全加固是确保远程登录会话和其他网络服务安全性的关键步骤。以下是一些常见的OpenSSH服务安全加固措施…

SQL最佳实践(笔记)

写在前面: 之前baeldung的Java Weekly Reviews里面推荐了一篇关于SQL优化的文章,正好最近在学习数据库相关知识,记一些学习笔记 原文地址:SQL Best Practices Every Java Engineer Must Know 1. 使用索引 使用索引…

2025清华:DeepSeek从入门到精通.pdf(附下载)

本文是一份关于如何深入理解和使用DeepSeek技术的全面指南,由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的余梦珑博士后及其团队编撰。DeepSeek是一家中国科技公司,专注于通用人工智能(AGI)的研发,其开源推…

Excel 笔记

实际问题记录 VBA脚本实现特殊的行转列 已知:位于同一Excel工作簿文件中的两个工作表:Sheet1、Sheet2。 问题:现要将Sheet2中的每一行,按Sheet1中的样子进行转置: Sheet2中每一行的黄色单元格,为列头。…

Unity Shader Feature

Shader Feature 设置Keyword //0:Red 1:Green 2:Blue Mat.SetInt(“_Color”,0); 需要在创建时进行设置,运行时不可设置 Shader "Unlit/KeywordEnum" {Properties{[KeywordEnum(Red,Green,Blue)] _Color("Color",int) 0}SubShader{Pass{HLSL…

react使用if判断

1、第一种 function Dade(req:any){console.log(req)if(req.data.id 1){return <span>66666</span>}return <span style{{color:"red"}}>8888</span>}2、使用 {win.map((req,index) > ( <> <Dade data{req}/>{req.id 1 ?…

Java从入门到精通 第三版 读书笔记

第一章 初识Java Java同时是编译型(编译器将Java源代码静态编译为Java字节码)和解释型(JVM将Java字节码动态解释为本地机器码)语言。Java程序的运行需要解释器(如JVM)。因Java字节码本具有平台无关性,那么若要在一个新目标平台上运行一个Java程序,则仅需解释器做好目标…

iOS主要知识点梳理回顾-3-运行时消息机制

运行时&#xff08;runtime&#xff09; 运行时是OC的重要特性&#xff0c;也是OC动态性的根本支撑。动态&#xff0c;如果利用好了&#xff0c;扩展性就很强。当然了&#xff0c;OC的动态性只能算是一个一般水平。与swift、java这种强类型校验的语言相比&#xff0c;OC动态性很…

【零基础学习CAPL】——Panel之弹窗的创建与使用

🙋‍♂️【零基础学习CAPL】系列💁‍♂️点击跳转 ——————————————————————————————————–—— 从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 文章目录 1.概述2. panel制作2.1 panel窗体…

C# OpenCV机器视觉:对位贴合

在热闹非凡的手机维修街上&#xff0c;阿强开了一家小小的手机贴膜店。每天看着顾客们自己贴膜贴得歪歪扭扭&#xff0c;不是膜的边缘贴不整齐&#xff0c;就是里面充满了气泡&#xff0c;阿强心里就想&#xff1a;“要是我能有个自动贴膜的神器&#xff0c;那该多好啊&#xf…

JavaScript 中的防抖和节流,它们的区别是什么,以及如何实现?

在前端开发中&#xff0c;防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;是两种常用的优化高频率事件处理的技术。 它们能够有效减少事件处理函数的执行次数&#xff0c;从而提升页面性能和用户体验。 下面将详细解释这两种技术的概念、区别、…

推荐一个免费的、开源的大数据工程学习教程

在当今信息爆炸的时代&#xff0c;每一个企业都会产生大量的数据&#xff0c;而大数据也已经成为很多企业发展的重要驱动力&#xff0c;然而如何有效得处理和分析这些海量的数据&#xff0c;却是一个非常有挑战的技术。 今天推荐一个免费的数据工程教程&#xff0c;带你系统化…

2月10日QT

作业> 将文本编辑器功能完善 include "widget.h" #include "ui_widget.h" #include <QMessageBox> //消息对话框类 #include <QFontDialog> //字体类对话框 #include <QFont> //字体类 #include <QColorDialog> //颜…

ECG分析0210

指标计算方法 1. HR (心率&#xff0c;Heart Rate)&#xff1a; 心率是每分钟心跳的次数。它通常通过计算RR间期&#xff08;即两次R波之间的时间间隔&#xff09;来获得。 计算方法&#xff1a; 首先&#xff0c;检测到R波的位置&#xff08;例如通过find_peaks函数检测&a…

【Java】多线程和高并发编程(四):阻塞队列(上)基础概念、ArrayBlockingQueue

文章目录 四、阻塞队列1、基础概念1.1 生产者消费者概念1.2 JUC阻塞队列的存取方法 2、ArrayBlockingQueue2.1 ArrayBlockingQueue的基本使用2.2 生产者方法实现原理2.2.1 ArrayBlockingQueue的常见属性2.2.2 add方法实现2.2.3 offer方法实现2.2.4 offer(time,unit)方法2.2.5 p…

【Java】多线程和高并发编程(三):锁(下)深入ReentrantReadWriteLock

文章目录 4、深入ReentrantReadWriteLock4.1 为什么要出现读写锁4.2 读写锁的实现原理4.3 写锁分析4.3.1 写锁加锁流程概述4.3.2 写锁加锁源码分析4.3.3 写锁释放锁流程概述&释放锁源码 4.4 读锁分析4.4.1 读锁加锁流程概述4.4.1.1 基础读锁流程4.4.1.2 读锁重入流程4.4.1.…

【R语言】相关系数

一、cor()函数 cor()函数是R语言中用于计算相关系数的函数&#xff0c;相关系数用于衡量两个变量之间的线性关系强度和方向。 常见的相关系数有皮尔逊相关系数&#xff08;Pearson correlation coefficient&#xff09;、斯皮尔曼秩相关系数&#xff08;Spearmans rank corre…

Web - CSS3过渡与动画

过渡 基本使用 transition过渡属性是css3浓墨重彩的特性&#xff0c;过渡可以为一个元素在不同样式之间变化自动添加补间动画。 过渡从kIE10开始兼容&#xff0c;移动端兼容良好&#xff0c;网页上的动画特效基本都是由JavaScript定时器实现的&#xff0c;现在逐步改为css3过…

Unity 高度可扩展的技能与多 Buff 框架详解

一、框架设计 1.1 核心思想 组件化设计: 将技能和 Buff 抽象为可复用的组件&#xff0c;通过组合不同的组件实现复杂的效果。 数据驱动: 使用 ScriptableObject 或 JSON 等数据格式定义技能和 Buff 的属性&#xff0c;方便配置和修改。 事件驱动: 利用 Unity 的事件系统或自…

编译和链接【一】

文章目录 编译和链接【一】从翻译单元到二进制文件 编译和链接【一】 在我大一的时候&#xff0c; 我使用VC6.0对C语言程序进行编译链接和运行 &#xff0c; 然后我接触了VS&#xff0c; VS code等众多IDE&#xff0c; 这些IDE界面友好&#xff0c; 使用方便&#xff0c; 例如…