协议层

物理层


包括有线(网线)和无线(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),通知对应的进程接收处理


应用层


会话层,表示层,应用层,可以统称为应用层



它们都是在应用中的协议,而数据链路层,网络层和传输层是在系统中的协议



各协议层功能

TCP/IP协议_传输层


各协议层所处位置

TCP/IP协议_封装_02


封装与解封装

封装

  • 应用层


应用程序(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


  • 应用层


子进程取到数据后,交给对应的目标应用程序处理



报文结构

TCP/IP协议_数据链路层_03


数据在各协议层的叫法

TCP/IP协议_封装_04