TCPIP协议基础

网络模型

-OSI参考模型
-OSI参考模型各层功能
-TCP/IP网络模型
-TCP/IP协议栈

OSI参考模型

– 为了解决网络设备之间的兼容性问题,国际标准化组织ISO1984年提出了OSI RM(开放系统互连参考模型)。

OSI参考模型一共有七层:

7应用层
6表示层
5会话层
4传输层
3网络层
2数据链路层
1物理层
对等通信

OSI参考模型采用对等通信,即:

  • 同层之间使用相同的协议
  • 下层为上层提供服务

在这里插入图片描述

封装与解封装

在这里插入图片描述

OSI参考模型各层功能


⚡第一层:物理层(Physical Layer)
🧠 作用:
  • 负责数据的物理传输,即比特流(0和1)的发送与接收。
  • 定义了物理媒介的电气、机械、功能和过程特性。
📌 功能:
  • 传输介质(如双绞线、光纤、无线等)。

  • 电压电平、信号速率、连接器类型。

  • 比特同步。

  • 设备如:网卡、集线器、光模块。


📦 第二层:数据链路层(Data Link Layer)
🧠 作用:
  • 在同一网络内,负责相邻节点之间的可靠通信
  • 使用**物理地址(MAC地址)**识别设备。
  • 检测和纠正数据在传输过程中出现的错误。
📌 功能:
  • 帧(Frame)的封装与解封装。

  • 媒体访问控制(如CSMA/CD)。

  • 错误检测(如CRC)、流量控制。

  • 协议如:Ethernet(以太网)、PPP、HDLC。


🌐 第三层:网络层(Network Layer)
🧠 作用:
  • 负责数据包从源端到目的端的路由选择与转发
  • 使用**逻辑地址(IP地址)**进行寻址和寻路。
  • 可以跨越多个网络(异构网络间通信)。
📌 功能:
  • IP协议:定义地址和路由(如IPv4、IPv6)。
  • 路由协议:在路由协议之间传递路由信息并计算路由,为可路由协议选择转发路径的协议,如RIP、OSPF、BGP。
  • 可路由协议:可以跨越三层设备进行路由转发的协议,如IP、IPX。
  • 不可路由协议:不可跨越三层设备,也不能进行路由转发的协议,如:NETBEUI
  • 分段与组装。
  • 拥塞控制与网络互连。

🧱 第四层:传输层(Transport Layer)
🧠 作用:
  • 实现端到端的数据传输。
  • 提供可靠的传输服务,包括数据的分段、重组、流量控制、错误校验、重传机制等。
📌 功能:
  • TCP(传输控制协议):可靠连接,有序传输(如网页访问)。
  • UDP(用户数据报协议):不可靠传输,无连接,适用于语音、视频等实时服务。
  • 端口地址识别,实现多个应用同时传输数据。

🧑‍🤝‍🧑 第五层:会话层(Session Layer)
🧠 作用:
  • 管理和控制应用程序之间的会话(Session),即通信的起始、维护和终止。
  • 支持全双工或半双工通信
📌 功能:
  • 会话建立、维护与终止。
  • 对话同步(设置“检查点”来断点续传)。
  • 授权与令牌控制。

🧠 第六层:表示层(Presentation Layer)
🧠 作用:
  • 负责数据的表示方式转换,使发送方与接收方的数据格式一致。
  • 可进行数据加密、解密、压缩、解压缩等操作。
📌 功能:
  • 转换字符编码(如ASCII转EBCDIC)。
  • 数据加密(如SSL/TLS)。
  • 数据压缩(如JPEG、MP3等格式)。

🔒 第七层:应用层(Application Layer)
🧠 作用:
  • 是用户和网络的直接交互界面
  • 提供应用程序之间通信的服务,如电子邮件、文件传输、远程登录等。
  • 并不等于“应用程序”,而是网络通信中与应用最贴近的一层。
📌 功能:
  • 提供访问网络服务的接口。

  • 定义应用进程通信协议(如HTTP、FTP、SMTP、Telnet)。

  • 处理诸如认证、加密等应用级事务。


    TCPIP网络模型

TCP/IP网络模型分为TCP/IP标准模型和TCP/IP五层模型,也是我们现在最常用的两个模型:

4应用层
3传输层
2网络层
1网络接口层

TCP/IP标准模型


5应用层
4传输层
3网络层
2数据链路层
1物理层

TCP/IP五层模型


TCP/IP协议栈

在这里插入图片描述

IP协议

  • IP协议特点

  • IP包头结构

  • MTU与IP分片


IP协议特点

  • IP是无连接的,在传输数据之前不需要建立连接。

  • IP提供的是尽力而为的服务,超过转发能力时直接丢弃。

  • IP数据包在网络中的传送是无序的,在转发过程中,不考虑到达接收端的顺序,每个数据包进行单独路由(即单独选择到达目地的路径)

  • IP分组传送是不可靠的,发送端只管发送数据,不关心接收端是否收到数据,IP的可靠性需要靠上层协议来解决。


IP包头结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 标识符:16位

    • 同一IP数据包的各个分片的标识符相同
  • 标志位(Flags):3位

    • 第一位:没有使用

    • 第二位:DF位,DF=1不允许对该包进行分片,DF=0允许分片

    • 第三位:MF位,MF=1表示后面还有分片,MF=0表示是最后一个分片,后面没有分片了。

  • 分段偏移量:13位

    本分片数据载荷在原IP包数据在和中的相对位置,单位为7字节。

    例如:一个4000字节的IP包在MTU=1500字节下的分片:

    4000字节IP包的内容长3980字节(减去20字节的包头长度),内容的第一个字节偏移量为0.

    第一个分片长1500字节,MF=1,分段偏移量0,包含原包内容1480字节;

    第二个分片长1500字节,MF=1,分段偏移量185,含原包内容1480字节;

    第三个分片长1040字节,MF=0,分段偏移量370,含原包内容1020字节


MTU与IP分片

IP分片说白了就是当一个IP包很大的时候,就是超过了MTU,那么接收方是无法直接接收这么大的数据包的,如果直接传输过来,接收方会直接把这个包丢掉,不会进行接收转发,那么该如何正确的去进行分片好让接收方能够正确的接收并且正确的进行重组呢,就像上面说到的标识符,从一个IP包分开的的数据包的标识符是一样的,这是一方面;另一方面就是通过上面的分段偏移量正确的去确认这个分片重组的顺序,因为IP传输是无序的,所以分段偏移量很重要,然后,为了能够传输更大的数据,这个分段偏移量通常会除以8,上面那个分段偏移量为185,乘以8后就是传输过来的数据1480字节,而第三个分段偏移量370,减去185后再乘以8其实就是传输过来的1020字节。还有一个需要注意点就是DF,当DF为1时,是不允许对该数据包进行分片的,如果这个不能分片的包被发出去了,处理数据包的接收方会直接扔掉,只有当DF为0时才能进行分片,还有就是接收方怎么知道分片是否接收完毕了,是通过MF确定的,当MF为1时,表示后面还有分片,当MF为0时,表示后面没有分片了,这个MF为0的分片就是最后一个分片。

  • MTU(最大传输单元)

    • 链路层MTU:链路层能传的最大的帧,包含链路层头部。

    • 网络层MTU:网络层能传的最大的包,包含网络层头部。

  • Cisco MTU命令含义

    • Cisco设备在数据包进入接口和从接口发出时都检查MTU。
    • MTU命令:最大二层净载荷长度,默认值为1500字节。
    • IP MTU命令:最大IP数据包长度。
    • MPLS MTU命令:最大MPLS数据报文长度。
    • 配置MTU命令,也配置IP MTU和MPLS MTU命令
      • IP MTU命令也影响IP报文转发;
      • MPLS MTU影响MPLS报文转发;
      • MTU命令不影响IP和MPLS报文转发,但影响其他报文转发。
    • 配置MTU命令,不配置IP MTU和其他 MTU命令
      • MTU命令影响所有报文转发。
  • 路由器IP分片

    • 数据包大于入接口MTU,Cisco设备将丢弃该包。
    • 数据包大于出接口MTU
      • 该包的DF=1时,丢弃该包;该包的DF=0时,将该包分片。
      • IP分片只在目标主机上重组,不会在转发的设备上面重组。

在这里插入图片描述

TCP与UDP

  • TCP协议概述
  • TCP包头结构
  • TCP工作机制
  • UDP协议概述
  • UDP包头结构

TCP协议概述

  • Transmission Control Protocol,TCP(传输控制协议)
    • TCP是面向连接的,数据传输需要经过建立连接、传输数据、断开连接三个阶段
      • 全双工通信,数据可在同一连接上同一时间内双向流动
    • TCP提供有序的数据传输,接收端按字节对数据进行确认
    • TCP数据传输是可靠的,包头中含有校验和可以对数据进行校验,并且具有超时重传机制重新传丢失的数据。
    • TCP提供高质量的传输服务,通过滑动窗口机制实现对流量的控制
    • TCP适用于可靠性要求高的应用

TCP包头结构

在这里插入图片描述

  • 字节号

    • TCP把要再一个连接上发送的数据都按字节编号。通信双方的编号是相互独立的,编号不一定要从0开始,TCP选择0-(2的32次方-1)之间随机选择一个数作为第一个字节的编号。
  • 序号

    • TCP把要在一个连接上发送的数据分成若干报文段,然后给每个报文段指派一个序号,序号就是该报文第一个字节的编号,作用和IP里面的分段偏移量大差不差
  • 确认号

    • 期望接收到的下一个字节的编号。
  • 序号案例

    • 假设一条TCP连接要传送一个5000字节的文件。第一个字节的编号是10001.如果该数据用5个报文段来发送,且每一个报文携带1000字节的数据,那么每个报文段的序号分别是什么?
      在这里插入图片描述
  • 编码位(TCP Flag)

    • FIN:结束标志;为1时,请求断开连接。

    • SYN:同步标志;为1时,请求建立连接。

    • RST:复位标志;为1时。请求重新建立TCP连接。

    • PSH:通知接收端立即将数据交给用户进程,不要停留在缓存中,等待更多的数据。

    • ACK:确认标志;确认号有效位,表明该数据包包含确认信息。

    • URG:紧急标志;紧急指针有效位,与16位紧急指针配合使用。


TCP工作机制

TCP连接建立–三次握手机制

  • 第一次A向B发起请求建立连接,SYN位置为1,SEQ为一个随机数x。
  • 第二次B向A回应确认连接,SYN不变还是置为1,此时ACK位置为1,表示确认连接,ack为下一个期望值,那就是x+1,SEQ还是一个随机数y。
  • 第三次A向B确认连接,此时请求已经完成,不需要有SYN位,ACK位为1,ack为y+1,为下个期望值,SEQ为x+1.

此时连接成功建立。

简单说明:

第一次握手(SYN)
➤ 客户端发送一个 SYN 报文,表示:
“我要连接你,请准备好接收数据。”

  • 带上初始序列号(如 Seq = x

第二次握手(SYN + ACK)
➤ 服务器收到后,回复 SYN + ACK 报文,表示:
“我知道了,也准备好接收你的数据。”

  • 确认号 Ack = x + 1,并带上自己的序列号 Seq = y

第三次握手(ACK)
➤ 客户端收到后,发送 ACK 报文,表示:
“我确认了,连接可以建立了。”

  • 确认号 Ack = y + 1


  • TCP连接建立–TCP MSS

    • TCP MSS是TCP的一个重要选项,TCP数据分段的最大长度,该参数再三次握手时发给对方。
      在这里插入图片描述

这个东西说白了就是A那边一次只能收1460字节的数据包,所以建立连接的时候会告知B,而B那边一次只能收1452字节的数据包,反过来告知A,便于建立连接之后,传输数据的时候不会乱套。

  • TCP连接建立——TCP MSS

    • 网络设备干预TCP MSS协商,可解决大TCP报文不通的问题。

      在这里插入图片描述

像在这里,中间设备的路由器就干预了连接,把MSS从1460改成了1200,因为路由器一次发不了1460字节这么大的包,所以会进行干预修改。


  • TCP数据传输

    • 传输确认机制

      在这里插入图片描述

A发送一个分片的包,B根据seq进行重组,重组完成后,会发送一个包(ack=4097)给A,告知A我已经接收完毕,并且没有出错。


  • TCP数据传输

    • 超时重传机制

      在这里插入图片描述

像这种情况,A在给B发送数据的时候,丢了一个包,B就会发送确认号给A,告知A seq=1025这个数据包我没有收到,A在收到B的确认之后,会把seq=1025这个包重新发送给B,这里要注意,A不会全部重发,而是只发丢失的那一个或那几个包。

  • TCP数据传输

    • 双向传输机制

      在这里插入图片描述

传输不是单向的,A发了包,那么B就要有回应。


  • TCP连接断开——四次断开机制

    在这里插入图片描述

原理和建立连接机制是差不多的,简单说明:

第一次挥手(FIN)
➤ 主动关闭方发送一个 FIN 报文,表示:
“我没有数据要发送了,但我还可以接收。”

第二次挥手(ACK)
➤ 被动关闭方回复一个 ACK 报文,表示:
“我知道了,你可以不再发数据了。”
(此时连接是半关闭状态)

第三次挥手(FIN)
➤ 被动关闭方处理完剩下的数据后,也发送 FIN 报文,表示:
“我也没有数据要发了。”

第四次挥手(ACK)
➤ 主动关闭方收到这个 FIN 后,回复 ACK 报文,表示:
“我知道你也结束了。”

  • TCP连接断开——四次断开与三次断开

    • 大多数TCP实现允许在连接终止时有两种选择:三次握手和具有半关闭选项的四次握手。

      在这里插入图片描述

说直白点就是当服务器那边没有数据要传给主机时,那就是采用的三次挥手。


  • TCP流量控制

    • 窗口机制:

      作用:用来控制TCP一次能够连续传输多少数据而不用等待确认

      窗口大小:表示“还能发送但尚未确认的字节数”。

      如:如果窗口大小为500字节,那么发送方可以连续发送500字节,不用等待对方确认后再继续发送。

    • 滑动窗口机制

在这里插入图片描述

TCP为每个方向的数据传送都使用两个窗口(发送窗口和接收窗口),一共4个窗口

TCP通过强制发送发送方和接收方不断调整窗口大小,来实现流量控制。

当出现拥塞时,窗口大小减半(把资源还给计算机,快速解决数据传输拥塞的问题);

当传输稳定时,窗口慢慢变大。

UDP协议概述

  • User Datagram Protocol,UDP(用户数据报协议)
    • UDP是无连接的,数据传输之前不需要建立连接
    • UDP是不可靠的,发送端只管发送数据,不管接收方是否收到数据,UDP传输数据的可靠性需要应用层来解决
    • UDP只有校验和机制,只能做简单的差错控制
    • UDP没有流量控制机制
    • UDP包头小,开销低,传输效率高
UDP包头结构
  • UDP包头结构

在这里插入图片描述

可以看到包头结构相比TCP包头非常简洁

  • UDP校验和的计算

    • 涉及了三个部分:伪IP头部、UDP头部数据

      为什么叫伪IP头部,因为只包含了一部分IP头,所以叫伪IP头部

上层协议标识

  • 上层协议标识
  • 常见以太网类型号
  • 常见IP协议号
  • 常见TCP端口号
  • 常见UDP端口号
上层协议标识

在这里插入图片描述

常见以太网类型号

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【Nginx】Nginx代理WebSocket

1.websocketWebSocket 是一种网络通信协议,它提供了在单个 TCP 连接上进行全双工(双向)通信的能力假设需求:把 ws://192.168.0.1:8088/ws-api/websocket/pushData代理到ws://192.168.0.156:8888/websocket/pushData;同…

Spring AI Alibaba Graph使用案例人类反馈

1、Spring AI Alibaba Graph 是社区核心实现之一,也是整个框架在设计理念上区别于 Spring AI 只做底层原子抽象的地方,Spring AI Alibaba 期望帮助开发者更容易的构建智能体应用。基于 Graph 开发者可以构建工作流、多智能体应用。Spring AI Alibaba Gra…

本地部署jenkins持续集成

一、准备环境(jdk版本跟Tomcat版本要匹配) java jdk 环境(版本是11.0.21) jenkins war包(版本是2.440.3) Tomcat (版本是 9.0.84) 二、安装步骤 1、安装jdk环境 1)先安装java环境,安装完成后配置环境变量,参考上…

基于Java+Maven+Testng+Selenium+Log4j+Allure+Jenkins搭建一个WebUI自动化框架(1)搭建框架基本雏形

本次框架使用Maven作为代码构建管理&#xff0c;引用了PO模式&#xff0c;将整体的代码分成了页面层、用例层、业务逻辑层。框架搭建流程&#xff1a;1、在pom.xml中引入依赖&#xff1a;<!-- https://mvnrepository.com/artifact/io.appium/java-client --> <depende…

从零构建MCP服务器:FastMCP实战指南

引言&#xff1a;MCP协议与FastMCP框架 Model Context Protocol&#xff08;MCP&#xff09;是连接AI模型与外部服务的标准化协议&#xff0c;允许LLM&#xff08;如Claude、Gemini&#xff09;调用工具、访问数据。然而&#xff0c;直接实现MCP协议需要处理JSON-RPC、会话管理…

基于FPGA的智能小车设计(包含代码)/ 全栈FPGA智能小车:Verilog实现蓝牙/语音/多传感器融合的移动平台

首先先声明一下&#xff0c;本项目已经历多轮测试&#xff0c;可以放心根据我的设计进行二次开发和直接套用&#xff01;&#xff01;&#xff01; 代码有详细的注释&#xff0c;方便同学进行学习&#xff01;&#xff01; 制作不易&#xff0c;记得三连哦&#xff0c;给我动…

Object.defineProperties 详解

Object.defineProperties 详解 Object.defineProperties 是 JavaScript 中用于在一个对象上定义或修改多个属性的方法。它是 Object.defineProperty 的复数版本&#xff0c;允许你一次性定义多个属性。 基本语法 Object.defineProperties(obj, props)obj&#xff1a;要在其上定…

MyBatis-Plus:深入探索与最佳实践

MyBatis-Plus作为MyBatis的增强版&#xff0c;已经在Java开发中得到了广泛应用。它不仅继承了MyBatis的所有功能&#xff0c;还提供了许多强大的扩展功能&#xff0c;帮助开发者提升开发效率和代码质量。本文将深入探讨MyBatis-Plus的高级特性及其在实际项目中的最佳实践。一、…

劳斯莱斯数字孪生技术:重构航空发动机运维的绿色革命

在航空工业迈向智能化的浪潮中&#xff0c;劳斯莱斯以数字孪生技术为核心&#xff0c;构建了发动机全生命周期管理的创新范式。这项技术不仅重新定义了航空发动机的维护策略&#xff0c;更通过数据驱动的决策体系&#xff0c;实现了运营效率与生态效益的双重突破。本文将从技术…

NPM组件 querypilot 等窃取主机敏感信息

【高危】NPM组件 querypilot 等窃取主机敏感信息 漏洞描述 当用户安装受影响版本的 querypilot 等NPM组件包时会窃取用户的主机名、用户名、工作目录、IP地址等信息并发送到攻击者可控的服务器地址。 MPS编号MPS-2kgq-v17b处置建议强烈建议修复发现时间2025-07-05投毒仓库np…

创业商业融资计划书PPT模版

创业商业融资计划书PPT模版&#xff1a;https://pan.quark.cn/s/25a043e4339e

解决GitHub仓库推送子文件夹后打不开的问题

从你描述的情况来看&#xff0c;IELTS_AI_Assessment 很可能被识别为了 Git 子模块&#xff08;submodule&#xff09;&#xff0c;而不是普通文件夹&#xff0c;这会导致在 GitHub 上无法直接打开查看内容。以下是具体原因和解决办法&#xff1a;为什么文件夹无法打开&#xf…

Web后端开发-请求响应

文章目录概述请求Postman简单参数原始方式SpringBootRequestParam注解小结实体参数数组集合参数日期参数Json参数路径参数总结响应响应-案例概述 请求 Postman 简单参数 原始方式 // 1. 简单参数 // 原始方式RequestMapping("/simpleParam")public String …

Javascript基础内容回顾—变量提升、事件循环和闭包等内容

以下是前端面试中 JavaScript 基础易错问题的详解&#xff0c;结合常见考点和易混淆概念进行解析&#xff1a; ⚠️ 一、变量作用域与提升 var vs let/const ◦ 变量提升&#xff1a;var 声明的变量会提升到作用域顶部&#xff08;值为 undefined&#xff09;&#xff0c;而 …

UNIX程序设计基本概念和术语

unix体系结构从严格意义上说&#xff0c;可将操作系统定义为一种软件&#xff0c;它控制计算机硬件资源&#xff0c;提供程序运行环境。我们通常将这种软件称为内核&#xff08;kernel&#xff09;&#xff0c;因为它相对较小&#xff0c;而且位于环境的核心。内核的接口被称为…

【WEB】Polar靶场 16-20题 详细笔记

目录 十六.签到题 十七.签到 十八.session文件包含 PHP 伪协议&#xff08;PHP Stream Wrappers&#xff09; base64加解密获取源代码 Session文件包含 namenameShell 是什么&#xff1f; 十九.Dont touch me 二十.robots robots.txt 十六.签到题 把didino改成didiy…

数据结构*搜索树

什么是搜索树 搜索树是一种树形数据结构&#xff0c;用于高效地存储和检索数据。其核心特点是每个节点包含一个键&#xff08;Key&#xff09;&#xff0c;并遵循特定的排序规则。常见的搜索树有二叉搜索树、自平衡二叉树、多叉搜索树等。AVL树、红黑树、Splay树都属于自平衡二…

语音交互新纪元:Hugging Face LeRobot如何让机器人真正“懂你”

机器人之言&#xff1a;早在2024年&#xff0c;Hugging Face正式进军真实世界机器人应用领域&#xff0c;推出了开源机器人项目LeRobot。LeRobot不仅仅是一个模型库&#xff0c;它是一个完整的机器人学习平台&#xff0c;融合了模仿学习、强化学习、数据可视化以及仿真环境。其…

搭建个人博客系列--MySql

前期提要&#xff1a;搭建个人博客系列--docker-CSDN博客 目前已经拥有了docker所以只需要将MySql安装在docker上即可。 一、在docker安装mysql docker pull mysql 二、查询docker内的mysql镜像 三、启动msql docker run -d -p 33060:3306 -v /home/mysql/conf:/mysql/conf.d…