您现在的位置是:焦点 >>正文
网站二进制
焦点46979人已围观
简介打开浏览器,按下F12,切到Network面板,刷新页面。你会看到一堆请求飞来飞去,每个请求背后都是服务器吐回来的二进制数据。网站这东西,剥到最底层,就是0和1在网线里跑。 我头一回意识到这件事,是几 ...
打开浏览器,网站进制按下F12,网站进制切到Network面板,网站进制刷新页面。网站进制你会看到一堆请求飞来飞去,网站进制每个请求背后都是网站进制服务器吐回来的二进制数据。网站这东西,网站进制剥到最底层,网站进制就是网站进制0和1在网线里跑。
我头一回意识到这件事,网站进制是网站进制几年前抓一个接口的包。那个页面显示一张用户头像,网站进制img标签里的网站进制src指向一个API地址。我用curl请求那个地址,网站进制终端里哗啦啦刷出一堆乱码——后来才知道那是网站进制JPEG的原始字节流。浏览器拿到这些字节,按JPEG规范解码,渲染成像素,拼出那张脸。整个过程没有"图片"这个东西,只有字节序列和一套约定好的解读规则。
HTML文件本身也是二进制。服务器返回的Content-Type头写着text/html,charset=utf-8,浏览器就知道该按UTF-8把字节流翻译成字符。`
` 这几个字符在磁盘上存的是 `3C 68 31 3E`,四个字节。你看到的粗体大标题,是渲染引擎读了这几个字节之后画出来的。
CSS、JS、字体文件、视频流,全一样。一个网页加载完成,浏览器大概要处理几百KB到几MB的二进制数据。这些数据被拆成TCP包,每个包加上IP头和TCP头,在网络上跳十几二十个路由,最后到达你的网卡。网卡把电信号或光信号转回字节,交给操作系统内核,内核交给浏览器进程,浏览器解析、布局、绘制。
有个细节挺有意思:HTTP/2之后,头部信息也变成二进制了。HTTP/1.1的请求头是纯文本,你能直接读懂`GET /index.html HTTP/1.1`。HTTP/2把它编码成HPACK格式的二进制帧。效率高了,但人眼读不了了。调试的时候得靠工具解码,不然就是一堆十六进制。
再说个具体的。PNG图片的前八个字节永远是 `89 50 4E 47 0D 0A 1A 0A`。这是PNG的魔数,用来标识文件格式。浏览器拿到一个图片响应,先检查这八个字节,对上了才按PNG解码,对不上就报错或者尝试其他格式。JPEG的魔数是 `FF D8 FF`,GIF是 `47 49 46 38`。这些数字不是随便定的,是格式设计者选的标记。
网站安全也绕不开二进制。XSS攻击、SQL注入,本质上是攻击者往本该是数据的地方塞了可执行代码。防御手段之一就是严格区分数据和指令,别让二进制流里的某段字节被错误地当成代码执行。CSP、转义、参数化查询,都是在做这件事。
我有时候觉得,前端开发者整天跟DOM、CSS、框架打交道,容易忘了底下这层。调个样式调半天,其实浏览器只是在按规则把二进制翻译成像素。理解这一层,排查某些诡异bug的时候会有帮助——比如编码问题导致的乱码,比如Content-Type设错导致浏览器不按预期解析,比如gzip压缩没开导致传输体积翻倍。
下次你打开一个网页,可以想想这件事:从服务器磁盘上的磁畴方向,到你屏幕上发光的像素点,中间是一条完整的二进制链路。网站是给人看的,但跑起来的时候,它只认0和1。
Tags:
上一篇:漏洞扫描方法与漏洞管理APP
下一篇:网络购物的利与弊
相关文章
按照ios安全结构文献定义 安全漏洞是
焦点苹果在2021年发布的一份内部安全白皮书里,给安全漏洞下过一个非常“苹果”的定义:安全漏洞是用户信任链中的任何意外断裂点。这个定义跟CVE数据库里那种冷冰冰的“软件缺陷”完全不同。它不关心代码行数,不 ...
【焦点】
阅读更多网络安全风险排查表格
焦点网络安全风险排查表格 上周帮一家做跨境电商的朋友做安全审计,发现他们的服务器上挂着三个后门程序,而他们自己用的风险排查表还停留在“检查密码是否超过8位”这种十年前的水平。表格本身没错,错的是把排查当成 ...
【焦点】
阅读更多网站验证码显示不出来
焦点下午三点,我盯着屏幕上的登录框,那个本该出现扭曲数字的小方框一片空白。刷新了三次,换了浏览器,甚至重启了路由器,它还是白得干干净净。这不是我第一次遇到验证码消失的情况,但每次碰到都让人火大——明明密码 ...
【焦点】
阅读更多