gpt4 book ai didi

Tcp协议实现HTTP服务器,带你理解HTTP协议

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Tcp协议实现HTTP服务器,带你理解HTTP协议由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本篇文章主要介绍go语言基于tcp协议实现简单的http服务器,大家可以学习到:

1.怎样实现一个简单的http服务器 。

2.通过错误的http协议格式加深对http协议的理解 。

平时我们使用的http服务器,如:apache、nginx都是一个完整而且功能强大的服务器,如果我们不去看源码无法很好地理解http服务器的内部实现。如果我们不去自己实现一个简单的http服务器,可能就无法很好地理解http协议,我们学习应该不仅要知其然还要知其所以然.

本篇文章从tcp协议开始介绍,之后使用tcp socket按照http协议格式发送数据到客户端,这里的客户端指的就是浏览器.

Tcp协议实现HTTP服务器,带你理解HTTP协议

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议.

tcp协议属于传输层协议,http协议属于应用层协议,http协议位于tcp协议之上,也是http协议是基于tcp协议实现的。很多应用层协议都是基于tcp协议实现的,如:文件传输协议ftp、ssh协议、telenet协议等.

下面开始我们的编程之旅.

首先监听本地tcp 8888端口 。

listen, err := net.Listen("tcp", "127.0.0.1:8888") 。

之后打印监听信息 。

fmt.Println("server start listening on port 8888") 。

接着延时关闭tcp流 。

defer listen.Close() 。

之后for循环进入监听,如果有连接进来启动goroutine进行处理 。

Tcp协议实现HTTP服务器,带你理解HTTP协议

go 。

接着我们来看下handleClient函数的实现 。

Tcp协议实现HTTP服务器,带你理解HTTP协议

go 。

handleClient函数里面首先定义了响应体,打印响应体的长度。之后定义响应头,响应头以“HTTP/1.1 200 OK\n”开始,这是http协议的标准响应头,之后定义响应类型和响应体的长度。响应头和响应体之间以“\n\r\n”分割.

最后以字节格式发送给浏览器.

下面我们来看下执行效果吧!在浏览器中输入 。

http://127.0.0.1:8888/ 。

Tcp协议实现HTTP服务器,带你理解HTTP协议

浏览器 。

可以看到浏览器中显示出我们启动的服务器返回的数据。Response Headers中的响应头正是我们设置的.

恭喜你,完成了自己的http服务器.

但是凡事我们要举一反三,我们再来试一下如果http状态是500时,返回的结果是什么?

Tcp协议实现HTTP服务器,带你理解HTTP协议

http 。

Tcp协议实现HTTP服务器,带你理解HTTP协议

浏览器 。

这个http 500就是我们在开发中经常遇到的,现在我们自己模拟实现了.

我们可以尝试去掉响应头和响应体之间的分隔符 。

Tcp协议实现HTTP服务器,带你理解HTTP协议

http 。

我们看下结果 。

Tcp协议实现HTTP服务器,带你理解HTTP协议

浏览器 。

结果是浏览器无法识别,这就是为什么会有http协议,先规定协议各家浏览器按照协议实现,这样就不会出现问题.

最后此篇关于Tcp协议实现HTTP服务器,带你理解HTTP协议的文章就讲到这里了,如果你想了解更多关于Tcp协议实现HTTP服务器,带你理解HTTP协议的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com