协议分层

可能大家对OSI七层模型并不陌生,它将网络协议很细致地从逻辑上分为了7层。但是实际运用中并不是按七层模型,一般大家都只使用5层模型。如下: 物理层:一般包括物理媒介,电信号,光信号等,主要对应于PHY芯片,PHY芯片将数据传送给物理媒介(RJ45座->双绞线),如图:

  • 数据链路层:一般简单称为MAC层,因为MAC芯片处于这层,对应于代码中的网卡驱动层。数据包在这一层一般称之为“以太网帧”。
  • 网络层:对应于代码中IP层。
  • 传输层:对应于代码中TCP层。
  • 应用层:对应于代码中应用层数据,即SOCKET通信,recv()/send()的数据。

对于一个以太网数据包,我们在代码中能真实看到的包括4部分,分别对应链路层、网络层、传输层、应用层,如下图:

注:有几个概念需要解释一下,从网卡收到的数据,此时是一个完整的包含各层头的数据包,此时称之为“以太网帧”;当解开以太网帧头到达IP层,称之为“IP Packet(IP数据包)”;当解开IP头到达TCP层,称之为“TCP Segment(TCP分片)”;当解开TCP头时到达应用层,就是我们socket通信看到的数据了。

这种分层的设计作为一个协议设计与实现的向导,在这种方式下,每个协议可以分离地实现,互不干扰。然而严格的分层设计,各层间的通讯可能会导致总体的性能下降。为了克服这些问题,协议的某些内部细节可以被其他的协议共享,但是必须注意,只有重要的信息才能在各层间共享。

大部分的TCP/IP协议栈实现在应用层到底层之间都遵循严格的分层设计,然而底层或多或少可以有交叉。在大多数操作系统中,所有的底层协议都与操作系统的内核绑定在一起(成为OS内核的一部分),内核提供入口点(API)与应用层的进程通信。此时,应用程序可认为是TCP/IP协议栈的一个抽象,不用关心底层的细节,对于支持SOCKET的系统,直接使用SOCKET进行网络通信即可,这些操作基本和文件IO的操作差别不大。这意味着应用程序对底层一无所知,比如底层使用buffer缓冲数据,而应用层无法对buffer一无所知,如果有应用层有一部分数据频繁使用,而它是无法操作buffer将频繁使用的数据缓冲起来。

在最小系统中,一般不会严格地在内核和应用程序中间加一道保护屏障,如此应用程序可以使用共享内存(底层在内核中,与内核共享内存)的方式更轻松地与底层通信。具体来讲,应用层知道底层使用的缓冲处理机制,因此,应用层可以更高效的重用buffer。既然应用层可以和底层协议使用同一段内存,这样也可以节省拷贝带来的开销。

http://www.rt-thread.org/document/site/zh/1chapters/13-chapter_lwip/

TCP/IP 协议分层的更多相关文章

  1. TCP/IP协议分层详解

    TCP/IP 和 ISO/OSI ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO) ...

  2. TCP/IP协议分层

    TCP/IP协议从上而下,层层包装: (1)应用层:HTTP (2)传输层:TCP和UDP (3)网络层(网际互联层):IP (4)数据连接层(网络接入层):为IP模块发送和接收IP数据报. (5)硬 ...

  3. 学习笔记之TCP/IP协议分层与OSI參考模型

    1.协议的分层      ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些 ...

  4. TCP/IP协议(二)tcp/ip基础知识

    今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...

  5. 【转载】TCP /IP协议详解

    首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...

  6. TCP/IP协议<二>

    一.TCP/IP的标准化 1.TCP/IP的含义 一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称. 具体点,IP或ICMP.TCP或UDP.TELENT或FTP.以及HTTP等都属 ...

  7. TCP /IP协议详解【转】

    转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...

  8. Tcp/IP协议详讲

    TCP/IP协议分层详解 目录 TCP/IP 和 ISO/OSI TCP/IP分层模型 数据的封装与分用 其他相关概念 TCP/IP 通信传输流 负责传输的 IP 协议 正文 回到顶部 TCP/IP ...

  9. tcp/ip协议学习笔记一

    一. 简述 以前在学校学习计算机网络的时候学习多是网络7层模型OSI,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什 ...

随机推荐

  1. frameset使用总结

    frameset使用总结 2009-06-15 00:59 213人阅读 评论(0) 收藏 举报 框架bordermicrosoftinternethtml文档 FRAMESET 元素是 FRAME  ...

  2. gfnormal 域名 是阿里云的高防IP

    最近DGA检出了一堆阿里高防的域名,例如:u3mbyv2siyaw2tnm.gfnormal09aq.com,然后专门查找了下相关文档. 例如 8264.com 这个网站启用了aliyun的高防DDo ...

  3. python的termcolor模块

    termcolor是一个python包,可以改变控制台输出的颜色,支持各种terminal(WINDOWS的cmd.exe除外). 它支持下列的文字颜色: grey, red, green, yell ...

  4. NEFU 628 Garden visiting (数论)

    Garden visiting Problem:628  Time Limit:1000ms  Memory Limit:65536K Description There is a very big ...

  5. C# a标签请求下载文件

    服务器文件后台处理方式: a标签: <a href="/FileUpload/DownloadFile?file=/UploadFiles/File/bfcd676b-13a8-419 ...

  6. JavaScript实现对象的深度克隆及typeof和instanceof【简洁】【分享】

    JavaScript实现对象的深度克隆 代码实现如下: <!DOCTYPE html> <html lang="en"> <head> < ...

  7. 洛谷 P4552 [Poetize6] IncDec Sequence【差分+脑洞】

    一看区间操作,很容易想到差分 所以就是先差分,然后为了保证最小步数,把政府差分抵消,也就相当于原数组区间加减 第二问,因为差分数组抵消之后不为0就需要使用n+1的虚拟位置,而这个的值其实没有,所以我们 ...

  8. react-native页面之间的相互传值

    react-native页面之间的相互传值 之前在自己学习react-native的时候,在页面跳转和传值问题上花了一段时间去网上搜索和查找资料,自己总结了两个方法.可以参考 https://blog ...

  9. SpringBoot项目docker化

    前言 有很多种方案构建Docker镜像,包括Dockerfile构建.maven插件构建,这里我使用了最简单的Dockerfile构建的. 一.安装Docker 我的虚拟机系统是CentOS7,需要是 ...

  10. 【BZOJ3309】DZY Loves Math(线性筛)

    题目: BZOJ 3309 分析: 首先,经过一番非常套路的莫比乌斯反演(实在懒得写了),我们得到: \[\sum_{T=1}^n \sum_{d|T}f(d)\mu(\frac{T}{d})\lfl ...