Java Http的基础概念了解

 更新时间:2023年04月26日 10:10:54   作者:CrazyDragon_King  
这篇文章主要介绍了Java Http的基础概念,HTTP协议是建立在TCP协议之上的,这个程序是通过TCP编程来构建一个简单的Http服务器,需要的朋友可以参考下

学完了计算机网络课程以后,确实学到了一些网络的概念,初步拥有了对网络的一些认识。这些概念虽然可以用来解释平时网络上遇到的一些问题,但是真正把网络的知识运用在平时编程当中,机会还是比较少的。所以,对网络的一些概念大多还是来自于书本,在平时学习的过程中,没有自己亲自体会到这些概念的用处,无法学以致用。

有一次我看到了一个Java手写Http 服务器的代码,感觉眼前一亮,很是有趣。这个程序是通过TCP编程来构建一个简单的Http服务器。正好也对应了计算机网络分层的概念,Http协议是建立在TCP协议之上的,所以可以使用TCP编程来构建Http服务器。因此我准备来写一个系列博客记录一下自己的学习过程。这一些列会包括一些概念的介绍,然后是逐步编码实现一个Http服务器的小demo。

基本概念了解

网络的分层

注:关于概念的东西,这里不会介绍太多,毕竟还是书本上的知识更加全面一些,这里主要就是介绍一些概念。

计算机网络被划分为具有层次的结构,按照目前使用的TCP/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是一个请求、响应协议,这里就是说,用户发送一个请求,会得到一个响应。请求和响应都会对应一个协议报文,分别称之为请求报文和响应报文,通常我们说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-Type: text/plain\r\n
Content-Length: 19\r\n
\r\n
Hi! I'm a message!

HTTP和TCP的关系

HTTP协议是建立在TCP协议之上的,上面我们所看到的请求和响应报文,对于TCP来说就是一串网络字节流。 我们后面的代码会加深你对于这句话的理解了。这里使用Java语言来进行编程,在Java中使用TCP编程,主要就是使用Java提供的Socket 套接字,也就是 Socket 和 ServerSocket 两个类。

总结

这里主要就是简略介绍一下需要的概念知识和需要具备的编程能力。

1.了解网络分层的概念,知道HTTP和TCP的关系。

2.了解HTTP报文的结构特点。

3.具备Socket和ServerSocket编程的能力。

到此这篇关于Java Http的基础概念了解的文章就介绍到这了,更多相关Http基础概念内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java Spring数据单元配置过程解析

    Java Spring数据单元配置过程解析

    这篇文章主要介绍了Java Spring数据单元配置过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • java判断请求是来自PC端还是手机端小技巧

    java判断请求是来自PC端还是手机端小技巧

    这篇文章主要为大家介绍了java判断请求是来自PC端还是手机端小技巧,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • springBoot整合shiro如何解决读取不到@value值问题

    springBoot整合shiro如何解决读取不到@value值问题

    这篇文章主要介绍了springBoot整合shiro如何解决读取不到@value值问题,具有很好的参考价值,希望对大家有所帮助,
    2023-08-08
  • SpringBoot使用hutool-captcha实现验证码生成与验证

    SpringBoot使用hutool-captcha实现验证码生成与验证

    在springboot的登陆页面中为了防止机器大规模注册,机器暴力破解数据密码等危害,需要验证随机生成的验证码,本文主要介绍了SpringBoot使用hutool-captcha实现验证码生成与验证,感兴趣的可以了解一下
    2023-12-12
  • spring+maven实现邮件发送

    spring+maven实现邮件发送

    这篇文章主要为大家详细介绍了spring+maven实现邮件发送,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 手工体验smtp和pop3协议 邮件实现详解(二)

    手工体验smtp和pop3协议 邮件实现详解(二)

    POP3/IMAP协议定义了邮件客户端软件和POP3邮件服务器的通信规则,这篇文章我们就来手工体验SMTP和POP3协议的奥秘,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Java获取Object中Value的实现方法

    Java获取Object中Value的实现方法

    本文介绍了在Java中获取对象属性值的几种常见方法,包括使用反射机制、getter方法、接口或抽象类、Map数据结构、序列化与反序列化以及JavaBeans规范,每种方法都有其适用场景和优缺点,选择合适的方法取决于具体需求
    2025-03-03
  • Java图形化编程之JFrame疫苗接种系统详解

    Java图形化编程之JFrame疫苗接种系统详解

    GUI图形界面设计是用户和程序交互的工具,用户通过图形界面控制程序事件的发生。首先介绍Swing的基本体系结构,这是底层
    2021-09-09
  • 详解SpringBoot是如何整合JPA的

    详解SpringBoot是如何整合JPA的

    借助于开发框架,我们已经不用编写原始的访问数据库的代码,也不用调用JDBC或者连接池等诸如此类的被称作底层的代码,我们将从更高的层次上访问数据库,本章我们将详细介绍在Springboot中使用 Spring Data JPA 来实现对数据库的操作,需要的朋友可以参考下
    2021-06-06
  • Spring AOP统一功能处理示例代码

    Spring AOP统一功能处理示例代码

    AOP面向切面编程,它是一种思想,它是对某一类事情的集中处理,而AOP是一种思想,而Spring AOP是一个框架,提供了一种对AOP思想的实现,它们的关系和loC与DI类似,这篇文章主要介绍了Spring AOP统一功能处理示例代码,需要的朋友可以参考下
    2023-01-01

最新评论