目录
- 基本概念了解
- 网络的分层
- HTTP协议
- HTTP和TCP的关系
- 总结
学完了计算机网络课程以后,确实学到了一些网络的概念,初步拥有了对网络的一些认识。这些概念虽然可以用来解释平时网络上遇到的一些问题,但是真正把网络的知识运用在平时编程当中,机会还是比较少的。所以,对网络的一些概念大多还是来自于书本,在平时学习的过程中,没有自己亲自体会到这些概念的用处,无法学以致用。
有一次我看到了一个Java手写Http 服务器的代码,感觉眼前一亮,很是有趣。这个程序是通过TCP编程来构建一个简单的Http服务器。正好也对应了计算机网络分层的概念,Http协议是建立在TCP协议之上的,所以可以使用TCP编程来构建Http服务器。因此我准备来写一个系列博客记录一下自己的学习过程。这一些列会包括一些概念的介绍,然后是逐步编码实现一个Http服务器的小demo。
基本概念了解
网络的分层
注:关于概念的东西,这里不会介绍太多,毕竟还是书本上的知识更加全面一些,这里主要就是介绍一些概念。
计算机网络被划分为具有层次的结构,按照目前使用的TjsCP/IP 4层协议。TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。 我们学习的时候,是划分成了五层协议来学习的,从底层到高层分别是:物理层->数据链路层->网络层->传输层->应用层。
这里只要知道:HTTP协议是建立在TCP协议之上的(或者应用层是建立在传输层之上的)。
感兴趣的可以去了解一下 TCP/IP 和 OSI 的关系,并且为何是TCP/IP成为了主流?
HTTP协议
HTTP(HyperText Transfer Protocol),中文是超文本传输协议。它是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地计算机的传送协议。HTTP基于TCP/IP通信协议来传递数据。 HTTP基于客户端/服务端(C/S)架构模型,是一个无状态的请求/响应协议。 我们每天都会使用它,无论是浏览网页、看视频(基于Http协议的视频流)或者是下载文件(这里指使用Http协议下载),都是Http协议在起作用,可见它的无处不在。
但是,作为一个计算机专业的学生,光知道这些还是不够的,我们需要了解具体的协议。上面说了,HTTP是一个请求、响应协议,这里就是说,用户发送一个请求,会得到一个响应。请求和响应都会对应一个协议报文,www.devze.com分别称之为请求报文和响应报文,通常我们说HTTP报文就是指这二者。
HTTP报文分为报文头和报文体。 报文头部是一些必要的控制信息和对报文体数据的说明信息。通过这些信息,浏览器(通常是浏览器)就可以处理各种信息了,无论是文字、视频还是图片都是通过报文在网络上面进行传输。
请求报文和响应报文
这里主要是需要知道报文的结构特点,因为后面需要解析简单的HTTP报文(更详细的报文知识,可以阅读书籍或者参考其他人的博客。或者你也可以直接阅读后面的博客,遇到问题再去看,这样效果会更好!) 报文头部每一行需要一个回车换行符:CRLF CR: \r LF: \n 报文头和报文体之间使用一个单独的CRLF分开。 注意:GET请求没有报文体。
//请求报文 GET /test/hi-there.txt HTTP/1.1\r\n Accept: text/plain\r\n Host: www.joes-hardwar.com\r\n
//请求报文 HTTP/1.0 200 OK\r\n Content-Twww.devze.comype: text/plain\r\n Content-Length: 19\r\n \r\n Hi! I'm a message!
HTT开发者_JAVA开发P和TCP的关系
HTTP协议是建立在TCP协议之上的,上面我们所看到的请求和响应报文,对于TCP来说就是一串网络字节流。 我们后面的代码会加深你对于这句话的理解了。这里使用Java语言来进行编程,在Java中使用TCP编程,主要就是使用Java提供的Socket 套接字,也就是 Socket 和 ServerSocket 两个类。
总结
这里主要就是简略介绍一下需要的概念知识和需要具备的编程能力。
1.了解网络分层的概念,知道HTTP和TCP的关系。
2.了解HTTP报文的结www.devze.com构特点。
3.具备Socket和ServerSocket编程的能力。
到此这篇关于Java Http编程客栈的基础概念了解的文章就介绍到这了,更多相关Http基础概念内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
精彩评论