第 10 期 2018-06-28 线下活动 - Go 标准包 net/http 源码阅读(四)

观看视频

Go 标准包阅读

基于 Go 1.10.2

net 包

  • http/server.go
  • http/request.go
  • textproto/reader.go

读取位置

  • textproto/reader.go(140行)

问题

1.各个系统的回车换行符区别

  • 注意:10.13及其以上是macOS系统

2.URI,URL和URN的区别

3.HTTP CONNECT方法介绍

会议讨论小结

	可以建立一个代理服务器到目标服务器的透明通道(tcp连接通道),中间完全不会对数据做任何处理,直接转发(支持https,一种翻墙的手段,专线独享)

4.peek读取字节内部实现

  • 这里先peek获取流数据(注意:这里没有对Peek的错误进行处理,而是根据是否Buffered读取到数据来判断错误)
  • 为什么没有对Peek的错误进行处理呢?主要是因Peek失败了也有可能不会返回错误
	golang读取字节表现形式是阻塞式的,但其实底层是用了非阻塞式的NIO,如果没有读取到数据会定时轮询读取

5.http header尾部的符号什么情况下会存在\n\n的情况?(待解决,欢迎在下面评论)

看源码发现hearder结尾会存在\r\n\r\n\n\n两种字符情况

网络上查资料发现只会存在\r\n\r\n

相关链接