HTTP/TCP/UDP/Socket理解

HTTP

中文名:超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。HTTP 是一种请求/响应式的协议,让客户端和服务器进行有效的沟通。一个客户端与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。

HTTP 协议的特点

  • 简单方便快速

   因为HTTP协议比较简单,所以HTTP服务器的程序规模相对比较小,从而使得通信的速度非常快。

  • 灵活

   Http协议允许客户端和服务器端传输任意类型任意格式的数据对象。

  • HTTP 0.91.0使用非持续连接

   非持续连接的含义是每次建立的连接只处理一个客户端请求。

   当服务器处理完客户端的请求之后,并且收到客户的反馈应答后,服务器端立即断开连接。采用这种通信方式可以大大的节省传输时间。

  • HTTP 1.1使用持续连接

   不必为每个web对象创建一个新的连接,一个连接可以传送多个对象

  •  面向无状态

   Http是无状态的协议。所谓的无状态是指协议对于请求的处理没有记忆功能。无状态意味着如果要再次处理先前的信息,则这些先前的信息必须要重传,这就导致了数据量传输的增加。

TCP

TCP(传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来,我们来看看这三次对话的简单过程:1.客户端向服务器发出连接请求数据包;2.服务器发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包;3.客户端再发出一个数据包确认与服务器的要求同步。三次“对话”的目的是使数据包的发送和接收同步,经过三次“对话”之后,客户端才向服务器正式发送数据。

UDP

UDP(用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。

Socket

>  Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口。

>  Socket是一个针对TCP和UDP编程的接口,你可以借助它建立TCP连接等等。而TCP和UDP协议属于传输层 。

而http是个应用层的协议,它实际上也建立在TCP协议之上。你可以这样理解,HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

>  利用Socket建立网络连接的步骤

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket 。

套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

1服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。

2客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。

3连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正式建立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

猜你喜欢

转载自blog.csdn.net/qq_34716474/article/details/51436491