![cover](https://img-blog.csdnimg.cn/6a3f4b6d4a874eeabd3099fdae658585.png)
OSI七层网络模型与TCP/IP四层模型
1. 应用层应用层位于传输层之上,主要提供两个主机上的应用程序之间信息交换的服务,它定义了信息交换的格式,也就是说决定了发送数据的格式以及如何解析处理收到的数据,那具体的数据传输工作会通过封装好的底层api交给下一层传输层来处理。常见应用层协议:HTTP,DNS,FTP,DHCP2. 传输层传输层位于网络层之上,负责控制进程托付的数据通过网络层发送给另一台主机的进程,它并不关心要传输的数据的内容和
一、OSI七层网络模型
OSI 七层模型 是国际标准化组织提出一个网络分层模型,其大体结构以及每一层提供的功能如下图所示:
但由于各方面原因,OSI 七层模型并没有被广泛应用,更多的是作为网络分层的一种基础理论模型。
二、TCP/IP 四层模型
TCP/IP 四层模型 是目前被广泛采用的一种模型,我们可以将 TCP / IP 模型看作是 OSI 七层模型的精简版本
1. 应用层
应用层位于传输层之上,主要提供两个主机上的应用程序之间信息交换的服务,它定义了信息交换的格式,也就是说决定了发送数据的格式以及如何解析处理收到的数据,那具体的数据传输工作会通过封装好的底层api交给下一层传输层来处理。
常见应用层协议:HTTP,FTP,DNS,DHCP
2. 传输层
传输层位于网络层之上,负责控制进程托付的数据通过网络层发送给另一台主机的进程,它并不关心要传输的数据的内容和格式,只负责控制如何发送和接收数据,要发送时将数据段加上传输层协议的头部然后交给下一层网络层去发送。
例如TCP协议,它是面向连接的传输层协议,由于它要在不可靠的网际通信中建立可靠的数据传输通道,协议规定数据传输前要先和目的主机的传输层进行三次握手建立连接以确保能够通信,然后才开始发送数据,还要根据情况控制发送数据的速度或者重传数据,以确保对方能够收到完整的数据,并且最后不需要连接的时候通过四次挥手关闭双方的连接。
而UDP协议是无连接协议,它只管把数据发送出去,把应用层托付的数据直接加个UDP头就交给IP层去传输了,而不保证对方有没有收到。
主要传输层协议:TCP,UDP
基于TCP的协议:HTTP,FTP,SSH,Telnet
基于UDP的协议:DNS,DHCP,HTTP3
3. 网络层
网络层负责规划如何将数据从一个网络中的主机传输到另一个网络中的主机,网络节点错综复杂,网络层就负责规划路径该怎么走,每台网络设备中都维护了一个路由表,通过查询路由表得知应该走哪个网络节点到哪个网络节点,最后能到达目的主机。
网络层最常使用的是 IP 协议(Internet Protocol),IP 协议会将传输层的报文作为数据部分,再加上 IP 报头组装成 IP 报文,如果 IP 报文大小超过 MTU(以太网中一般为 1500 字节)就会再次进行分片,得到一个即将发送到网络的 IP 报文。那么传输的过程中就根据IP进行路由寻址,寻找下一个要转发的节点,最终转发到目的主机。
如下图所示,在主机A上ping 1.1.1.5,在数据到达网络层后,通过与子网掩码与运算对比网段,发现和主机A不在一个网段不能直接发送,于是查询本机路由表看有没有到主机B的路由,没有则将数据转发给默认网关节点,网关节点接着在所连接的另一个子网中重复上一步的动作,对比网段,若发现仍不在一个网段,则查询路由表继续转发,若在一个网段,则将数据转发给对应主机。(参考:1. IP路由器寻址过程 2. 路由表)
主要网络层协议:IP协议(还有为IP协议服务的ARP协议、NAT地址转换协议等),ICMP 协议(基于IP协议)
4. 网络接口层
网络接口层包括数据链路层和物理层,负责在以太网(局域网)中将数据从一台机器真实的搬运到另一台机器。前面网络层规定了每一步走哪个节点,但两个节点间实际的数据传输工作是网络接口层完成的,而在以太网中要实际定位一台设备节点是通过MAC地址,因此在网络接口层首先通过ARP协议获取下一个节点的IP对应的MAC地址,放在帧信息中把IP报文包上,最后再通过物理层传输到以太网中的对应设备节点。
网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。
主要网络接口层协议:MAC协议
参考:https://xiaolincoding.com/network
![Logo](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)