1.HTTP协议详解
HTTP是一个属于应用层的面向对象的协议,由于其简洁,快速的方式,是用于分布式超媒体信息系统。目前在www(万维网)中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中。
HTTP(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。
HTTP协议的主要特点可概括如下:
(1)支持客户/服务器模式。
(2)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
(3)灵活:HTTP允许传输任何类型的数据对象。正在传输的类型由Content-Type加以标记。
(4)无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
(5)无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
2.TCP和UDP的区别(PS:TCP和UDP都是传输层协议)
TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”(也称三次“握手”)才能建立起来,这三次对话的简单过程为:①主机A向主机B发出连接请求数据包;②主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包;③主机A再发出一个数据包确认主机B的要求同步:“我现在发送,你来接收吧!”,这是三次对话。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,主机A才向主机B正式发送数据。
UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。
区别:
(1)是否连接:TCP面向连接,UDP面向非连接。
(2)传输可靠性:TCP可靠,UDP不可靠。
(3)应用场合:TCP传输大量数据,UDP传输少量数据。
(4)速度:TCP慢,UDP快。
3.服务器连接的三次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
(1)第一次握手:建立连接时,客户端发送连接请求到服务器,并进入SYN_SEND状态,等待服务器确认;
(2)第二次握手:服务器收到客户端连接请求,向客户端发送允许连接应答,此时服务器进入SYN_RECV状态;
(3)第三次握手:客户端收到服务器的允许连接应答,向服务器发送确认,客户端和服务器进入通信状态,完成三次握手
PS:所谓三次握手就是要有三次连接信息的发送/接收过程。TCP连接的建立需要进行三次连接信息的发送/接收。
4.论Socket和HTTP协议的区别
(1)概念
HTTP:超文本传输协议,首先它是一个协议,并且是基于TCP/IP协议基础之上的应用层协议。TCP/IP协议是传输层协议,主要解决数据如何在网络中传输。HTTP是基于请求-响应形式并且是短连接(即客户端向服务器端发送一次请求,服务器端响应后连接即会断掉),并且是无状态的协议。
Socket:Socket不属于协议范畴,而是一个调用接口(API),Socket是对TCP/IP协议的封装,通过调用Socket才能使用TCP/IP协议。Socket连接是长连接,理论上客户端和服务器端一旦建立连接将不会主动断开此连接。Socket连接属于请求-响应形式,服务端可主动将消息推送给客户端。
(2)区别
简单说,浏览的网页(网址以http://开头)都是HTTP协议传输到你的浏览器的,而HTTP是基于Socket之上的。Socket是一套完成的TCP、UDP协议的接口。
HTTP协议:简单对象访问协议,对应于应用层,HTTP协议是基于TCP连接的。
TCP协议:对应于传输层。
IP协议:对应于网络层。
TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。
Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是调用接口(API),通过Socket,我们才能使用TCP/IP协议。
5.利用Socket建立网络连接的步骤
建立Socket连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
(1)服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。
(2)客户端请求:指客户端的套接字提出连接请求,要连接到目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,支出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。
(3)连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就相应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接受其他客户端套接字的连接请求。
PS:套接字
源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。
它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。