• 雷厉锋行
    2019-05-09
    出现以下情况:
    ➜ ~ telnet www.taohui.pub 80
    Trying 116.62.160.193...
    Connected to www.taohui.pub.
    Escape character is '^]'.
    需要将以下请求地址:
    GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1
    复制粘贴(去掉前面的空格)。
    粘贴之后,按Command + Return进行换行(不要直接 Return)
    换行之后粘贴:Host:www.taohui.pub(去掉前面的空格)。
    然后再添加Command + Ruturn 两次就能得到对应的结果了。

    总结:
    文中说的换行指的是 Command + Return 而不是直接Return。
    直接复制粘贴的文本:GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1 前面包含空格,需要去掉空格再粘贴。
    展开

    作者回复: 用MAC的同学可以参考雷锋兄的分享哈:-)

     3
     21
  • Geek_35f374
    2019-05-08
    老师 好奇怪啊 我是mac 系统 为啥我用telnet GET以后返回了400

    telnet www.taohui.pub 80
    Trying 116.62.160.193...
    Connected to www.taohui.pub.
    Escape character is '^]'.
      GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1
    HTTP/1.1 400 Bad Request
    Server: openresty/1.13.6.2
    Date: Wed, 08 May 2019 09:21:55 GMT
    Content-Type: text/html
    Content-Length: 179
    Connection: close
    展开

    作者回复: 这是因为你需要在请求行下输入:
    Host: www.taohui.pub
    RFC规定,如果请求中没有携带Host头部,一律返回400 Bad Request,目前基本Web服务器都遵循这一规则

    
     3
  • hellochenpro
    2019-05-07
    ABNF 就像学习新语言,新协议的地图一样。从了解 ABNF 开始学习一种新的协议,确实有用。

    作者回复: 是的,中间件、容器都是照着ABNF对协议的定义来实现功能的

    
     3
  • 周曙光爱学习
    2019-05-06
    telnet可以理解为类似于浏览器功能,然后连接到server,然后发送http协议给server,server也是要解析http发过去的header头信息以返回客户端想要的内容,流程是酱紫么

    作者回复: 是的,telnet只是建立了TCP连接

    
     3
  • 云飞扬
    2019-05-06
    $ telnet www.taohui.pub 80
    Trying 116.62.160.193...
    Connected to www.taohui.pub.
    Escape character is '^]'.
    我出现这样的情况了

    作者回复: 这是正常的,继续敲HTTP请求行GET / HTTP/1.1...就可以了

    
     2
  • 毛利
    2019-05-05
    和正则很像
    
     2
  • kk
    2019-06-04
    请问80是指 客户端用80端口访问和接受信息呢

    作者回复: 不是,是指服务器端提供80端口,客户端向服务器80端口建立连接,而客户端本地端口由操作系统随机生成,之后在这条连接上收发消息

    
     1
  • 吃饭饭
    2019-05-21
    Mac系统使用 zsh 时,不用 command + enter ,直接回车就行。
    具体操作步骤:
    第一步:命令行输入 telnet www.taohui.pub 80 , 回车,结果显示如下
    Trying 116.62.160.193...
    Connected to www.taohui.pub.
    Escape character is '^]'.

    第二步:在上面的结果下输入 请求地址并回车,示例如下
    Trying 116.62.160.193...
    Connected to www.taohui.pub.
    Escape character is '^]'.
    GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1

    第三步:在上面的结果下输入 Host:www.taohui.pub ,两次回车
    telnet www.taohui.pub 80
    Trying 116.62.160.193...
    Connected to www.taohui.pub.
    Escape character is '^]'.
    GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1
    Host:www.taohui.pub

    展开

    作者回复: 非常详尽,谢谢分享!

    
     1
  • Qi
    2019-05-11
    在xshell6中还没有来得及全部输完那句GET /wp-content/plugins/...,软件就自动connection closing...Socket了,想问问老师是什么原因啊?

    作者回复: 因为服务器有设超时时间,通常如果1分钟内还没有接收到完整的HTTP请求(主要指请求行和头部),服务器会关连接

    
     1
  • WL
    2019-05-08
    请问一下老师我是在docker的linux容器中发起请求的, 但是在wireshark所有网卡中中没又看到这个容器的IP和mac地址, 也抓不到容器的包, 请问一下老师这个是什么原因, 有什么办法能抓到容器的包呢?

    作者回复: 1、容器肯定需要从你的网卡出流量的,所以可能只是更换了IP,你可以用端口等捕获过滤器来抓包,目前端口是不会变的,用http.request.host等显示过滤器来找报文。
    2、还是要在wireshark上,找到出流量的那个网卡,在那个接口上抓包。

    
     1
  • 慌张而黑糖
    2020-01-15
    想问一下老师,为什么在mac或者linux会多get和host这两个输入操作,我看下面你有回复host的作用,那个Get /wp-content...这个有什么作用呢

    作者回复: HTTP协议要求,实际从网卡上发出去的消息,是GET /wp-content/... HTTP/1.1\r\n,它对应着你在浏览器地址栏输入的是http://taohui.pub/wp-content/,也对应着curl http://taohui.pub/wp-content。host的作用在16课有更详细的介绍。

    
    
  • 三年过后
    2020-01-15
    随便找一台外网服务器静态资源:

    -bash-4.2# telnet ip 8761
    Trying ip...
    Connected to ip.
    Escape character is '^]'.
    GET /mssb_manage/css/slick.css HTTP/1.1
    Host:ip

    HTTP/1.1 200 OK
    Accept-Ranges: bytes
    ETag: W/"1895-1559530664000"
    Last-Modified: Mon, 03 Jun 2019 02:57:44 GMT
    Content-Type: text/css;charset=utf-8
    Content-Length: 1895
    Date: Wed, 15 Jan 2020 03:11:39 GMT
    Server: Repairshop APP Srv1.0

    /* Slider */
    .slick-slider
    {
        position: relative;

        display: block;
        box-sizing: border-box;

        -webkit-user-select: none;
           -moz-user-select: none;
            -ms-user-select: none;
                user-select: none;

        -webkit-touch-callout: none;
        -khtml-user-select: none;
        -ms-touch-action: pan-y;
            touch-action: pan-y;
        -webkit-tap-highlight-color: transparent;
    }
    展开

    作者回复: 所有Web Server都遵守HTTP规范^_^

    
    
  • Panda
    2019-07-25
    ABNF 是不是可以理解为一种 DSL 😄
    
    
  • 光
    2019-06-27
    我的抓包中出现的请求有两个 GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1
    一个是HTTP
    但另外一个是TCP 协议的。这是什么原因呢。

    作者回复: HTTP协议也是一种TCP协议。所以没有明白你的问题。
    BTW:你是用wireshark抓包吗?wireshark上显示为tcp协议通常是因为不知道怎么解析到具体的应用层协议,如果知道是什么协议可以右键点击decode as选择一个协议就可以显示

    
    
  • 上善若水
    2019-06-22
    感觉课程非常好

    作者回复: 谢谢

    
    
  • kk
    2019-06-10
    您好 感谢您上条的耐心回答,我还有一个问题
    1.请问80端口和443端口是不是就是服务器接受客户端http和https协议的专门端口呢?
    2.另外这个端口是不是只能对应一个进程或线程呢?
    3.网上说的黑客端口扫描工具 可以扫描出服务器的这些端口吗不限于80 443?如果可以的话,是否能扫描到一些内部端口比如mysql数据库的呢

    作者回复: 1、只是默认端口,可以更改的。
    2、不是,可以对应多个进程,可以参见我的《Nginx核心知识100讲》里的Nginx架构课程。
    3、可以,mysql通常会开3306端口,因此如果你购买云服务器,3306等端口默认都是被防火墙关闭的

    
    
  • Mason
    2019-05-30
    第一次听说ABNF,长知识
    
    
  • charles
    2019-05-23
    macOS command+return 会放大缩小界面。。
     1
    
  • CoffeeMilk
    2019-05-17
    老师你好,我使用xshell6输入GET /wp-content/plugins/Pure-Highlightjs_1.0/assets/pure-highlight.css?ver=0.1.0 HTTP/1.1 按下回车后就出现
    XsheConnection closing...Socket close.
    Connection closed by foreign host.
    Disconnected from remote host(www.taohui.pub:80) at 16:06:55.
    无法接着输入Host:www.taohui.pub
    这是什么原因呢?
    展开

    作者回复: 这是我的服务器配置错误了,今天下午我在www.taohui.pub上的Nginx上配置http2,80端口服务没配置好,现在已经改好了,你再试试看

    
    
  • 灰
    2019-05-11
    感觉ABNF的RFC编号有点大,之前的RFC使用的都是这个规范吗?
    刚注意到在RFC2616里有一个小节在介绍ABNF( 2.1 Augmented BNF )

    作者回复: 都是这个系列的规范

    
    
我们在线,来聊聊吧