网络协议分层:
这是TCP/IP下的分层:
数据传输:
tcp/ip协议和操作系统的关系:在操作系统的内部,有个模块就是TCP/IP协议
如果两个主机通信,那么他们肯定都有自己的网络协议栈
数据需要通过物理层去转发,但数据不能绕过操作系统(传输层、网络层)做到这点,所以必须贯穿整个协议栈到达物理层 (数据传输必须自顶向下或者自低向上)
我们还需要知道两个主机在交流时,同层协议都认为自己在对方直接通信,既然是在通信那么就需要制定自己的协议,所以每一层都有自己的协议
大家可以看到数据每经过一层都会多一个符号,这个符号也叫多出来的协议数据,也就是报头
每层拿到的数据是要去掉该层对应的报头的
对于左边不断添加报头的操作叫做 封装 右边不断向上减少报头的操作叫做 解包
数据包在添加报头的时候,也要考虑未来解包的时候应该将自己的有效载荷交付给上一层的哪个协议(同层会有多个协议),我们把这种时候叫做 有效载荷的 分用 的过程
最终有两个结论:
任何包头属性里面,一定会存在一些字段支持你进行封装和解包,比如告诉你有效载荷是哪一个部分
此外,还存在一些字段支持,我们进行分用,也就是告诉我们有效载荷应该递交给哪个协议
大家可以看到IP以下的和上面的是不一样的,IP以上的同层传输的数据是一样的,IP下的就不一样了:数据进入路由器后会解包递交到IP层看这个数据的IP地址,决定他下一步应该传输到哪台主机,决定好后再封装传到下一层最后传给目的主机