通信协议的TCP/IP模型

昨天因为有事情,就没更新

因特网模型协议栈( The Internet protocol stack), 也有地方叫 TCP/IP协议套件(TCP/IP protocol suite),该协议栈目前能找到的最早记录在由五层组成:物理层(Physical Layer)、 链路层(Link Layer)、网络层(Internet Layer)、传输层(Transport Layer)、应用层(Application Layer)。全网查了一下,RFC中关于TCP/IP模型的文中没看到明确的物理层定义,目前能找到的最早提出该分层的出处源自《《计算机网络:自顶向下方法》。

物理层

网络的物理形式,例如电缆、光纤、网卡、集线器等等。

物理层处理的数据是比特(bit)、符号(symbol)。将数字信号转换成电信号、无线电信号或光信号。

链路层的任务是将整个帧从一个网络元素移动到另一个网络元素,而物理层的工作是将该帧中的各个比特(the individual bits)从一个节点移到下一个节点。

该层中的协议依旧依赖链路层,并进一步依赖于链路的实际传输介质(例如:双绞铜线、单模光纤),例如以太网 (Ethernet) 有很多物理层协议:用于双绞铜线的、用于同轴电缆的、 用于光纤的,等等。在每种情况下,在链路上移动一个比特都是以不同的方式进行的。

链路层

链路层,也称为数据链路层,该层处理的数据包(有的教科书也会中译为分组,这里统称数据包)被称为帧(frame)。

链路层负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标记网络上的设备,所以有时候也叫 MAC 层。

Internet 的网络层通过源和目标之间的一系列路由器 路由 数据报。为了将数据包从一个节点(主机或者路由器)移动到路由中的下一个节点,网络层依赖于链路层的服务:

在每个节点,网络层将数据报向下传递到链路层,链路层将数据报沿路由传送到下一个节点。
在这个下一个节点,链路层将数据报向上传递到网络层。

链路层提供的服务取决于该链路上采用的特定链路协议。链路层协议的示例包括以太网(Ethernet)、WiFi 和有线接入网络的 DOCSIS 协议。

一些链路层协议提供从发送节点通过一条链路到接收节点的可靠传输。
这种可靠传送服务不同于 TCP 的可靠传送服务,后者提供从一个端系统到另一个端系统的可靠传送。

由于数据报通常需要遍历多条链路才能从源传输到目的地,因此数据报可能会在沿其路由的不同链路上由不同的链路层协议处理。例如,数据报可能在一条链路上由以太网处理,而在下一条链路上由 PPP 处理。

之后网络层将从每个不同的链路层协议接收不同的服务。

VLAN是该层的一个网络协议,通过在以太网协议头部添加tag实现了广播域的隔离。

网络层
IP 协议就处在这一层。因为 IP 协议定义了“IP 地址”的概念,所以就可以在“链接层”的基础上,用 IP 地址取代 MAC 地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只要把 IP 地址再“翻译”成 MAC 地址就可以了。

网络层负责处理的该层数据包称为数据报(datagram),该层负责将数据报(datagram)从一台主机移动到另一台主机。

源主机中的 Internet 传输层协议(TCP 或 UDP)将传输层的报文段和目标地址传递到网络层。然后,网络层提供将报文段传送到目标主机中的传输层的服务。

该网络层包含著名的IP协议,它定义了数据报中的字段以及终端系统和路由器如何处理这些字段。

IP协议只有一种,所有具有网络层的 Internet 组件都必须实现该协议。

Internet 的网络层还包含路由协议,用于确定源与目的地之间采用的路由, 该层存在多种路由协议。

Internet 是一个由网络组成的网络,在一个网络中,网络管理员可以运行任何所需的路由协议。网络层虽然包含IP协议和众多的路由协议,但通常简称为IP层,反映了IP是将互联网连接在一起的黏合剂。

关于 IP协议
IP 是一种无连接或数据报互联网络服务,不提供端到端交付保证。因此,IP 数据报可能会损坏、重复、无序或根本没有到达目标主机。

IP 之上的层负责在需要时提供可靠的交付服务。
IP 协议包括对寻址、服务类型规范、分段和重组以及安全信息的规定。
IP 协议的数据报或无连接特性是 Internet 体系结构的基本特征。
Internet IP 是 OSI 无连接网络协议 的模型。

ICMP 是一种控制协议,被认为是 IP 的一个组成部分,尽管它在架构上分层在 IP 之上,即它使用 IP 来端到端地传输其数据,就像 TCP 或 UDP 等传输协议一样。

ICMP 提供错误报告、拥塞报告和第一跳网关重定向。
IGMP 是一种 Internet 层协议,用于为 IP 多播建立动态主机组。

传输层
传输层在应用程序端点之间传送应用层报文,为应用程序提供端到端的通信服务,该层的数据包称为报文段(segment)。

该层次协议的职责是保证数据在 IP 地址标记的两点之间“可靠”地传输,目前有两种主要的传输层协议:传输控制协议 (TCP) 和 用户数据报协议 (UDP) ,两者都能传输应用层的报文段。

TCP:向应用程序提供了一种可靠的面向连接的传输服务,可提供端到端的可靠性、重新排序和流量控制。是一个有状态的协议,需要先与对方建立连接然后才能发送数据,而且保证数据不丢失不重复。

TCP 将长报文划分为短报文,并提供阻塞控制机制,以便在网络拥塞时,源端点限制其传输速率。

UDP :为其应用程序提供无连接服务。它无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方,没有可靠性、没有流量控制。
两者另一个重要区别:TCP 的数据是连续的“字节流”,有先后顺序,而 UDP 则是分散的小数据包,是顺序发,乱序收
TCP的开销高于UDP,性能低于UPD,但使用TCP可以保证数据的正确性、顺序性和不可重复性,对应业务应用的通信,TCP是更合适的选择。

应用层
应用层是网络应用及它们的应用层协议存留的地方。该层本质上结合了OSI参考模型的表示层和应用层的功能。由于 IP 协议栈没有定义应用层和传输层之间的层,因此应用层必须包括任何与 OSI 的表示层和会话层协议类似的协议。这通常是通过库来完成的。

应用层协议分布在多个端系统上,而一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息数据包。这种应用层的信息数据包称为报文(message)。

该层区分了两类应用层协议:直接向用户提供服务用户协议和提供通用系统功能的支持协议。

下面是一些常见的用户协议,除了这些还有许多其他标准化的用户协议和许多私有用户协议,这里暂不列举了:

Telnet(远程登录)
FTP(文件传输,用于支持两个端系统之间的文件传送)
SMTP(电子邮件传递,用于支持电子邮件报文的传输)
HTTP (超文本传输协议,用于支持了Web文档的请求和传送)

HTTP 利用 TCP/IP 协议栈逐层打包再拆包,实现了数据传输。
应用层与传输层中间有一个Socket抽象层(即如UNIX域套接字),该层是应用层与TCP/IP协议族通信的中间软件抽象层,是它的一组接口。应用层信息通过Socket从用户态传到内核态的传输层。

用于主机名映射、引导和管理的支持协议包括 SNMP、BOOTP、RARP 和域名系统 (DNS) 协议。

DNS :域名系统(特定的应用层协议),用于将baidu.com这些容易记忆的域名转换为32比特的网络地址。

封装
在每一层,一个数据包具有两种类型的字段:头字段(header fields)和有效载荷字段(payload field),有效载荷通常来自上一层的数据包,头字段来自当前层。

比如最简单的情境下:

在发送主机端,一个应用层报文(application-layer message)被传输到传输层,传输层收取到报文并附上附加信息(即,传输层的头字段),该头字段将被接收端的传输层使用。应用层的报文和传输层的头字段一起构成了传输层报文段(transport-layer segment)。传输层报文段因此封装了应用层报文,其附加的信息也许包含下列信息:

允许接收方传输层将消息向上传递给适当的应用程序的信息
允许接收方确定消息中的位(bits)是否已在路由中更改的错误检测位(error-detection bits)

网络层添加如源和目标端系统地址等网络层头信息,生成了网络层数据报(network-layer datagram)。
链路层增加自己的头信息并生成链路层帧(link-layer frame)。
其实应用层报文(application-layer message)本身也是将相应信息和应用层的头信息一起封装后得到的。

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

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

相关文章

《合成孔径雷达成像算法与实现》Figure5.19

clc clear close all距离向参数 R_eta_c 20e3; % 景中心斜距 Tr 25e-6; % 发射脉冲时宽 Kr 0.25e12; % 距离向调频率 Fr 7.5e6; % 距离向采样率 Nrg 256; % 距离线采样点数 Bw abs(Kr*Tr); …

仰暮计划|“她就是用她的一双小脚把我们兄弟姐妹几个拉扯大的”

在残存的一些老物件中,在一些泛黄的相片中,掩藏着岁月的冲刷和青葱的时光。曾经无忧无虑的少女早已白发苍苍,不复青春貌美;曾经在父母面前笑闹的孩子早已变成他人眼中的长辈。 ——题记 她的身影也许并不高大,甚至还略…

Linux编辑器vim(含vim的配置)

文章目录 前言vim的基本概念vim基本操作进入vim模式切换退出vim vim指令vim命令模式指令vim底行模式命令 简单vim配置 前言 本篇文章,小编将介绍Linux编辑器–>vim以及vim的配置。 vim的基本概念 正常/普通/命令模式(Normal mode) 控制屏幕光标的移动&#xf…

Gin 框架之jwt 介绍与基本使用

文章目录 一.JWT 介绍二.JWT认证与session认证的区别2.1 基于session认证流程图2.2 基于jwt认证流程图 三. JWT 的构成3.1 header : 头部3.2 payload : 负载3.2.1 标准中注册的声明 (建议但不强制使用)3.2.2 公共的声明3.2.3 私有的声明3.2.4 定义一个payload 3.3 signatrue : …

【计算机网络】概述|分层体系结构|OSI参考模型|TCP/IP参考模型|网络协议、层次、接口

目录 一、思维导图 二、计算机网络概述 1.计算机网络定义、组成、功能 2.计算机网络分类 3.计算机网络发展历史 (1)计算机网络发展历史1:ARPANET->互联网 (2)计算机网络发展历史2:三级结构因特网 …

jenkins对接K8S

创建连接K8S的凭据 查看需要使用到的命名空间 [rootk8s ~]# kubectl get ns |grep arts-system arts-system Active 16d创建service accounts [rootk8s ~]# kubectl create sa jenkins-k8s -n arts-system serviceaccount/jenkins-k8s created [rootk8s ~]# kubectl…

一键批量处理,轻松为HTML文本添加所需内容

你是否曾经遇到过需要批量处理大量HTML文本的情况?是否曾经因为一个个编辑而感到繁琐和无趣?现在,这些问题都可以得到轻松解决!我们的文本批量处理工具,为你提供一站式的服务,让你告别重复繁琐的操作&#…

java eazyexcel 实现excel的动态多级联动下拉列表(2)使用MATCH+OFFSET函数

原理 同样是将数据源放到一个新建的隐藏的sheet中,第一行是第一个列表的数据,第二行是每一个有下级菜单的菜单,他下面的行就是他下级菜单的每一值使用MATCH函数从第二行找到上级菜单对应的列根据OFFSET函数从2中获取的列,取得下级…

深度学习之处理多维特征的输入

我们首先来看一个糖尿病的数据集: 在数据集中,我们称每一行叫做sample,表示一个样本,称每一列是feature,也就是特征在数据库里面这就是一个关系表,每一行叫做记录,每一列叫做字段。 每一个样本都…

2024年第一篇博客

这是2024年的第一篇博客,2023年笔者经历了一连串的生活、工作、学习上的转折和调整,跌跌撞撞时光飞逝,转眼间就踏着元旦的钟声步入了2024年,前思后想、辗转反侧、犹豫再三不知道从哪里开始博客新的篇章,这个问题坦诚说…

ARL灯塔vps云服务器安装

前提是vps服务器已经安装好docker 1、下载压缩包到本地 2、解除不能扫描edu等域名的限制 解压docker_arl.zip,打开docker_arl/config-docker.yaml文件 删除掉edu.cn等限制域名(图中已删除) 3、上传至vps云服务器 将docker_arl文件上传到云服务器opt目录下 这里我…

使用Pinctrl 和 Gpio 子系统 配置引脚

1. 关于Pinctrl 和 GPIO 子系统 1.1 Pinctrl 子系统 Pinctrl 子系统 主要负责处理SOC(System on chip )的引脚控制,现代MCU中很多引脚 都是多功能的,可以配置成不同的角色(GPIO,I2C,SPI,UART,PWM等) Pinctrl 子系统就是用来管理…

【智能家居】6、语音控制及网络控制代码实现

一、语音控制 1、指令结构体编写 这个结构体定义了一个命令输入的模型。在这个模型中,包含以下几个部分: cmdName:一个长度为128的字符串,用于存储命令名称。dvicesName:一个长度为128的字符串,用于存储设备名称。cmd:一个长度为32的字符串,用于存储具体的命令。Init:…

言传身留:NLP技术引领机器翻译革新

NLP技术引领机器翻译革新 一. 引言1.1 背景介绍1.2 目的和重要性1.2.1 NLP技术在机器翻译中的关键作用1.2.2 如何改善搜索引擎、语音助手等领域的应用 二. NLP技术在机器翻译中的应用2.1 文本理解2.1.1 情感分析2.1.2 上下文理解 2.2 语言生成2.2.1 自动生成翻译2.2.2 提高翻译…

qt初入门6:QChar和QString相关接口练习

简单了解编码: ​ latin1(ISO 8859-1)字符集是对ASCII基本字符集的扩展,都是1字节编码。 Unicode编码有多重存储方案,utf-8使用1~4字节编码,最少1字节;utf-16使用2-4字节编码,最少2字…

数据湖技术之发展现状篇

一. 大数据处理架构: 大数据处理架构的发展过程具体可以分为三个主要阶段:批处理架构、混合处理架构(Lambda、Kappa架构)、湖仓一体。首先是随着Hadoop生态相关技术的大量应用,批处理架构应运而生,借助离线…

Python在无人飞天航母

Python在无人飞天航母研发开发中发挥着重要的作用。无人飞天航母是一种未来战争装备,可以完成各种任务,包括反潜、侦查、打击、支援等。Python作为一种高级编程语言,具有以下重要性: 快速原型开发:Python具有简洁的语法…

中国新能源汽车持续跑出发展“加速度”,比亚迪迎来向上突破

2023年已经过去,对于汽车圈而言,2023年是中国车市的分水岭,在这一年,中国汽车工业70年以来首次进入全球序列,自主品牌强势霸榜,销量首次超过合资车。要知道,这是自大众于1984年进入中国市场成立…

sql server 2008 安装问题

1、sql server 2008 安装程序支持文件后安装界面就消失: 打开cmd以管理员身份运行 复制或者手动输入以下命令:secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose运行完成后,重新安装 卸载需删除注册表这几个…

【面试】测试开发面试题

帝王之气,定是你和万里江山,我都护得周全 文章目录 前言1. 网络原理get与post的区别TCP/IP各层是如何传输数据的IP头部包含哪些内容TCP头部为什么有浮动网络层协议1. 路由协议2. 路由信息3. OSPF与RIP的区别Cookie与Session,Token的区别http与…