因特网协议分层及它们的服务模型

news/2024/7/16 9:21:25

  为了给网络协议的设计提供一个结构,网络设计者以分层(layer)的方式组织协议以及实现这些协议的网络硬件和软件。协议分层具有概念化和结构化的有点。但是,分层的一个潜在缺点是某层可能重复其较低层的功能。例如:许多协议栈都基于链路和端到端这两种情况提供了差错恢复。第二种潜在的缺点是某层的功能可能需要仅在其它层才出现的信息(如时间戳),这违反了层次分离的目标。

  将这些综合起来,各层的所有协议被称为协议栈。因特网的协议栈由5个层次组成:物理层、链路层、网络层、运输层、应用层。

  

  1.应用层

  应用层是网络应用程序及其应用层协议存留的地方。因特网的应用层包括许多协议,例如HTTP、SMTP、FTP、DNS等。应用层协议分布在多个端系统上,一个端系统中的应用程序使用协议与另一个端系统中的应用程序交换信息分组。我们将这种位于应用层的信息分组成为报文。

  2.运输层

  运输层提供了在应用程序(进程)端点之间传送应用层报文的服务。在因特网中,有两个运输层协议,即TCP和UDP。TCP向它的应用程序提供了面向连接的服务,提供可靠性和流量控制。TCP也将长报文划分为短报文,并提供拥塞控制机制。UDP协议向它的应用程序提供了无连接服务,不提供可靠性,没有流量控制和拥塞控制。我们称运输层分组为报文段。

  3.网络层

  网络层负责将数据报(网络层分组)从一台主机移动到另一台主机。源主机中的运输层协议向网络层递交运输层报文段和目的地址。网络层包括著名的IP协议,该协议定义了数据报中的各个字段以及端系统和路由器如何作用于这些字段。仅有一个IP协议,所以具有网络层的因特网组件都必须运行IP协议。因特网的网络层也包括决定路由的选路协议,数据报根据该路从源传输到目的地。尽管网络层包括了IP协议和一些选路协议,但它经常只被称为IP层。

  4.链路层

  因特网的网络层通过一系列路由器在源和目的地之间发送分组。为了将分组从一个节点(主机或路由器)移动到路径上的下一个节点,网络层必须依靠链路层的服务。特别是在每一个节点,网络层将数据报下传给链路层,链路层沿着路径将数据报传递给下一个节点。在该下个节点,链路层将数据报上传给网络层。链路层提供的服务取决于应用于该链路的特定链路层协议。链路层分组称为帧(frame)。

  5.物理层

  链路层的任务是将整个帧从一个网络元素移动到临近的网络元素,而物理层的任务是将该帧中的一个一个bit从一个节点移动到下一个节点,其协议与实际传输媒体相关。


http://www.niftyadmin.cn/n/2460033.html

相关文章

MyBatis: 配置文件各个顶级元素必须有序

he content of element type “configuration” must match “(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?, objectWrapperFactory?,reflectorFactory?,plugins?,environments?, databaseIdProvider?,mappers?)”.

小马哥四轴代码解读-I2C-mpu6050篇

小马哥四轴代码解读-I2C-mup6050篇 I2C通信 I2C通信可以一主多从也可以多主多重(这个还不是很了解),一主多从,首先你得知道从机的地址,然后主机带着从机的地址在总线上广播,who is 这个地址,这…

网页细分图结果分析(Web Page Diagnostics)

LR实战之Discuz开源论坛——网页细分图结果分析(Web Page Diagnostics) 续LR实战之Discuz开源论坛项目,之前一直是创建虚拟用户脚本(Virtual User Generator)和场景(Controller),现在…

linux下C语言my_memcopy和my_strcpy实现

/* 实现内存复制的函数 */ void* my_memcpy(void* dest, const void* src, int len) {if(dest NULL || src NULL || len < 0){return NULL;}void *ret dest;char* p_dest (char*)dest;char* p_src (char*)src;/* 判断内存地址是否重合&#xff0c;如果内存重合就从高位…

MyBatis:配置文件传多个参数

取消类型属性(parameterType)定义&#xff0c;在语句里直接用序号#{0} #{1}等 select * from fleet f where fleetname #{0} and primary_fleetid!#{1}

log4j与commons-logging,slf4j的关系(转)

前面有一篇日志中简单的介绍了 log4j&#xff0c;同时也介绍了它与commons-logging的关系&#xff0c;但是突然冒出来一个slf4j&#xff0c;并且slf4j有取代commons-logging的趋势&#xff0c;所以&#xff0c;我们可以推知slf4j与commons-logging的作用应该 相差不大的。 好&a…

使用malloc函数出现段错误-一级指针-二级指针

使用malloc函数出现段错误 typedef struct {int top;int tail;int* stk; }Queue;typedef struct {Queue* In;Queue* Out; } MyStack;void EnterQueue(Queue* obj,int x) {obj->stk[obj->top];obj->tail; } int ExitQueue(Queue* obj) {int resual obj->stk[obj-&…

stm32F103c8 keil移植FreeRTOS时内存不够

stm32F103c8 &#xff08;flash 64k、ram 20k&#xff09;keil移植FreeRTOS时内存不够 linking... .\Objects\Template.axf: Error: L6406E: No space in execution regions with .ANY selector matching led.o(.data). .\Objects\Template.axf: Error: L6406E: No space in e…