网络7层模型理解 分段、分片、MTU、MSS

应用层:telnet,ftp,http,snmp 第七层:
表示层: 第六层:
会话层: 第五层:
传输层:tcp,udp 第四层:
网络层:ip 第三层:
数据链路层:sdlc,hdlc,ppp,stp,帧中继 第二层:
物理层: 第一层:

举个例子:
ftp://opdb1:opdb1@192.168.1.1:21/home/dsfftp/dsf/20091110/0000010000000039023007/2009111003251_wap_l.jpg

1、应用层使用ftp协议,传递各种参数,包括用户名,密码,ip地址,端口,文件路径等封装成ftp对象
ftpinfo 往下传递

2、表示层:对ftpinfo对象进行加密,ftp没有加密特性,直接往下传递,如果是登陆操作,会在此处进行密码加密操作。数据的压缩和解压缩, 加密和解密等工作都由表示层负责。

3、会话层:建立到192.168.1.1的通信连接

4、传输层:使用tcp协议,本机随机端口,准备连接192.168.1.1地址21端口,并对ftpinfo进行分包处理。此外,传输层还要处理端到端的差错控制和流量控制问题,分包整包。在这一层,数据的单位称为数据段(segment)。

5、网络层:对192.168.1.1这个地址进行路由选择,进行分发数据包到192.168.1.1。此外,网络层还可以实现拥塞控制、网际互连等功能。在这一层,数据的单位称为数据包(packet)。

6、数据链路层: 将数据包分解成帧,保证物理传输可靠。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。这一层中将bit流封装成frame帧。

7、物理层:不解释了,传递帧数据,返回成功或者失败.

补充:
1、
OSI的观点是必须把数据链路层做成是可靠传输的。因此在CRC检测基础上,增加了帧编号、确认和重传机制。收到正确的帧就要向发送端发送确认。发送端在一定的期限内若没有收到对方的确认,就认为出现了差错,因而就进行重传,直到收到对方的确认为止。
这种方法在历史上曾经起到很好的作用。但现在的通信线路的质量已经大大提高了,由通信链路质量不好引起差错的概率已经大大降低。
因特网广泛使用的数据链路层协议都不适用确认和重传机制,即不要求数据链路层向上层提供可靠传输的服务(因为这要付出的代价太高,不合算)。如果在数据链路层传输数据时除了差错并且需要进行改正,那么改正差错的任务就由上层协议(如,运输层TCP协议)来完成。实验证明,这样可以提高通信效率。
2、
据链路层对上层IP包的长度是有限制的, 以典型的以太网为例, 这个限制值即为MTU(最大值是1500字节), 为此, IP层对上层网络层的数据也有限制, 这个限制值是MSS(最大值为1460字节)
我们设想一下, 如果应用层需要用UDP发送2000字节的数据, 那么加上IP头和UDP头后, 就是2028个字节了, 超过了MTU的限制, 那怎么办呢? 此时, 协议栈在IP层采用了分片的机制, 把大的应用数据拆分成若干个小的数据, 也样就有了若干个IP包, 而且会保证每个IP包不超过1500字节。用图来表示就是:
这里写图片描述
可以看到, 分成了两个IP包来发送, 且第二个IP包没有UDP数据, 没有端口信息! 这一点十分值得注意。 如果过滤端口来抓包, 肯定抓不到这个IP包。 第一个包也会有点怪异, 其中UDP头中标明的包长度包含而第二个包的应用数据长度。

我们再看看TCP, 上面说了, MSS的最大值是1460(不同系统的MSS值可能不一样, 这个值是在三次握手过程的syn包中确定的, 当然, 实际中的业务数据仍然可以小于syn包中约定的 MSS值)

回头看一下, 上面UDP例子中的IP分片实在IP层完成的, 而TCP分段是在TCP层完成的, 如图
这里写图片描述
可以看到, TCP层提前完成了分段, 而且, 两个TCP包中都有TCP头, 这是必然的。 所以到了IP层后, 都保留了TCP头, 当然就有了端口信息啊。 这一点与IP层次的分片是不同的。
而且我们应该看到, 因为TCP包在TCP层已经做了限制, 这就决定了, 等TCP包达到IP层的时候, IP层的数据绝对不会超过MTU, 因此, 对于TCP传输来说, IP层是没有必要分片的, 因为TCP层分段的时候, 已经考虑到了这个限制。
所以, 我们经常会说, UDP传输中, IP分片, 是受到了MTU的限制, TCP传输中, TCP分段, 是受到了MSS的限制(实际上最终还是受到了MTU的限制)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值