Code Monkey home page Code Monkey logo

galaxy-service's Introduction

galaxy-service

轻量级服务器软件,

HTTP协议(超文本传输协议) HTTP协议是互联网中广泛应用的应用层协议,是客户端(浏览器)与服务端之间规定数据格式的协议.

HTTP协议要求客户端与服务端之间通讯形式为:一问一答 即:客户端向服务端发送一个HTTP请求,服务端经过处理后给客户端一个HTTP响应.服务端永远不会主动给客户端发送数据. HTTP协议现在基本使用HTTP1.1版本. 在HTTP1.0时,客户端与服务端通讯形式为:一次会话中只完成一次请求一次响应. 即:客户端通过TCP协议与服务端建立连接后,会使用HTTP协议向服务端发送请求,服务端处理后给客户端进行响应.响应完毕后即与客户端断开连接.

HTTP1.1时,允许在一次会话中完成多次请求与响应. 即:建立TCP连接后,客户端发送一次请求后服务端处理完毕进行响应,然后客户端可以再次发送请求服务端处理然后响应这样重复多次,直到最后一次响应完毕才断开连接.

HTTP分别对请求与响应定义了格式

HTTP请求(request) 一个HTTP请求分为三部分:请求行,消息头,消息正文

请求行格式: method url protocol(CRLF) 请求方式 资源路径 协议版本

例如: GET / HTTP/1.1(CRLF)

注:(CRLF)表示两个符号 CR:回车符号 对应的编码:13 将光标移回本行开始位置 LF:换行符号 对应的编码:10 将光标移动到下一行的当前位置

消息头格式: 一个请求中可以包含若干个消息头信息,每个消息头占用 一行(CRLF结尾).所有消息头全部完毕后,会以单独的CRLF 结束.

每个消息头的格式为: headerName:headerValue(CRLF) 消息头名字:消息头值

例如: Connection: keep-alive

完整消息头内容如: Host: localhost:8080(CRLF) Connection: keep-alive(CRLF) Cache-Control: max-age=0(CRLF) Upgrade-Insecure-Requests: 1(CRLF) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36(CRLF) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8(CRLF) Accept-Encoding: gzip, deflate, sdch(CRLF) Accept-Language: zh-CN,zh;q=0.8(CRLF)(CRLF) 如上,最后一个头后面会有两个CRLF,第一个表示最后一个 头消息结束,第二个CRLF表示消息头部分发送完毕.

消息正文格式: 消息正文没有具体格式,因为是纯2进制数据,通常是用户的 本次请求实际传递给服务端的数据.可能是注册时用户输入 的数据,也可能是发送过来的图片等信息. 一个请求中可以不包含消息正文.服务端可根据消息头中是否 含有描述消息正文的头信息判断该请求是否含有正文.

完整的HTTP协议如: GET /index.html HTTP/1.1(CRLF) Host: localhost:8080(CRLF) Connection: keep-alive(CRLF) Cache-Control: max-age=0(CRLF) Upgrade-Insecure-Requests: 1(CRLF) User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36(CRLF) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8(CRLF) Accept-Encoding: gzip, deflate, sdch(CRLF) Accept-Language: zh-CN,zh;q=0.8(CRLF)(CRLF)

StringBuilder

HTTP响应

HTTP响应也分为三部分:状态行,响应头,响应正文

1:状态行 状态行分为三部分: protocol statusCode statusReason(CRLF) 协议版本 状态代码 状态描述

状态代码分为五类: 1xx:消息化,通常表示已收到客户端请求,要求继续发送 2xx:成功,表示请求已接收,并处理 3xx:跳转,需要重新定位某个资源 4xx:客户端错误,客户端请求无法被处理 5xx:服务端错误,请求被接收,但是服务端处理失败.

常见状态代码: 200:客户请求成功接收并处理完毕 302:要求客户端跳转(重定向)指定URL 404:客户端的请求无效,无法处理.通常是请求资源没有找到 500:客户端请求被接收,但是服务端遇到未知错误,无法处理 该请求

2:响应头 响应头格式与消息头一致. headerName:headerValue(CRLF) 所有头发送完毕后,会单独发送CRLF表示响应头部分结束. 常见的头: Content-Type:用于说明响应正文的数据类型 Content-Length:用于说明响应正文的数据长度(字节量)

3:响应正文 2进制数据,是客户端实际请求的资源数据

完整的响应内容如: HTTP/1.1 200 OK(CRLF) Content-Type:text/html(CRLF) Content-Length:32546(CRLF)(CRLF) 11010101010101.....

galaxy-service's People

Contributors

galaxy-sea avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.