网络分层模型及HTTP/TCP/IP/Socket介绍

1,848 阅读7分钟

百度百科

OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO组织在1985年研究的网络互联模型。该体系结构标准定义了网络互联的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层)。

TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层(主机到主机)、传输层、和应用层。

一、OSI参考模型与TCP/IP模型对比

层次结构

相同之处:都采用了分层体系结构;不同之处:TCP/IP参考模型比OSI参考模型更简化。

层次关系

相同之处:都是对等的层间通信;不同之处:TCP/IP参考模型比OSI参考模型层次更清晰简练。

功能

在功能上,大致相同,在两个模型中,传输层及以上的各层都是为了通信的进程提供点到点、与网络无关的传输服务;TCP/IP参考模型比OSI参考模型有更好的网络管理功能。

数据传输原理

把TCP/IP模型的数据传输原理分成几个步骤:

(1) 当应用进程A的数据传送到应用层时,应用层为数据加上本层的控制报头后,将其组织成应用层的数据服务单元,然后向下传输到传输层。

(2) 传输层收到该数据单元后,加上本层的控制报头,构成传输层的数据服务单元,该数据服务单元被称为报文(message)。

(3) 传输层将报文传送到网络层时,由于网络层数据单元的长度有限制,因此,传输层的长报文将被分为若干个较短的数据段。每个数据段再加上网络层的控制报头,就构成了网络层的数据服务单元,它被称为分组。

(4) 网络层的分组传送到数据链路层时,加上数据链路层的控制信息后构成数据链路层的数据服务单元,它被称为帧。

(5) 数据链路层的帧传送到物理层后,物理层将以比特流的方式通过传输介质传输出去。当比特流到达目的结点主机B时,再从物理层依层上传,每层对其对应层的控制报头进行处理,将用户数据交给高层,最终将进程A的数据送给主机B的进程B,实现了数据的透明传输。

在OSI参考模型中数据的传输和TCP/IP模型原理是完全一样的

实际上,不管是OSI参考模型还是TCP/IP模型,都是数据发送方的各层相当于将各自的控制信息添加到上层传来的数据上,然后一起打包继续向前传递,而数据接收方的各层则是将接到的数据包进行解压,去掉发送方对等层添加在数据上的控制信息,然后传递给上层,最终实现数据的传输。

二、相关概念

  • HTTP/HTTPS 应用层协议,还有FTP/TELNET/SMTP/DNS等。

HTTP HyperText Transfer Protocal 超文本传输协议

最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

  • HTTPS Hyper Text Transfer Protocol over SecureSocket Layer

是由 HTTP 加上 TLS/SSL 协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护。

关于HTTP/HTTPS的介绍 blog.csdn.net/xiaoming100…

  • TCP/UDP 传输层协议

TCP 传送控制协议(Transmission Control Protocol)

TCP建立连接需要三次握手、释放连接需要四次握手

UDP 用户数据报协议(User Datagram Protocol)

  • IP 网络层协议 提供了主机和主机间的通信

有了 IP,不同主机就能够交换数据。但是,计算机收到数据后,并不知道这个数据属于哪个进程(简单讲,进程就是一个正在运行的应用程序)。TCP 的作用就在于,让我们能够知道这个数据属于哪个进程,从而完成进程间的通信。 为了标识数据属于哪个进程,我们给需要进行 TCP 通信的进程分配一个唯一的数字来标识它。这个数字,就是我们常说的端口号。

  • Socket 是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。

传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。传输层连接的端点叫做套接字(socket)。根据RFC793的定义:端口号拼接到IP地址就构成了套接字。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端口号)。例如,如果IP地址是210.37.145.1,而端口号是23,那么得到套接字就是(210.37.145.1:23)。

三、TCP三次握手和四次回收详解

3.1 三次握手漫画图解

如下图所示,下面的两个机器人通过3次握手确定了对方能正确接收和发送消息(图片来源:《图解HTTP》)。

  • 客户端–发送带有 SYN 标志的数据包 —— 一次握手–服务端
  • 服务端–发送带有 SYN/ACK 标志的数据包 —— 二次握手–客户端
  • 客户端–发送带有 ACK 标志的数据包 —— 三次握手–服务端

3.2 为什么要三次握手

目的是建立可靠的通信通道,说道通信,简单的说,就是数据的发送和接收,而三次握手最主要的目的就是双方确认自己与对方的发送和接收是正常的。

  • 第一次握手 Client什么也无法确定。Server确定:对方发送正常,自己接收正常。
  • 第二次握手 Client确定:自己发送和接收正常,对方发送和接收正常。Server确定:对方发送正常,自己接收正常。
  • 第三次握手 Client确定,自己发送和接收正常,对方发送和接收正常。Server确定:对方发送和接收正常,自己发送和接收正常。 所以,三次握手后才能确定双方发送和接收都正常,缺一不可。

3.3 为什么要四次挥手

端口一个TCP连接则需要"四次挥手"

  • 客户端-发送一个FIN,用来关闭客户端到服务器的数据传送。
  • 服务器-收到这个FIN,向客户端返回一个ACK,确认序号为收到的序号加1。
  • 服务器-关闭与客户端的连接,发送一个FIN给客户端。
  • 客户端-返回ACK报文给服务情况确认,并将确认序号设置为收到序号加1。 举个例子:A和B打电话,通话即将结束后,A说"我没啥要说的了",B回答"我知道了",但是B可能还会有要说的话,A不能要求B跟着自己的节奏结束通话,于是B可能又巴拉巴拉说了一通,最后B说"我说完了",A回答"知道了",这样通话才算结束。 blog.csdn.net/qzcsu/artic…