作者回复: 回答的很好。
作者回复: 总结的非常好,赞!
作者回复: 不需要等待,在显示“正在连接”的时候按按Ctrl+]键,然后回车。
“正在连接”的意思是已经连上了。
可以再搜索一下Windows上Telnet的用法。
作者回复: 学业有先后,术业有专攻,一起努力。
作者回复: 网络攻击的范围太大,我不是专门做这个的,不能讲的很深入。
简单来说,就是在host头里面加入精心设计的代码,诱骗服务器执行。
作者回复: 欢迎同学们互相交流学习经验。
作者回复: 后面的进阶篇再讲。
作者回复: 是的,RFC有规定,但现实中也有部分不遵守。
作者回复: 因为服务器必须分配内存存储请求头,然后才能处理,如果头很大,比如说16k,那么几万个请求就会占用非常多的内存。
Nginx里限制头不超过4k,就是为了节约内存资源。
作者回复: 按照rfc标准,空格可以是零个或多个,但一个空格已经成了约定俗成的习惯。见rfc7230 3.2.3。
作者回复: 理解万岁。
作者回复: host头字段是用来定位“虚拟主机”的。比如说一台物理服务器上托管了a.com、b.org、c.net三个网站,用ip+port就不知道该访问哪个网站。
有了host, web server就可以知道选择对应网站的数据提供服务,再用uri去查找资源。
作者回复: 可能我比较孤陋寡闻,没见过Fetch请求,这个应该是自定义的请求方法吧,标准的就8个。
只要客户端和服务器双方约定好,用什么方法名都可以,只要能理解就行。
作者回复: 如果你说的是http认证,应该放在WWW-Authenticate字段里。
作者回复: 其他有问题的同学也可以试试。
作者回复: 我在自己的环境又确认了一下:
输入" open www.chrono.com 80",显示“正在连接”,这个时候按“ctrl+]”然后回车。
进入编辑页面,鼠标右键粘贴请求头,再按回车,服务器就会返回响应报文。
如果还是不能再现课程里的过程,可以去网上搜一下Windows上Telnet的用法,看有没有解决办法。
作者回复: Linux上的Telnet和Windows的操作不一样,不用那么麻烦,可以直接粘贴数据发送。
作者回复: 抓包是在整个tcp协议栈,从最底层的mac,所以上面传输的所有数据都能够抓到。
只要你点开始捕获,之后的http请求响应就都会被抓到,是整个过程。
作者回复: 如果用浏览器连接没问题,那就是正确的。
Telnet需要先按ctrl+],然后回车,进入编辑界面。
另外,别忘了改hosts。
有问题随时提。
作者回复: host字段是给Web服务器(Apache,Nginx)用的。
解析出ip后,请求到达Nginx,因为上面运行了很多的虚拟主机,比如a.com/b.com/c.com,那么应该进那个呢?
这个时候就要用到host字段了。如果host=b.com,那么Nginx就会使用b.com的配置提供服务。
你最后的问题其实是反了,浏览器解析域名得到ip地址,它不知道域名对应的是不是虚拟主机,也可能是真实主机。