学习笔记——网络参考模型——TCP/IP模型

2024-06-01 06:52

本文主要是介绍学习笔记——网络参考模型——TCP/IP模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

二、TCP/IP模型

TCP/IP模型(TCP/IP协议栈):很多个互联网协议的集合,其中以TCP和IP为主,将这些协议的集合称为TCP/IP协议栈目前使用最多的协议模型

因为OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。

名称

说明

4

应用层

对应OSI的:应用层、表示层、会话层

3

传输层

数据段Segment(TCP报头),对应OSI的:传输层

2

网络层

数据包Packet(IP报头),对应OSI的:网络层

1

网络接口层

比特Bit->帧Frame,对应OSI的:数据链路层、物理层

TCP/IP模型在结构上与OSI模型类似,采用分层架构,同时层与层之间联系紧密。

TCP/IP标准参考模型将OSI中的数据链路层和物理层合并为网络接入层,这种划分方式其实是有悖于现实协议制定情况的,故融合了TCP/IP标准模型和OSI模型的TCP/IP对等模型被提出,后面的讲解也都将基于这种模型。

注意:前四层主要为了传输和识别。“货物”放在高层。

应用数据+传输层 :数据段

应用数据+传输层+网络层:数据包

应用数据+传输层+网络层+数据链路层:数据帧

应用数据+传输层+网络层+数据链路层+物理层:数据流 比特流

1、TCP/IP常见协议

TCP/IP协议栈定义了一系列的标准协议。

应用层

应用层:应用层为应用软件提供接口,使应用程序能够使用网络服务。应用层协议会指定使用相应的传输层协议,以及传输层所使用的端口等。应用层的PDU被称为Data(数据)(下左图)

TCP/IP每一层都让数据得以通过网络进行传输,这些层之间使用PDU(Packet Data Unit,协议数据单元)彼此交换信息,确保网络设备之间能够通信。

不同层的PDU中包含有不同的信息,因此PDU在不同层被赋予了不同的名称。

HTTP和HTTPS(Hypertext Transfer Protocol,超文本传输协议)用来访问在网页服务器上的各种页面。是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。(上右图)

帮助客户端访问万维网(World Wide Web)

网页浏览器通过翻译HTML文件来表现文本、图像、音乐、动画及视频等对象

HTTP没有加密验证机制,明文传输,安全性不足;

HTTPS使用SSL、CA证书等技术进行安全防护,越来越多的Web网站强制使用。

SMTP/POP3/IMAP

传输层

传输层是实现 "端到端"的服务[应用到应用]。

传输层:传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立"端到端"(Port to Port)的连接。传输层的PDU被称为Segment(段) (下左图)

网络层

网络层:传输层负责建立主机之间进程与进程之间的连接,而网络层则负责数据从一台主机到另外一台主机之间(点到点)的传递。网络层的PDU被称为Packet(包)(上右图)

IP(Internet Protocol,互联网协议)∶将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。

IPv4(Internet Protocol Version 4)简称IP,是目前应用最广泛的网络层协议。

IGMP(Internet Group Management Protocol,因特网组管理协议)∶负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。

ICMP(Internet Control Message Protocol,网际报文控制协议)∶基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。

(1)网络层协议工作过程

当采用IP作为网络层协议时,通信的双方都会被分配到一个"独一无二"的IP地址来标识自己。IP地址可被写成32位的二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间用点分隔,比如192.168.1.1。

(2)IP数据包的封装与转发

网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。

中间经过的网络设备(如路由器),会维护一张指导IP报文转发的"地图"一—路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。

IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。

IP协议工作时,需要如OSPF、IS-IS、BGP等各种路由协议帮助路由器建立路由表,ICMP帮忙进行网络的控制和状态诊断。

数据链路层

(1)数据链路层基础

数据链路层:数据链路层位于网络层和物理层之间,可以向网络层的IP、IPy6等协议提供服务。数据链路层的PDU被称为Frame(帧)

以太网(Ethernet)是最常见的数据链路层协议。

LLC

Logical Link Control,逻辑链路控制

负责识别网络层的协议类型,接收上层数据包封装成帧后,向下层传递。

MAC

Media Access Control,介质访问控制负责控制与连接物理层的物理介质

处理硬件设备的物理寻址、定义网络拓扑及数据帧的传递顺序

(2)数据链路层协议

Ethernet(以太网协议):一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网组网技术。

PPP(Point-to-Point Protocol,点对点协议)∶一种点对点模式的数据链路层协议,多用于广域网。

PPPoE (Point-to-Point Protocol over Ethernet,以太网承载PPP协议)∶PPPoE提供通过简单桥接访问设备(接入设备)把一个网络的多个主机连接到远程访问集中器的功能。常见的应用有家庭宽带拨号上网。

物理层

物理层:数据到达物理层之后,物理层会根据物理介质的不同,将数字信号转换成光信号、电信号或者是电磁波信号。物理层的PDU装称为比特流(Bitstream)

2、数据封装转发过程

案例∶主机A通过浏览器访问服务器A的Web服务器

数据包在相同网段内或不同网段之间转发所依据的原理基本一致。

传输层封装

当主机建立了到达目的地的TCP连接后,便开始对应用数据进行封装。

网络层封装

路由查找

主机A必须要拥有到达目的地的路由

ARP

通过ARP缓存表找到下一跳的MAC地址。如果表项里没有下一跳的MAC地址,主机A会发送ARP请求。

数据链路层封装

数据发送,网关接收数据帧

查找路由,重新封装

网关检查是否具有到达目的网络的路由条目。如果存在转发路径,则为数据包添加一个新的二层帧头和帧尾,并继续转发。

数据发送至服务器

RTB以服务器A的MAC地址作为目的MAC继续转发。服务器A接收到该数据帧后,发现目的MAC为自己的MAC,于是会断续处理该数据帧。

服务器解封装

服务器A检查数据包的目的IP地址,发现目的IP与自己的IP地址相同。

服务器A剥掉数据包的IP头部后会送往上层协议TCP继续进行处理。

服务器A检查TCP头部的目的端口,然后将数据段发送给应用层的HTTP协议进行处理。

阶段总结


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun    暗号:CSDN】

这篇关于学习笔记——网络参考模型——TCP/IP模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020286

相关文章

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

Linux之UDP和TCP报头管理方式

《Linux之UDP和TCP报头管理方式》文章系统讲解了传输层协议UDP与TCP的核心区别:UDP无连接、不可靠,适合实时传输(如视频),通过端口号标识应用;TCP有连接、可靠,通过确认应答、序号、窗... 目录一、关于端口号1.1 端口号的理解1.2 端口号范围的划分1.3 认识知名端口号1.4 一个进程

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过