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,了解了一些基本的计算机网络概念和协议通信格式,但是一直没弄明白其中的原理,包括各层之间的关系,应用,还有一些常见的令牌环网到底是什 ...
随机推荐
- 地图上显示X,Y 坐标代码
事件数据 所有的鼠标事件都使用MouseButtonEventArgs和MouseEventArgs作为事件数据,通过这两个参数可以获取相关事件数据,使用GetPosition方法或者Source.H ...
- I.MX6 su.c 测试
/************************************************************************* * I.MX6 su.c 测试 * 说明: * 今 ...
- CodeForces-213E:Two Permutations(神奇的线段树+hash)
Rubik is very keen on number permutations. A permutation a with length n is a sequence, consisting o ...
- Java总结基础知识
权限关键字: public:可以被所有其他类所访问,不同的包 protected:当前类的成员.同一个包中.不同包中对子类可见父类protected,继承类 default:同一包中的类可以访问,声明 ...
- 循环冗余检验 (CRC) 算法原理
Cyclic Redundancy Check循环冗余检验,是基于数据计算一组效验码,用于核对数据传输过程中是否被更改或传输错误. 算法原理 假设数据传输过程中需要发送15位的二进制信息g=10100 ...
- Hibernate关联映射(多对一 --- many-to-one)
转自:https://blog.csdn.net/fengxuezhiye/article/details/7369786?utm_source=blogxgwz9 Hibernate的关联映射关系有 ...
- Linux后门入侵检测工具,附bash漏洞解决方法
一.rootkit简介 rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现 ...
- Swift4 函数, 元组, 运算符
创建: 2018/02/19 完成: 2018/02/19 更新: 2018/02/25 修改标题 [Swift4 函数] -> [Swift4 函数, 元组, 运算符] 更新 :2018/03 ...
- J20170524-hm
取りこぼし 意外地输给较自己实力弱的对手,爆出冷门,败给手下败将 振り分け 分配,整理 スキーマ 图解.模式.图式
- bzoj 2525: [Poi2011]Dynamite【二分+树上贪心】
一眼二分.然后重点是树上贪心部分 长得像dp一样,设mn为子树内已炸点的最浅点,mx为子树内没有炸并且需要炸的最深点,然后转移直接从子树继承即可 然后是判断当前u点是否需要炸,当mx[u]+mn[u] ...