一、计算机网络的两种模型
在计算机网络里,有两种常见的参考模型即:OSI参考模型和TCP/IP参考模型。TCP本身是传输层的协议, 而TCP/IP是一种网络参考模型。
1. OSI七层参考模型:
主要是用来清晰的了解网络结构的分层。这一模型和相关的协议并没有被使用, 但它具有普遍的意义就是对于讨论网络的体系结构中的每一层的功能。它将服务,接口和协议的概念区分开来。每一层的接口都告诉它上面的进程如何访问本层。而且每层用到的对等协议是本层自己内部的事情,不影响上层。它同时支持面向连接和无连接的通信,但是传输层只支持面向连接的通信。
2. TCP/IP 模型:
分为四层协议,分别为链路层,网络层,传输层,应用层。它对服务,接口和协议没有明确的区分,下图也是人们对它进行了改进,使它更像OSI。它的网络层只支持一种面向无连接的服务, 但传输层同时支持TCP(面向连接)和UDP(面向无连接)两种通信模式。
二、TCP和UDP的区别和联系
1. 从理论看区别:
TCP是面向连接的,在传输数据前必须建立连接,传输完成后必须关闭连接。且连接建立需要经过3次握手, 连接断开需要4次挥手。连接方式是点对点的, 无法做到多播。
UDP面向无连接,当一端需要发送报文时, 通过UDP套接字发送报文,UDP不保证有序, 不保证一定被接收端收到,且没有拥塞的控制。
2. 从编码上区别:
二、TCP和IP的区别和联系
1. TCP协议:
传输控制协议(Transmission Control Protocal),是一种基于IP协议的传输层协议。主要特点是3次握手建立连接,4次挥手断开连接。
2. IP协议:
因特网协议(Internet Protocol),位于网络层,IP协议规定了数据传输时的基本单元(数据包)和格式,IP协议还定义了数据包的递交办法和路由选择。
总结:整个网络中的传输流程是,IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层—TCP层;相反,IP层也把从TCP接收来的数据包传送到更低层。也就是,IP提供基本的数据传送,而高层的TCP对这些数据包做进一步加工,如提供端口号等等。
三、HTTP和socket
1. HTTP协议:
HTTP协议是应用层协议,HTTP协议是hypertexttransferprotocol(超文本传输协议)的简写。它是建立在TCP/IP协议之上的一种应用协议。
用于定义WEB浏览器和服务器之间交换数据的过程,客户端连上web服务器后,若想获得web服务器中的某个资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通讯的格式。
2. socket:
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP)。
3. 区分:
Socket只是操作系统提供给应用程序进行网络通信的抽象API。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。Socket连接中,点对点的两方是平等的,服务器也可以主动直接将数据传送给客户端。就是所谓的长连接,理论上客户端和服务器端一旦建立起连接,在通信双方中的任何一方主动关闭连接之前,不会主动断掉。
HTTP是基于TCP的应用层协议。大部分情况下,一次HTTP请求的完成经过了建立TCP链接
->客户端发送报文
->服务端返回报文
->服务端或客户端关闭此连接
这个过程,由于每次都要建立连接,并在完成一次请求响应后关闭连接,所以大家称为“短连接”。若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。
HTTP是轿车,提供了封装或者显示数据的形式,是一种格式;socket是发动机,提供了网络通信的能力,是一套接口。