OSI七层模型和TCP/IP五层模型对照
数据链路层
网络层
1、物理层:我不管你是光纤、双绞线、同轴电缆、串口、并口,到我这,统一转换成0,1送给数据链路层。我让要让我的服务用户(数据链路层),感知不到物理设备和传输介质的存在,我给你发0,1,你给我回0,1就行了,线路上的事情交给我来办。即:物理层向其服务用户(数据链路层)透明的传输比特流。 物理层要干的活:指明RS-232的接口是DB9,DB9接头形状、尺寸(机械特性),9个引脚的排序,每个脚的作用、电压范围 (电气特性)、指明哪个脚上出现什么电平代表什么含义(功能特性)。其它介质类似。
2、数据链路层:收到物理层传过来的比特流了,我得把这些比特流打包成一组,如果传过来的某一bit出错了,我还得把错误纠正过来。其中一种打包的方式叫以太网协议,规定一组0,1表示一帧,每一帧包含帧头和数据,帧头包含发送者和接收者的信息。交换机就工作在这一层,能够实现局域网内数据帧的转发(根据帧头中的发送者和接收者信息(网卡的mac地址))。发送者在局域网内广播,接收者比对帧头接收者是不是自己,是自己就收,即完成了数据包发送。
3、网络层:用mac地址只能在局域网中通信(如果向全世界的网卡都进行广播,网络得瘫痪),所以引入了网络地址,即:同一个子网下的mac采用广播方式通信,不同子网下的mac通过路由方式发送到目标子网,到达目标子网后,通过ARP协议可以得到IP对应的mac,然后将数据送到mac对应的主机(ARP属于数据链路层的协议)。通过IP地址可以实现主机到主机的通信。
4、传输层:通过下面三层已经实现了主机到主机之间的通信,但是主机上有不止一个的应用程序(web、qq、微信、邮箱等等),那么数据到达主机后,该给哪个应用程序呢?这就引来了端口的概念。端口就是每一个使用网卡的应用程序的编号,应用程序选择一个端口,用来和别的主机的一个端口进行通信。这就是传输层的功能,实现了端到端的通信,即应用程序到应用程序的通信。unix系统把IP+port叫做套接字,有了套接字就可以开发网络应用程序了。
5、 应用层:根据IP和port到达应用程序的数据五花八门,所以必须事先规定好协议才能正常交流。应用层就是规定应用程序通信的数据的格式。如HTTP、FTP、SMTP等等,分别规定使用什么样的数据格式进行通信。
参考: https://www.cnblogs.com/qishui/p/5428938.html http://www.elecfans.com/news/wangluo/20180314647431.html http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html