建立连接
如果客户端已经打开了一条到服务器的持久连接,可以使用那条连接来发送它的请求。否则,客户端需要打开一条新的到服务器的链接。客户端请求一条到 Web
服务器的 TCP
连接时,服务器会建立连接,判断连接的另一端是哪个客户端,从 TCP
连接中将 IP
地址解析出来。一旦新的链接并接受,服务器就会将连接添加到其现存的 Web
服务器连接列表中,并且监视连接上数据传输。服务器可以随意拒绝或立即关闭任一条连接,有些服务器会因为客户端 IP
地址或主机名是未认证的,或者因为它是已知的恶意客户端而关闭连接。当然,服务器也可以使用其他识别技术:
- 客户端主机名识别
可以利用 “反向 DNS
” ,对大部分服务器进行配置,以便将客户端 IP
地址转换成客户端主机名。Web服务器
可以将客户端主机名用于详细的访问控制和日志记录。但是这种方式是很浪费时间的,很多大容量的服务器要么会禁止主机名解析,要么只允许对特定内容进行解析
- 通过
ident
识别客户端
服务器可以通过 ident
协议(前提是服务器得支持这个协议)找到 HTTP
连接的用户名。如果客户端支持 ident
协议,就在 TCP
端口113 上监听 ident
请求。
接收请求
连接上有数据到达时,服务器会从网络连接中读取数据,并将请求报文中的内容解析出来。以下就是具体的解析步骤:
-
解析请求行,查找请求方法、指定的资源标识符(URI)以及版本号
-
读取报文首部
-
读取请求主体(非必须)
处理请求
一旦服务器接收到请求,就可以根据方法、资源、首部以及可选的主体来进行处理,由于不同的请求方法具有不同的处理方式。
访问资源
在前面也提到过,可以认为在服务器上存储的一切事物都是资源,所以也可以说服务器就是资源服务器,它们负责发送预先创建好的内容,比如,HTML
页面。
-
docroot
,这是最简单的资源映射形式,就是用请求URI
作为名字来访问服务器中的文件。 -
目录列表,服务器可以接受对目录
URL
的请求,其路径可以解析为一个目录,而不是具体的资源。在这种情况下,大多数的服务器都会去寻找一个名为index.html
或index.htm
的文件来代替此目录。 -
动态资源映射,其实就是一个复杂的后台应用程序在控制管理着复杂的资源关系,动态的返回响应。
构建响应
- 响应实体。如果事务处理产生了响应主体,就将内容放在响应报文中回送过去。响应报文通常包含:
-
描述了响应主体
MIME
类型的Content-Type
首部 -
描述了响应主体长度的
Content-Length
首部 -
实际报文的主体内容
- 重定向。服务器有时会返回重定向响应而不是成功的报文。服务器可以将浏览器重定向到其他地方执行请求。
发送响应
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
/bbs.csdn.net/topics/618191877)
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!