随笔分类 - webserver
摘要:0 问题 打开浏览器后,输入一段网址,例如:baidu.com后会发生什么呢? 1 总体流程 DNS 解析:将域名解析成 IP 地址 TCP 连接:TCP 三次握手 发送 HTTP 请求 服务器处理请求并返回 HTTP 报文 浏览器解析渲染页面 断开连接:TCP 四次挥手 2 DNS域名解析 2.1
阅读全文
摘要:1 请求、响应格式 1.1 请求格式 1.1.1查看方式 浏览器:F12->“网络”->“全部” 1.1.2 请求方法: GET 基于“URL”地址问号传参;一般用于向服务器获取资源,例如查询数据库的数据等;成功返回200 POST 基于“请求”主体把消息发送给服务器;一般用于请求新增或修改资源,例
阅读全文
摘要:1 定义 字节序:多字节数据在内存中的存放顺序。 2 分类 包括大端序和小端序。 大端序(Big-Endian)将数据的低位字节存放在内存的高位地址,高位字节存放在低位地址。如网络字节序 这种排列方式与数据用字节表示时的书写顺序一致,符合人类的阅读习惯。 小端序(Little-Endian),将一个
阅读全文
摘要:0 why: 问题来源 0.1 网络编程流程 //创建socket int s = socket(AF_INET, SOCK_STREAM, 0); //绑定IP地址和端口号port bind(s, ...) //监听客户端连接 listen(s, ...) //接受客户端连接 int c = ac
阅读全文
摘要:前言 最近看到一个不错的webserver项目,但是配置过程给的不详细,这里给出详细配置过程 项目地址:https://github.com/Aged-cat/WebServer (感谢老猫大神的项目) 配置流程 在合适的位置下载源代码:git clone https://github.com/Ag
阅读全文
摘要:0.注意 该篇文章为了让大家尽快看到效果,代码放置比较靠前,看代码前务必看下第4部分的基础知识。 1.数据库连接池 1.1 是什么? 数据库连接池负责分配、管理和释放数据库连接,属于池化机制的一种,类似的还有线程池等。 1.2 为什么用? 各种池化技术的使用原因都是类似的,也就是单独操作比较浪费系统
阅读全文
摘要:1.线程池 1.1 线程池是什么? 一种线程管理方式。 1.2 为什么用线程池? 线程的创建和销毁都需要消耗系统开销,当线程数量过多,系统开销过大,就会影响缓存局部性和整体性能。而线程池能够在充分利用内核资源的前提下,避免系统资源被过度调用。 1.3 如何设计线程池? 简单来说,在线程池中提前创建好
阅读全文
摘要:1.目的 客户端与服务器之间建立TCP/IP连接,我们知道是通过三次握手,四次挥手实现的,但是很多地方对这个知识的描述仅限于理论层面,这次我们通过网络抓包的方式来看一下实际的TCP/IP传输过程。 2.什么是抓包? 网络传输信息是通过层层打包,最终到达客户端物理层,经过网线等设备传输到服务器端后,再
阅读全文
摘要:1. 需求分析 实现一个回声服务器的C/S(客户端client/服务器server)程序,功能为客户端连接到服务器后,发送一串字符串,服务器接受信息后,返回对应字符串的大写形式给客户端显示。 例如: 客户端发送“this is a webserver example!", 服务器返回"THIS IS
阅读全文