一些问题的理解
最近在搞网络方面的应用,然后对一些基本的知识进行的反思和学习,现在总结如下:
socket VS http
最近对利用socket请求数据被一个同事质疑,说服务器会更改,http协议会变,不能简单的用socket进行http请求。系统本身对http的封装在socket的基础上还做了很多的工作。
mama的,一直没有想过socket跟http的关系,虽然觉得他的想法很奇怪,但是没有找到理由进行说服他。
今天查找了一些资料,弄清楚了这个问题
首先,socket是TCP和UDP的编程接口,是所有现代操作系统都统一支持的;而http是基于TCP协议之上的应用层协议
对上面一句话的理解是非常重要的,也就是说,socket这个编程接口肯定是可以实现http协议的。那么,http协议到底规定了一些什么呢?从数据上来说http协议在TCP协议数据上增加了一些协议头,这个协议头用于服务器和客户端的交互,例如,请求的方式是Get还是Post,Host是什么,遵循的http协议时1.0还是1.1。
进行http请求其实就是很简单的事情了。只有按照http的协议头进行组织,发过去,http服务器可以识别数据,然后返回数据,那么收到数据将http头拆分处理,那么要如何处理就如何处理了。
因此,socket实现http是很简单的,按照http的格式发生数据即可!
Http1.0 VS Http1.1
应该说没什么差别,至少它们是向下兼容的,http1.1至少增加了一些东西,例如返回的statue code 有100表示继续,当然对于http服务器的实现来说是有很多的区别的,例如要实现persistent connection
下面是一些介绍的链接:
http://www8.org/w8-papers/5c-protocols/key/key.html
http://stackoverflow.com/questions/246859/http-1-0-vs-1-1