美文网首页程序员
http之tcp具体实现

http之tcp具体实现

作者: 进击的码奴 | 来源:发表于2019-08-19 11:45 被阅读0次

           我这人比较懒,之前计划每周至少一篇博客,但是自从写了几篇之后再也没减持下去。最近有个小伙伴在http长连接下面@我。因此呢,为了避免以后有人还问。所以这次我写一个http之tcp具体实现,帮助大家具体理解所谓的通信协议到底是什么。

           *******所谓的通信协议就是通信双方约定的规则*******

            比如对于tcp来说,双方约定建立链接时,相互hello对方一个,发起这多hello一次。结束时双方bye一次,并相互确认bye听到了。这就是tcp协议的一部分。当然tcp协议很复杂,还有很多其他约定。

            http是以消息封装在tcp消息体里的。在传输层来看,http协议就是一个消息。网上具体背书式的介绍http协议我就不介绍了。请参看我写的http协议那篇里面有链接。下面直接讨论http实现的主干逻辑。  

            本文是使用ServerSocketChannel实现的。这个东西依赖于java。不知道其他语言怎么搞得,没考究过。不过应该万变不离其宗。

            上图为通过线程绑定端口,注册通道,让后通过线程启动,来监听web服务。

    上图为接受tcp连接是个SocketChannel对象,让后将SocketChannel放到线程池中处理。

    读通道里的tcp连接内容。

            这里的解析我就不贴代码了,因为太长。解析就是读tcp消息体,让后http协议格式,解析http消息。http协议格式:

    就按照这个一行一行解析tcp消息体

            然后根据URL里面 链接地址,解析出对应的处理方法进行响应处理。这就是http整个协议使用tcp实现的逻辑。因为我是使用公司代码。很多有业务逻辑代码我没有贴。所以看起来可能有点缺失。

            建议大家可以去看jetty源码,就可以理解了。

    相关文章

      网友评论

        本文标题:http之tcp具体实现

        本文链接:https://www.haomeiwen.com/subject/gyfssctx.html