协议层
物理层
包括有线(网线)和无线(wifi)
电平的高低表示bit1和bit0
ethernet link up/down,指物理层是否通路,通路则ethernet status是link up,开路则link down
master和slave也是物理层的划分
数据链路层
网络消息在网络层经过不同局域网转发处理后,到达目的主机所在的局域网时,根据目的IP地址获取目标MAC地址后,数据包交由数据链路层处理,链路层根据目的MAC地址,通过交换机转发到对应的端口,发给端口另一侧的主机
MAC地址,就是网卡的物理地址
数据链路层实现同一网络内主机的通信,方式:根据MAC地址交由交换机转发
交换机,数据链路层的设备,只能处理数据链路层首部的信息,只转发不处理
网络层
如果源主机和目的主机处于不同网络中,网络消息从源主机发出后,必须在网络层,根据目的IP地址,经由不同的路由器做转发处理,实现跨网络传输
IP地址,网络层主机地址,由网络地址+主机地址组成
网络层实现不同网络间的数据传输,方式:根据目的IP地址交由路由器转发和处理
路由器,网络层设备,可以处理网络层首部的信息,可以转发可以处理,也有交换机的功能
传输层
数据在主机内需要交给对应的子进程接收处理,根据目的端口号通知对应的子进程接收
端口号,传输层概念,与子进程PID绑定
传输层实现不同进程(应用)的数据处理,方式:根据目的端口绑定的PID(进程ID),通知对应的进程接收处理
应用层
会话层,表示层,应用层,可以统称为应用层
它们都是在应用中的协议,而数据链路层,网络层和传输层是在系统中的协议
各协议层功能
各协议层所处位置
封装与解封装
封装
- 应用层
应用程序(app)把应用层协议内容以应用层首部的形式封装成数据data,从应用层送给传输层
- 传输层
收到应用层的数据data,把data作为传输层的payload(有效数据),把传输层协议内容(tcp/udp,scrPort,dstPort(和目标程序的子进程绑定)等)以传输层首部transHeader的形式,添加到传输层的payload前面,封装成transHeader+data,送给网络层
- 网络层
收到传输层数据transportHeader+data,把transportHeader+data作为网络层的payload,把网络层协议内容(ipv4/ipv6,scrIP,dstIP,protocol(表明上层传输层的类型tcp/udp)等)以网络层首部ipHeader的形式,添加到网络层的payload前面,封装成ipHeader+transHeader+data,送给数据链路层
- 数据链路层
收到网络层数据ipHeader+transHeader+data,把ipHeader+transHeader+data作为数据链路层的payload,把链路层协议内容(scrMac,dstMac,type(表明上层网络层的类型arp/ipv4/ipv6)等)以链路层首部macHeader的形式,添加到链路层的payload前面,封装成macHeader+ipHeader+transHeader+data,通过网卡发到物理层上
解封装
- 数据链路层
网卡从物理层上接收数据macHeader+ipHeader+transHeader+data,在链路层解封装链路层首部macHeader,找到dstMac,和自己的mac地址判断是否相同,不同则丢弃,相同说明是发给自己的包,根据type通知网络层的正确的子程序(arp/ipv4/ipv6)来取链路层的payload,即ipHeader+transHeader+data
- 网络层
网络层子程序取到数据后,解封装网络层首部ipHeader,匹配dstIP和自己的IP地址,不同则丢弃,一致则根据protocol通知传输层的正确的子程序(tcp/udp)来取网络层的payload,即transHeader+data
- 传输层
传输层子程序取到数据后,解封装传输层首部transHeader,首先会计算校验和checksum,错误则丢弃,正确则根据dstPort通知绑定的子进程来取传输层的payload,即data
- 应用层
子进程取到数据后,交给对应的目标应用程序处理
报文结构
数据在各协议层的叫法
更多内容,请关注汽车网络诊断通信