打印

TC/IP协议层

[复制链接]
1480|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dianz|  楼主 | 2016-5-14 11:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TCP/IP 协议族以分层的方式设计,每一层分别解决通讯问题的一部分。设计实现协议族——层可以提供指引,因为每一种协议可以被独立的实现。然而严格的按照分层的方式实现协议族,会因为协议层之间的通讯造成总体性能下降。要解决这个问题,协议的某些内部方面对其它协议来说应该可知,不过要注意的是,只有重要的信息在各层之间共享。
沙发
dianz|  楼主 | 2016-5-14 11:21 | 只看该作者
大部分的 TCP/IP 实现在应用层和底层协议层之间进行了严格的划分,而底层协议之间却可以进行或多或少的交叉存取。在大部分的操作系统中, 底层协议族作为拥有应用层进程通讯入口的操作系统内核的一部分被实现。应用程序是 TCP/IP 实现的抽象表示,网络通讯与进程间通讯和文件 I/O 没多少差别。这意味着,因为应用层不知道底层协议使用的缓冲机制,那它就不能利用这些信息去做一些事情,比如,重新使用常用数据缓冲区。同样,当应用层发送数据,在被网络代码处理之前,这些数据必须由应用层进程内存空间复制到内部缓冲区

使用特权

评论回复
板凳
dianz|  楼主 | 2016-5-14 11:24 | 只看该作者
像 LwIP 的目标系统这样的最小限度系统所使用的操作系统,通常不能在内核与应用层进程之间维持一个严格的保护屏障。这就允许使用一种比较松散的通讯机制, 通过共享内存的方式实现应用层与底层协议族之间的通讯。特别的,应用层能够了解底层协议使用的缓冲处理机制将使应用层可以更加有效的重复使用缓冲区。同样,既然应用层与网络代码可以使用相同的内存区,那么应用层就可以直接读写内部缓冲区,从而避免了内存复制产生的性能损失

使用特权

评论回复
地板
ah9b87| | 2016-5-14 11:26 | 只看该作者
TCP/IP 协议栈的进程模型指的是采用何种方法把系统分成不同的进程。首先要说的一种进程模型是 TCP/IP 协议族的每一个协议作为一个独立的进程存在。这种模型,必须符合协议的每一层,同时必须指定协议之间的通讯点。虽然,这种实现方法有它的优势,比如每一种协议可以随时参与到系统运行中,代码比较容易理解,调试方便,但是它的缺点也很明显。像前文描述过的,这种进程模型并不是最好的 TCP/IP 协议实现方法。同样更重要的是,数据跨层传递时将不得不产生进程切换( context switch)。对于接收一个 TCP 段来说,将会引起三次进程切换,从网络设备驱动层进程到 IP 进程,从 IP 进程到 TCP 进程,最终到应用层进程。对于大部分操作系统来说,进程切换得代价可是相当昂贵的。

使用特权

评论回复
5
ah9b87| | 2016-5-14 11:26 | 只看该作者
另外一种比较普遍的方法是协议栈驻留在操作系统内核中,应用进程通过系统调用( system calls)与协议栈通讯。各层协议不必被严格的区分,但可以使用交叉协议分层技术。LwIP 则采取将所有协议驻留在同一个进程的方式,以便独立于操作系统内核之外。应用程序既可以驻留在 LwIP 的进程中,也可以使用一个单独的进程。应用程序与 TCP/IP 协议栈通讯可以采用两种方法: 一种是函数调用,这适用于应用程序与 LwIP 使用同一个进程的情况;另一种是使用更抽象的 API。

使用特权

评论回复
6
ah9b87| | 2016-5-14 11:34 | 只看该作者
LwIP 在用户空间而不是操作系统内核实现,既有优点也有缺点。把 LwIP 作为一个进程的主要优点是可以轻易的移植到不同的操作系统中。由于 LwIP 被设计运行在小系统里,通常它既不支持进程换出( swapping out processes,这里译者将其翻译为进程换出,指得是操作系统将不具备运行条件的进程从内存换出到外存,以腾出内存空间,译者注)也不支持虚拟内存。因此就不会产生因 LwIP 进程的一部分被交换或分页到磁盘上( paged out to disk,即用到了虚拟内存,译者注),进程因等待磁盘激活而造成延时的问题。不过在获取一个偶然发生的服务请求之前因任务调度产生的等待延时依然是一个问题,不过在 LwIP 的设计中,这并没有妨碍它以后在操作系统内核实现。

使用特权

评论回复
7
dianz|  楼主 | 2016-5-14 11:36 | 只看该作者
TCP 用到的定时器功能由操作系统模拟层提供。这个定时器是一个时间间隔至少为200ms 的单脉冲定时器( one-shot timer,单脉冲定时器,指的是当时钟启动时,它把存储寄存器的值复制到计数器中,然后晶体的每一个脉冲使计数器减 1。减至 0 时,产生一个中断,并停止工作,直至软件重新启动它,译者注),当时间溢出发生时就会调用一个已注册的函数

使用特权

评论回复
8
baimiaocun2015| | 2016-5-15 12:16 | 只看该作者
应用程序是 TCP/IP 实现的抽象表示,网络通讯与进程间通讯和文件 I/O 没多少差别,但是这个需要在实际的操作时严格区分的。

使用特权

评论回复
9
飞翔的控制器| | 2016-5-15 13:15 | 只看该作者
TCP/IP 协议对单片机来说有点大

使用特权

评论回复
10
asian21| | 2016-5-18 20:53 | 只看该作者
待学习的东西,期待

使用特权

评论回复
11
vivilzb1985| | 2016-5-20 21:23 | 只看该作者
要搞清楚TCP/IP 协议的还是需要一些基本的知识做基础的。

使用特权

评论回复
12
上山砍老虎| | 2016-5-21 15:38 | 只看该作者
TCP的协议应用确实不错

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

369

帖子

0

粉丝