4.1 TCP/IP 协议分层
- TCP/IP 协议是互联网通信的工业标准,其实它是一组协议,TCP和IP协议是这一组协议的代表。协议就是计算机通信,提前定义好的语法、语义、同步。
- 这些协议按功能分为应用层协议、传输层协议、网络层协议、数据链路层协议。
- 应用层:是应用程序需要实现的工程,例如:上传和下载文件,收发电子邮件等。
- 传输层:负责数据的传输,如果数据包有丢失的情况,传输层要对其进行处理,保证数据的可靠传输和完整性。
- 网络层:负责管理传输的地址,要往那发要明确,并对对网络路径进行最优的选择
- 数据链路层:对数据包进行再次封装,加上 MAC 地址进行传输。
4.2 封装和解封
- 发送端加上传输层首部、网络层首部、数据链路层首部的过程叫做封装。
- 接收端收到后,去掉数据链层首部、去掉网络层首部、去掉传输层首部的过程叫做解封。
- 每经过一个链路,数据包都要重新封装
4.3 将计算机通信分层的好处
- 各层之间相互独立,只要实现各层各自的功能就可以了。
- 灵活性好。
- 结构上可以分开。
- 易于实现和维护。
- 能促进标准化工作。
4.4 TCP/IP协议的体系结构
- 体系结构就是包括哪些协议以及他们之间的关系。
- 如果底层协议能够支持多种上层协议的封装,在底层协议必然要有一个字段用来指明封装的是哪种上层协议。否则接收端就不知道提交给上层的那个协议。
抓包分析TCP/IP协议体系结构。
4.5 CP/IP 通信过程
1.目标MAC
地址决定了数据帧下一跳由哪个设备接收
2.目标IP
地址决定了数据包最终到达那个计算机
3.不同的网络数据链路层使用不同的协议,帧格式也不相同,路由器在不同网络转发数据包,需要将数据包重新封装
过程如下:
- 应用层:一个完整的网页对应应用层数据单元。
- 传输层:网页的内容非常多,需要把网页放入传输层,网页不是一下子都放入传输层,是通过字节分成多个段,每个段都有编号,缓存在传输层。传输层满了后要等传输层的数据发送完后清掉缓存,才可以继续往传输层放入数据,传输层是一个边发边缓存的状态,传输层的存储空间是有限的。传输层的内容属于数据段。
- 每个数据段都有首部,首部包含了传输层的协议。
- 传输层的缓存数据只有在目标计算机确认已接收后才能清楚缓存,由于网络传输过程中会有丢包的情况,需要重传,所以需要接收端真正接收了才能清理传输层的缓存。
- 网络层:数据到达网络层后,需要添加网络层首部(网络层协议),数据需要知道数据要发到那个目的地,网络层会把目的地地址放入数据段中,形成一个数据包,网络层的内容属于数据包
- 数据链路层:由于数据包传输到目标地址需要经过很多个路由器,每个计算机上的网卡都有唯一的
MAC
地址,路由器的接口也有MAC
地址,数据链路层需要将源计算机的和下一个目标(路由器)的MAC
进行封装,添加数据层首部,形成数据帧。- 数据帧将
0
和1
的进制数据传到下一个路由器,路由器收到数据帧后,去掉数据帧首部,只留下数据包,路由器发到下个路由器是用的是点对点链路(PPP协议),点到点协议不需要MAC
地址,直接传输。直到最后的路由器发给最终的接收地址(计算机),最后一个路由器会封自己的MAC
地址(ME)和目标MAC
地址(MF),目标计算机网卡看到MF
是自己的MAC
地址就会进行接收。 - 目标计算机收到数据后,数据链接成去掉
MAC
地址(数据链路层首部)后交给网络层,网路层去掉网络层首部后给传输层,到达传输层后,浏览器到传输层里读取缓存数据(字节)展示到页面中。有时候打开一个网页一点点显示,就是页面在读取传输层的数据,并没有一下读出来的原因。
- 数据帧将
IP
是确定了数据最终发送的目的地,IP
地址全球唯一,MAC
地址决定了下一跳由那个设备接收
4.6 网络设备分层
- 客户端的应用层和服务端的应用层是对等实体
- 客户端的传输层跟服务端的传输层是对等实体
- 客户端和服务端的网络层和路由器网络层是对等实体
- 客户端和服务端的数据链路层和路由器的数据链路层是对等实体
- 路由器是三层设备
4.7 OSI 与 TCP/IP 之间的关系
- 传输层
- TCP:可靠传输
- UDP:不可靠传输