Wireshark网络分析就这么简单——网络分层

Wireshark网络分析就这么简单——网络分层

本文引用部分为从原书中摘抄或者整理改写的部分

在正式阅读之前——网络分层

OSI七层模型(括号表示合并入TCP/IP协议)

自下往上依次是(物理层、数据链路层、)网络层、传输层、(会话层、表示层、应用层)

TCP/IP

自下往上依次是链路层、网络层、传输层、应用层

从Wireshark看TCP/IP

各层结构

以NFS为例

应用层:专注于文件操作,比如读写,完全不关注数据传输。里面主要有用户的UID、文件的file handle和要写的字节数等。
传输层:用到了TCP协议,应用层产生的数据由TCP来控制传输的。虽然叫做传输层,但是它真正做的并非传输到另外一个设备,而是传输控制,真正负责传输的是下面两层。
网络层:主要的任务是把TCP传下来的数据加上目标地址和源地址。(IP)
数据链路层:主要通过MAC地址来发送网络包

分层示意图

分层是为了各层做自己擅长的事情,其实程序比如MVC分层也是这个道理。有效的分层可以加快工作效率,太多的分层意味着时间需要增加,太少的分层对问题的排查又是个问题。这点就是TCP/IP协议与OSI七层模型对比胜出的原因。

MTU——最大传输单元

以TCP协议为例,在传输层到网络互联层的时候,并非简单的加上TCP头就把所有的消息丢给了网络互联层,因为网络对包的大小有限制,这个限制就是MTU。

在建立连接时(TCP就是三次握手),双方会把自己的MSS告诉对方(MSS+TCP头和IP头=MTU)。并且接收方的MTU起了决定性作用,但是发送的大小是由自己的MTU来决定的。 举个例子,客户端生命自己MSS为8960,服务器声明自己的MSS为1460,客户端发出的包的最大大小为1500(1460+20+20)。如果把他们两个的MSS做一个交换,因为发送大小不能超过自己的MTU,所以最大发送大小也为1500。