文章目录:
一、分层模型
1.分层的思想
2.OSI参考模型与TCP/IP协议簇
二、数据传输过程
1.数据的封装过程
2.数据的解封装过程
三、TCP与UDP协议
1.TCP协议
2.UDP协议
一、1.分层的思想
在这里,列举一个简单的例子帮助理解分层的思想。让我们试想一下,早上时间比较紧张的时候,冲一杯牛奶是一种不错的方案,作为最终用户,我们并没有感觉到这个过程有多么复杂,但是,奶粉的生产者会面临一系列的问题:如何安排奶粉的整个生产工艺,如何包装才能吸引顾客,如何运输等等问题。于是,奶粉厂会设立几个部门:原料采购部、奶源加工车间、奶粉生产车间、包装车间、销售部门等。如图示:
奶粉
相比较而言,网络世界也用到了这种思想。赋予每一层一定的功能,相邻之间通过接口来通信,下层为上层提供服务。一旦网络发生问题,很容易确定是由哪一层的功能没有实现导致的。将网络最终的通信目标分解成各个子层的目标,然后逐一研究每一层的功能是如何实现的,这种思想更加有助于将复杂的问题简单化。
2.1 OSI参考模型
由国际标准化组织于1984年颁布了开放系统互联(Open System Interconnection,OSI)参考模型。OSI参考模型是一个开放式体系结构,规定将网络分为七层,从下往上依次是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,如图示:
2.2 TCP/IP参考模型
TCP——传输控制协议
IP——网络互联协议
TCP/IP协议簇的前四层与OSI参考模型的前四层相对应,其功能也相似,而应用层则与OSI
参考模型的最高三层对应,如图示:
TCP/IP五层模型应用得更广泛,下面是该模型对应的一些常见协议。如图示:
①物理层和数据链路层
在物理层和数据链路层,TCP/IP没有定义任何协议,支持所有标准和专用的协议,网络可以是局域网、城域网或者广域网。
②网络层
在网络层,TCP/IP定义了网络互联协议(IP),IP由四个支撑协议组成:ARP(地址解析协议)、RARP(逆地址解析协议)、ICMP(网际控制报文协议)和IGMP(网际组管理协议)
③传输层
在传输层,TCP/IP有两个传输层协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP协议传输更加稳定可靠,UDP协议传输效率更高。
④应用层
在应用层,TCP/IP定义协议较多,如:HTTP(超文本传输协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)、DNS(域名系统)等。
二、数据传输过程
2.1 数据的封装过程
在计算机网络层次的划分中,每一层实现的功能也更为复杂。下面以两台主机通信为实例进行分析讲解:
①应用层传输过程
在应用层,数据被“翻译”为网络的通用语言——二进制编码数据。这个过程,也是应用层
在网络数据传输过程中最为核心的贡献。
②传输层传输过程
在传输层,上层数据被分割成小的数据段,并为每个分段后的数据封装TCP报文头部。TCP头部有一个关键的字段信息——端口号,它用于标识上层的协议或应用程序,确保上层应用数据的正常通信。
③网络层传输过程
在网络层,上层数据被封装新的报文头部)IP头部。在IP头部有一个关键的字段信息
——IP地址,它是由32位二进制数组成的,用于标识网络的逻辑地址。
④数据链路层传输过程
在数据链路层,上层数据被封装一个MAC头部,其内部有一个关键的字段信息——
MAC地址,它由48位二进制数组成。在MAC头部同时封装着目标MAC地址和源MAC地
址。
⑤物理层传输过程
在物理层,将二进制数字组成的比特流转换成电信号在网络中传输。
2.2 数据的解封装过程
数据被封装完成后,通过网络传输到达接收方后,将进入数据的解封装过程,这是封装过程
的一个逆过程,如图示
①在物理层,首先将电信号转换成二进制数据,并将数据送至数据链路层。
②在数据链路层,查看MAC地址,判断其是否与自己的MAC地址吻合。如果吻合,数据的MAC头部被“拆掉”,将剩余的数据送至上一层;如果步吻合,终端将会丢掉数据。
③到了传输层,根据TCP头部判断数据段送往哪个应用层协议或应用程序,然后将之前被分组的数据段重组,再送往应用层。
④在应用层,这些二进制数据经过解码,还原成发送者所传输的最原始的信息。
三、TCP与UDP协议
3.1 TCP协议
TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,数据可在同一时间双向传输。TCP连接的过程称为三次握手,下面将此过程用图表示:
三次握手:
①Client向Server发送SYN请求
②Server收到此请求后回复一个ACK给Client,同时发送一个SYN请求
③Client收到SYN请求后,给出一个ACK确认
3.2 TCP的断开分为四步,也称为四次挥手,同样用图表示:
四次挥手:
①Client向Server发送一个FIN请求
②Server收到后给出一个ACK确认
③Server发送一个FIN请求给Client
④Client收到FIN请求后,回复一个ACK给Server
TCP端口及其应用
3.3 UDP协议
UDP协议是一个无连接、不保证可靠性的传输层协议,发送方不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到数据,它的可靠性靠上层协议保障,如果想发送很短的报文而不关心可靠性,可使用UDP协议。
UDP常用的一些端口