博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从Socket编程看HTTP服务器设计
阅读量:2441 次
发布时间:2019-05-10

本文共 833 字,大约阅读时间需要 2 分钟。

从常用的telnet命令,了解Socket的设计和用途。

我们会经常使用telnet来测试一个ip上某个端口是否能够连得通,这里中间其实就是利用socket连接返回数据。

这里我们在linux服务器上输入telnet taobao.com 80命令后,得到了Connected to taobao.com的相应,说明了这样的一个连接是正常的,服务器返回了响应。

上面的一个大体的过程就是类似我们java中的socket,利用socket变成,连接到taobao.com 80的socketServer,如果能够连接,我们可以通过输入,继续发送消息,而如果socketServer对输入的信息有回复的话,则会继续返回信息显示在命令窗口。这里的socket其实就是通过TCP协议进行包装然后发送出去的。

而我们知道HTTP协议是在iso七层模型中的应用层,TCP协议是在传输层,HTTP协议是建立在TCP协议的基础上,所以底层上,HTTP的报文数据是通过socket发送出去的。这里就涉及到HTTP的请求和相应格式。HTTP请求报文主要由请求行、请求头部、请求正文3部分组成。第一行是请求行,包括请求方式,URL,协议的版本号,中间通过空格分割。接下来换行,是请求头信息,以key:value的格式,每个key value一行,一般会有User-Agent、Host、cookie和Accept-Encoding等。接下来是换行,是一个空行,标记请求头部信息结束。下面是具体的报文数据。而HTTP服务器也以这样的格式规范进行解析获取相应的数据。

这些数据都是通过socket连接发送出去的,服务器进行数据解析后,返回相应到命令行控制台显示,完成一个简单的请求过程。

对于curl命令,其实我们也可以大致观察到curl的一个实现方式,curl有很多的参数,这些参数也是用来组成http请求的一些必备的数据。而对于这样的实现,我们完全可以自己去实现一个这样的shell命令。

你可能感兴趣的文章
SitePoint播客#80:与澳大利亚团队的FullCodePress
查看>>
可以给视图加复合主键_灵活视图处理的模式,第1部分–使用复合材料
查看>>
SitePoint播客#83:与Adam Broadway重新思考您的工作
查看>>
SitePoint播客#117:与Paul Boag返回Boagworld
查看>>
支付宝沙箱设置_从零到云:设置EC2沙箱,第1部分
查看>>
bcrypt强哈希_为什么应该使用Bcrypt哈希存储的密码
查看>>
数据库存储集合_处理集合根的集合-存储库模式
查看>>
SitePoint播客#76:邪恶的WordPress主题
查看>>
BigCommerce和Volusion:比较设置和移动
查看>>
PHP开发人员的8个分布式计算谬论
查看>>
SitePoint播客#123:ASP.NET与Tim Posey和Pranav Rastogi
查看>>
使用codeigniter_使用CodeIgniter探索面向方面的编程,第3部分
查看>>
使用codeigniter_使用CodeIgniter探索面向方面的编程,第2部分
查看>>
用Wufoo创建简单表单:开发人员的观点
查看>>
heroku_使用Heroku和Facebook SDK在云中构建您的应用
查看>>
SitePoint播客#145:Addy Osmani的Backbone.js基础
查看>>
SitePoint播客#97:与Louis Simoneau偶尔进行的迪克动作
查看>>
php表单验证_用PHP进行表单验证
查看>>
dropbox_如何将Dropbox与SVN或Git一起用于Cloud SCM
查看>>
SitePoint播客#101:与Peter Williams进行Web设计业务
查看>>