TCP/IP 协议分层
协议分层
可能大家对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 协议分层的更多相关文章
- TCP/IP协议分层详解
TCP/IP 和 ISO/OSI ISO/OSI模型,即开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO) ...
- TCP/IP协议分层
TCP/IP协议从上而下,层层包装: (1)应用层:HTTP (2)传输层:TCP和UDP (3)网络层(网际互联层):IP (4)数据连接层(网络接入层):为IP模块发送和接收IP数据报. (5)硬 ...
- 学习笔记之TCP/IP协议分层与OSI參考模型
1.协议的分层 ISO在制定标准化OSI之前,对网络体系结构相关的问题进行了充分的讨论, 终于提出了作为通信协议设计指标的OSI參考模型.这一模型将通信协议中必要 的功能分成了7层.通过这些 ...
- TCP/IP协议(二)tcp/ip基础知识
今天凌晨时候看书,突然想到一个问题:怎样做到持续学习?然后得出这样一个结论:放弃不必要的社交,控制欲望,克服懒惰... 然后又有了新的问题:学习效率时高时低,状态不好怎么解决?这也是我最近在思考的问题 ...
- 【转载】TCP /IP协议详解
首先,TCP/IP不是一个协议,而是一个协议族的统称. 里面包括了IP协议,IMCP协议,TCP协议,以及http.ftp.pop3协议等等. TCP/IP协议分层 提到协议分层,我们很容易联想到IS ...
- TCP/IP协议<二>
一.TCP/IP的标准化 1.TCP/IP的含义 一般来说,TCP/IP是利用IP进行通信时所必须用到的协议群的统称. 具体点,IP或ICMP.TCP或UDP.TELENT或FTP.以及HTTP等都属 ...
- TCP /IP协议详解【转】
转自:https://www.jianshu.com/p/0cf648510bce?utm_campaign=maleskine&utm_content=note&utm_medium ...
- Tcp/IP协议详讲
TCP/IP协议分层详解 目录 TCP/IP 和 ISO/OSI TCP/IP分层模型 数据的封装与分用 其他相关概念 TCP/IP 通信传输流 负责传输的 IP 协议 正文 回到顶部 TCP/IP ...
- tcp/ip协议学习笔记一
一. 简述 以前在学校学习计算机网络的时候学习多是网络7层模型OSI,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什 ...
随机推荐
- 并不对劲的DFT
FFT是一个很多人选择背诵全文的算法. #include<algorithm> #include<cmath> #include<complex> #include ...
- gevent 协程 使用
Python通过yield提供了对协程的基本支持,但是不完全.而第三方的gevent为Python提供了比较完善的协程支持. gevent是第三方库,通过greenlet实现协程,其基本思想是: 当一 ...
- Strip
B. Strip time limit per test 1 second memory limit per test 256 megabytes input standard input outpu ...
- 8 个很有用的 jQuery 技巧(转)
http://www.oschina.net/question/12_145472 一个基于web的标签设计,打印工具,超diao http://www.oschina.net/question/17 ...
- Android系统中setprop,getprop,watchprops命令的使用(转载)
转自:http://blog.csdn.net/yao_guet/article/details/6531241 在android系统中,有一些初始化的配置文件,例如: /init.rc /defau ...
- Ruby module里的self
创建: 2018/03/15 更新: 2018/03/22 把标题ruby首字母大写 都知道def self.方法名 来定义类方法 class SampleClass def self.class_m ...
- bzoj 2756 [SCOI2012]奇怪的游戏【二分+最大流】
达成成就:为二分调参 !:多次memset的话要把数组大小开严格一点,否则会T 看到网格图,首先黑白染色. 注意到每次操作都是在一个黑格子和一个白格子上进行的,也就是说,最后黑格子数字和白格子数字和的 ...
- 深入学习Ajax
1.什么是Ajax? AJAX的全称是Asynchronous Javascript And XML (异步的JavaScript和XML).是一种在无需重新加载整个网页的情况下,能够更新部分网页的技 ...
- [USACO4.1]麦香牛块Beef McNuggets By cellur925
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是“劣质的包装”.“看,”奶牛们说,“如 ...
- 团队作业-项目Alpha版本发布
一. 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2 这个作业要求在哪里 https://edu.cn ...