OSI七层模型与TCP/IP四层模型

OSI七层模型与TCP/IP四层模型

OSI模型(Open System Interconnection Reference Model,缩写为OSI),全名“开放式系统互联通信参考模型”,是一个试图使各种计算机在全世界范围内互联为网络的标准框架。

tcp、ip分别是传输层和网络层,两层之上是应用层,两层试下是链路层。

 

TCP/IP

 互联网的实现,分成好几层,每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。

 通常人们认为OSI模型最上面三层(应用层、表示层、会话层)在TCP/IP中是一个应用层。

  TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

  关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有

应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定

义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

  术语TCP/IP代表传输控制协议/网际协议,指的是一系列协议。“IP”代表网际协议,TCP和UDP使用该协议从一个网络传送数据包到另一个网络。把IP想像成

一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这

样的协议等。

  你应该能理解,TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供

有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。

HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务

器发送被请求的信息给客户端。

 HTTP协议是基于请求/响应模式的,因此只要服务端给了响应,本次HTTP连接就结束了,或者更准确的说,是本次HTTP请求就结束了,根本没有长连接这一说。那么自然也就没有短连接这一说了。

之所以网络上说HTTP分为长连接和短连接,其实本质上是说的TCP连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才有真正的长连接和短连接这一说

 不管怎么说,一定要务必记住,长连接是指的TCP连接,而不是HTTP连接。

了解TCP的3次握手和4次挥手

为什么有3次握手

  每当建立一个TCP/IP连接的时候都要经历3次握手,这是为了保证建立一个可靠的连接。

什么是3次握手

  上图中的三次挥手说的是,客户端向服务器发请求,服务器接收请求,服务器接收请求之后发送一个连接标志,客户端接收连接标志之后也向服务器发送一个连接标志,至此连接完成。

用打电话类比的话就是:

  小明拨打小红的电话

  小红按下通话键并说了声,喂 (一次握手)

  小明听到小红的回应,也说了声,喂 (二次握手)

  小红接收到小明的回应 (三次握手)

4次挥手

  为什么有4次挥手呢,4次挥手的作用就是断开连接,之所以要断开连接是因为TCP/IP协议是要占用端口的,而计算机的端口是有限的,所以一次传输完成之后是要断开连接的,断开连接的方式就是4次挥手。

  连接是由客户端发起的,所以断开连接也要有客户端发起,因为服务器是被动的。上图的最后一部分就是4次挥手,还是用小明和小红打电话来类比。

  小明:我这没事儿了,你还有事儿吗? (1次挥手)

  小红:我也没事儿了,你确定没事儿了吗? (2次挥手)

  小红:我要挂电话了。 (3次挥手)

  小明:好吧,你挂吧。 (4次挥手)

Http 与 Socket 区别

HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,HTTP是应用层协议,主要解决如何包装数据。HTTP协议详细规定了浏览器与服务器之间相互通信的规则,是万维网交换信息的基础。HTTP是基于请求-响应形式并且是短连接,并且是无状态的协议。针对其无状态特性,在实际应用中又需要有状态的形式,因此一般会通过session/cookie技术来解决此问题。

Socket:Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket,才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。

资料

https://www.cnblogs.com/songwenjie/p/8839782.html

https://www.jianshu.com/p/c793a279f698

原文地址:https://www.cnblogs.com/cnki/p/5142044.html