Http是应用层协议,TCP是网络层协议,应用层在TCP/IP四层架构中位于TCP的上一层。
建立Http连接在实现时有以下两种方式
DefaultHttpClient http = new DefaultHttpClient();
HttpGet method = new HttpGet(url);
HttpResponse response =http.execute(method);
URL url = new URL(uri); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.connect();
而TCP连接在实现时要借助Socket(套接字 IP+端口号)
Socket s = new Socket("localhost", 12345);
区别从这两个连接的实现方式就可以看出来,
HTTP连接需要指明资源的URL,发出请求的应用不知道服务器的IP,虽然域名服务器也是要把域名解析成IP地址,但不属于应用所关心的范畴,是网络层应该完成的工作。
所以Http连接属于无状态的短连接,若再请求其他数据,需要再重新建立连接。客户端向服务器发送请求后,服务器才知道客户端的存在。
TCP连接实现时需要指明IP地址和端口号,就可以跟目的主机通过三次握手建立联系,该连接一直保持直到某一方提出取消连接,通过四次握手关闭连接。
Socket支持TCP/UDP协议,如果使用TCP协议,那么socket连接就是TCP连接。提到的应用场景是手机与云端的服务器建立联系,因为要保持连接并指定连接的建立时间,所以在这种场景下使用TCP连接最合适。3G网络不支持端到端建立TCP连接,因为它是client-server模式,所以需要通过云端服务器的辅助来实现手机的端到端通信。
https://blog.csdn.net/heyetina/article/details/8056575
——————————————————————————————————————————————————
nodejs中tcp服务器和http服务器实现的异同
一,相同点
1,都调用了createServer方法。
2,当客户端接入时都会执行一个回调函数。
二,不同之处
1,回调函数的中对象的类型:
net服务器中,是个连接(connect)对象,
而在HTTP服务器中,则是请求和响应对象。
2,原因:
1,http服务器是更高层的API,提供了控制和HTTP协议相关的一些功能。
2,浏览器在访问站点时不会只用一个连接,很多主流的浏览器为了更快的加载网站内容,能够像同一个主机打开八个不同的连接,并发送请求。Node为了不让我们担心是请求还是连接,为我们提供了请求和响应的抽象。因此,即使你能通过req.connection属性获得TCP连接对象,但大多数情况下你还是在与请求和响应的抽象打交道。
摘自:https://blog.csdn.net/qiubt__123/article/details/51636794