最近一直学习网络方面的内容,想写一个基于线程池和数据库连接池的HTTP服务器,感觉自己想做个东西出来确实不容易,看别人的东西感觉简单的很,但是,要是真想自己写的话,那还是很麻烦的。
就拿这个HTTP服务器来说:我觉得至少要对以下内容比较熟悉。(用java实现!)
序列化,线程,异常处理,jdbc,socket,相关网络知识,I/O流,集合框架。
其实这些知识里面又有很多的东西需要去挖掘。 再加上自己先前的不努力,导致现在上手写代码真的很难。不过没有关系,本着对自己智商的自信,我还是要把这个东西扛下来。既然是HTTP服务器,就简单的谈谈HTTP吧!
花了几个小时浏览了一下RFC2616文件,看的云里雾里。总结如下:
一 : 顾名思义
HTTP,超文本传输协议。具体英文记不住了。囧。顾名思义,是一个协议,所谓协议说白了就是一组规范,那么是什么样的规范呢? 是对超文本传输的规范。也就是对跨因特网传输数据,以及超媒体信息的一组规范。那么在传输过程中,无非就是请求/相应。客户端发送一个请求,服务器受到后,处理并进行相应。而HTTP就是对这些请求,相应进行了规范。你的请求里包含哪些内容比如:URI,请求方法,协议版本啊等等,以及这些内容是什么样格式来组织。当然对响应也是同样的进行规定。比如:相应404就是表示找不到资源。
二: 整体流程
HTTP通信大体上是,客户端发送请求(一般请求由用户代理也就是游览器发出),进过代理,网关,渠道等媒介转发处理,最终到达原始服务器。原始服务器进行处理之后再返回给客户端。当然这里面有游览器对请求缓存等很多细节而复杂的问题是需要处理的。
三: 相关数据
HTTP通常是使用TCP/IP连接,所以缺省端口号为80.当然也可以自己设定端口号。
URL格式: http:// 主机名 :端口号 绝对路径? 查询
四: 附录
写此blog中查阅的一些小知识:
客户端: 建立连接以发送请求的程序
用户代理:发出用户请求的客户端。比如:游览器,网络机器(蜘蛛)
服务器: 接受连接,以处理请求并返回相应来满足客户端的应用程序。
原始服务器: 提供存储或将创建资源的服务器。
写此blog时产生了一个疑问:
游览器的工作原理?
代理?
网关?
分享到:
相关推荐
### Struts2学习小结 #### 一、Struts2简介及环境搭建 **Struts2** 是一款基于 **MVC**(Model-View-Controller)设计模式的开源框架,用于简化 Java Web 应用程序的开发过程。通过将业务逻辑、用户界面以及控制...
**Ajax小结** Ajax,全称Asynchronous JavaScript and XML(异步JavaScript和XML),是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,...
详细的高斯模糊及其实现。是http://blog.csdn.net/zddmail/article/details/7450033内容的pdf版。
- 提取URL中的域名:`http(s)?://(www\\.)?([a-zA-Z0-9\\-\\.]+)\\.([a-zA-Z]{2,})/(\\S*)` 11. **常用工具** - 在开发过程中,可以使用在线正则表达式测试工具,如regex101、regexr等,帮助调试和验证正则表达式...
HTTP,CSS知识内容简单小结
服务器配置课程学习小结全文共12页,当前为第1页。服务器配置课程学习小结全文共12页,当前为第1页。服务器配置课程学习小结 服务器配置课程学习小结全文共12页,当前为第1页。 服务器配置课程学习小结全文共12页,...
这篇博文"文件传送小结"可能是对文件传输技术的一个总结和探讨,虽然描述部分为空,但我们可以根据标题和标签来推测其主要内容。"源码"和"工具"两个标签暗示了这篇博文可能会涉及实际的代码实现和使用的工具。 首先...
详细的高斯模糊及其实现。是http://blog.csdn.net/zddmail/article/details/7450033内容的pdf版。
Weblogic 日志小结 Weblogic 的日志机制是 Weblogic 服务器中非常重要的一部分,它允许管理员和开发者了解服务器的运行情况,追踪错误、 debug 信息和安全日志等。Weblogic 的日志机制可以分为三个部分:access.log...
python小结: 1、若有的模块通过pycharm安装失败,可以通过cmd方式进行下载安装 命令:pip --default-timeout=200 install gevent pip 2、pip install 很慢,使用国内镜像 国内镜像列表 ...
JavaWeb学习小结涵盖了多个关键知识点,包括Tomcat服务器、XML、HTTP协议、Servlet技术和相关的应用,如Cookie、Session、过滤器以及监听器。以下是这些主题的详细解释: 1. **Tomcat服务器**:Tomcat是一款开源的...
【Spring 框架学习小结】 Spring 是一个流行的 Java 应用开发框架,它以其控制反转(Inversion of Control, IOC)和面向切面编程(Aspect-Oriented Programming, AOP)为核心特性,被誉为轻量级框架。下面将详细...
这篇博客"Struts开发小结"可能涵盖了作者在使用Struts框架进行开发过程中的经验总结和一些关键点。由于没有直接的描述内容,我们将基于Struts框架的一般特性来讨论相关知识点。 1. **Struts 2框架基础**: Struts ...
在介绍JSP学习经验的小结分享中,文中首先提出了JSP应用的两种基本组合模式:对于简单的应用,建议采用JSP+BAEN的组合方式;而对于复杂的系统,则应考虑使用JSP+EJB的组合。这种组合方式的建议说明了在不同复杂度的...
若要直接在浏览器中输出Excel文件,需设置HTTP头信息并使用`php://output`作为文件名: ```php $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel); header("Pragma: public"); header("Expires: 0"); // ... ...
在本文中,我们将深入探讨Firbug的console小结,包括它提供的各种命令、用法以及在实际开发中的应用。 一、console对象的基本用法 1. console.log():这是最常用的方法,用于输出信息到控制台。例如: ```...
### 正则表达式小结:C# 中的高级匹配规则 正则表达式是文本处理中的强大工具,尤其在编程语言如C#中,它能够帮助开发者进行复杂的字符串匹配、搜索、替换等操作。本文将对正则表达式的一些常见用法进行总结,包括...
【Pushlet简单应用小结】 Pushlet是一种基于Java的实时数据推送技术,它允许服务器主动向客户端推送数据,而不需要客户端频繁发起请求。这个技术在Web应用中特别有用,可以提高用户体验,降低服务器负载。本篇文章...