HTTP网络连接相关知识整理(一):http连接与Socket连接
2017-06-21 10:10
274 查看
http://blog.csdn.net/tterminator/article/details/52494141
在传输数据时,可以只使用(传输层)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连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。
在传输数据时,可以只使用(传输层)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网络连接相关知识整理(一):http连接与Socket连接
- HTTP网络连接相关知识整理(四):超时异常
- HTTP网络连接相关知识整理(二):网络IO
- HTTP网络连接相关知识整理(六):分发处理根异常
- HTTP网络连接相关知识整理(四):超时异常
- HTTP网络连接相关知识整理(三):网络错误异常
- 请教:C#网络编程相关的知识,建立socket服务器时向客户端连接,就建立不了了?
- 网络协议(Http,TCP/IP Socket)相关知识
- http,socket,tcp/ip 网络传输与通讯知识总结
- iOS网络HTTP、TCP、UDP、Socket 知识总结
- VMware网络连接相关的知识
- android和网络连接相关的类URL,URLConnection,HttpURLConnection,HttpClient
- IP地址、NAT、子网划分与子网掩码、CIDR等网络层相关知识整理
- 网络HTTP、TCP、UDP、Socket 知识总结
- http,socket,tcp/ip 网络传输与通讯知识总结
- 网络HTTP、TCP、UDP、Socket知识的总结
- Java网络编程(一) TCP/IP,http,socket,长连接,短连接
- ios开发网络知识 TCP,IP,HTTP,SOCKET区别和联系
- http,socket,tcp/ip 网络传输与通讯知识总结
- 网络HTTP、TCP、UDP、Socket 知识总结