大家好呀!我是reload。今天来简单介绍一下网络参考模型部分,应用层、传输层及其对应的协议。重点是tcp协议的工作流程,如三次握手、四次挥手,也可以作为一道非常经典的求职面试题考察。
应用,如我们平常使用的微信、QQ,以及其他各种各样的软件。
数据,以微信聊天为例,我们每天聊天的文本消息,发送的图片、视频等都是数据。
应用与数据的关系?应用产生数据
数据在网络设备之间是如何传递的?通过网络参考模型进行数据的封装﹐再由网络介质实现数据的传递
什么是网络参考模型?数据进行标准化封装的流程
1)概述
OSI 模型,由国际化标准组织ISO 收录在ISO 7489标准中并于1984年发布。
OSI参考模型又称为七层模型,每层及其功能如下:

注:这7个层次都是在一台电脑或设备上处理的。每一个网络设备上(如手机、电脑)都会有这些模型层次。比如微信聊天,发送一段文本给好友,在发送这些数据之前,就经过了这几层模型的处理,非常快就已经做了这些数据的信息处理。
2)对上三层的理解
为了更方便理解,从我们生活中举例,如下:
应用层:对接app,对接应用,如微信。
表示层:如A通过微信发消息给好友B,B只能通过微信接收信息,而不是QQ。
会话层:如微信点开一个好友聊天页面,只能与该好友互通信息,点开过程中就建立了双方的会话连接。
3) 其余四层的理解
以现实生活中买卖双方之间的交易为例。有A、B买卖双方,如下

1)概述
由于OSI协议栈比较复杂,且TCP和IP两大协议在业界被广泛使用,所以TCP/IP参考模型成为了互联网的主流参考模型。
TCP/IP参考模型分为TCP/IP对等模型和TCP/IP标准模型两类。

2)分层模型有什么好处?
①各个层次之间分工、界限明确,有助于各个部件的开发、设计和故障排除。
②通过定义在模型的每一层实现什么功能,鼓励产业的标准化。
③通过提供接口的方式,使得各种类型的网络硬件和软件能够相互通信,提高兼容性。
3)TCP/IP常见协议

HTTP(Hypertext Transfer Protocol,超文本传输协议):用来访问在网页服务器上的各种页面。
FTP(File Transfer Protocol,文件传输协议):为文件传输提供了途径,它允许数据从一台主机传送到另一台主机上。
DNS(Domain Name Service,域名解析服务):用于实现从主机域名到IP地址之间的转换。
TCP (Transmission Control Protocol,传输控制协议):为应用程序提供可靠的面向连接的通信服务。目前,许多流行的应用程序都使用TCP。
UDP(User Datagram Protocol,用户数据报协议):提供了无连接通信,且不对传送数据包进行可靠性的保证(无连接,不可靠)。
IP(Internet Protocol,互联网协议):将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接、不可靠的服务。
PPP(Point-to-Point Protocol,点对点协议):一种点对点模式的数据链路层协议,多用于广域网。
Ethernet(以太网协议):一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术。
注:更完整的可参考协议地图,如下

1)应用层产生的数据称为Data(数据)。
2)每种协议类型(如http、telnet)产生不同的数据。
3)不同类型的协议用端口号做区分。

1)传输层产生的数据称为Segment(数据段)。

2)TCP报文格式

bit,是数据存储的最小单位。1 Byte = 8 bit
1个bit可以描述 0/1(2^1), 2个bit可以描述 00/01/10/11(2^2)
端口的取值范围 0~65535(2^16=65536)
0~1023是知名端口,一般当作目标端口使用;1024-65535 是随机端口,一般当作源端口使用。
1)概述
任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
过程整理如下图所示,重点看图中注释:

2)seq和ack的值
seq:前两次,seq随机;第三次,seq=上一个报文的ack
ack:第一次,ack=0;后两次,ack=上一个报文的seq+1
置位:将bit设置为1。不置位:将bit设置为0
三次握手只是建立连接,不携带数据。
理解三次握手机制后,数据交互无非是携带数据进行传送,即多了一个携带的数据大小。过程整理如下图:

TCP通过滑动窗口机制来控制数据的传输速率。
1)TCP是一种有序的、可靠的报文交互,存在seq和 ack号。
2)TCP具备重传机制。
3)TCP根据网络质量调节数据传输。
4)TCP存在window字段,表明了可以接收的数据大小。
案例如下:

再来看一个案例:

注:窗口值可以自动调节每次发送报文的大小。
当数据传输完成后,通过“四次挥手”机制断开TCP连接,释放系统资源。
关键是两个标志位FIN和ACK,两端都要将数据传输完成,才认为是数据交互完毕。当数据交互完毕后就会触发四次挥手机制。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。