您的位置:首页 > 理论基础 > 计算机网络

HTTP网络连接相关知识整理(一):http连接与Socket连接

2016-04-27 14:04 501 查看
在传输数据时,可以只使用(传输层)TCP/IP协议,但是必须使用应用层协议识别数据内容。
应用层协议包括如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。

什么是Socket?
Socket是一个针对TCP和UDP编程的接口,可以借助它建立TCP连接。

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

HTTP通信机制完成一次通信的7大步骤

(1)建立TCP连接(三次握手)

TCP的连接需要通过3次握手报文来完成,开始建立TCP连接时需要发送同步SYN报文,然后等待确认报文SYN+ACK,最后再发送确认报文ACK。TCP连接的关闭通过4次挥手来完成,主动关闭TCP连接的一方发送FIN报文,等待对方的确认报文;被动关闭的一方也发送FIN报文,然等待确认报文。



(2)Native app Application 向服务器发送Http请求命令(Get/Post) 

一旦建立了TCP连接,Web浏览器就会向Web服务器发送请求命令。例如:GET/sample/hello.jsp HTTP/1.1。

GET与POST方法的区别

(2-1) get是从服务器上获取数据,post是向服务器传送数据。

(2-2) GET方法提交的表单数据被附加到URL上,并作为URL的一部分发送到服务器端。POST提交的数据则放在实体数据中

(2-3)对于GET方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

(2-4)GET传送的数据量较小,若要使用GET方法发送表单,URL的长度应限制在1MB字符以内。如果发送的数据量太大,数据将被截断。

(2-5)GET安全性非常低,post安全性较高。

(3)Native app Application发送请求头信息 (Header)

浏览器发送其请求命令之后,还要以头信息的形式向Web服务器发送一些别的信息,之后浏览器发送了一空白行来通知服务器,它已经结束了该头信息的发送。 

(4) 服务器应答 
Native app Application向服务器发出请求后,服务器会客户机回送应答, HTTP/1.1 200 OK ,应答的第一部分是协议的版本号和应答状态码。

(5)服务器发送应答头信息 (Header)
正如客户端会随同请求发送关于自身的信息一样,服务器也会随同应答向用户发送关于它自己的数据及被请求的文档。 

(6)服务器向Native app Application发送数据 
Web服务器向浏览器发送头信息后,它会发送一个空白行来表示头信息的发送到此为结束,接着,它就以Content-Type应答头信息所描述的格式发送用户所请求的实际数据。

(7) Web服务器关闭TCP连接 
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:
Connection:keep-alive 
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  http通信 tcp socket