惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Security @ Cisco Blogs
H
Hacker News: Front Page
P
Privacy International News Feed
N
News and Events Feed by Topic
T
Threatpost
Simon Willison's Weblog
Simon Willison's Weblog
S
Schneier on Security
K
Kaspersky official blog
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
Security Latest
Security Latest
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
L
Lohrmann on Cybersecurity
Jina AI
Jina AI
P
Proofpoint News Feed
AI
AI
雷峰网
雷峰网
T
Tailwind CSS Blog
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Recent Commits to openclaw:main
Recent Commits to openclaw:main
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 叶小钗
Webroot Blog
Webroot Blog
Apple Machine Learning Research
Apple Machine Learning Research
SecWiki News
SecWiki News
罗磊的独立博客
N
Netflix TechBlog - Medium
Martin Fowler
Martin Fowler
Google DeepMind News
Google DeepMind News
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
S
Security Affairs
Blog — PlanetScale
Blog — PlanetScale
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
月光博客
月光博客
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Securelist
W
WeLiveSecurity
T
Troy Hunt's Blog
A
Arctic Wolf
博客园 - 司徒正美

机核

游戏性能旗舰最强之选,一加 Ace 6 至尊版国补到手价2999元起 6元钱自己更换电动车刹车线 《生化危机9:安魂曲》编剧Haris Orkin专访 摸金游戏?音乐游戏!暗区新赛季这把能弹的琴有何来历? 好评国产武侠SRPG《息风谷战略》免费DLC现已推出 | 机核 GCORES 碎片 《生化危机:安魂曲》将于5月实装首个免费更新内容 | 机核 GCORES 新锐东方游戏,谱写世界新章! 沉浸式恋爱视觉小说游戏《心象演算》免费试玩版现已正式上线 | 机核 GCORES 互动影游《代号三国:龙起》上线!穿越三国与曹操并肩、与佳人同行、与权谋博弈! 《老头收集梦想生活》,游戏酒桌会6,录音笔VOL.689 | 机核 GCORES 破界·共生——《白日梦:无限世界》五大核心游戏特点解析 价格已到史低,锐龙5 9600X/锐龙7 9700X正适合抄底 时间循环之旅即刻启程!《归环》一周目测试今日开启 热门在线韩游变魂游,洛奇衍生作能否打破“花瓶”魔咒? LG UltraGear evo 全新高端显示器系列:当“5K”遇见“AI”,不止强大,更懂热爱 反套路三国互动影游《代号三国:龙起》今日上线! 愿望单登记人数突破10万!备受瞩目的“女儿养成游戏” 《梦幻魔法公主》今日于Steam平台上线!限时八折优惠中 《黑神话:悟空》全球音乐会2026巡演将于4月29日12时开票 | 机核 GCORES “Snowguelike”生存肉鸽挖矿新作《蛙穿雪境》公布发售日期,5月7日正式上线 | 机核 GCORES 重塑移动办公、AI创作新境!全新华硕灵耀Air系列、ProArt 骁龙版震撼首发,创芯未来 均分88:《Saros》媒体评分汇总 | 机核 GCORES 上海烛龙公布合作遗迹探险游戏《吉时已到》首支预告片 | 机核 GCORES 首个独立游戏《萝薇日记》已上线Steam! 烛龙新IP《吉时已到》首曝,打造国内首款中式合作遗迹探险游戏 喜加一:《暗黑破坏神Ⅳ》国服现已开启限时免费领取本体活动 | 机核 GCORES 新版《生化危机》电影定于9月18日上映,官方网站现已上线 | 机核 GCORES 《冲就完事模拟器2》“星球大战”联动DLC正式宣布 | 机核 GCORES SteamController将于5月4日发售,售价99美元 | 机核 GCORES 事已至此,内存这么用也算省钱了,“2+1”非对称双通道应用实测 505游戏母公司现已收购《明末:渊虚之羽》IP | 机核 GCORES 基石 手动杂谈12|格斗游戏也能讲好故事 | 机核 GCORES I Love You Mr Snowball 我的向日葵小姐 会比GTA6先发售吗?最硬核的生存游戏《DAYZ》要推新DLC了 周记02:在2026遇到新怪谈 什么硬件,能让游戏Loading界面快速消失? | 机核 GCORES GadioSpec《百年风云世界杯》免费试听集 | 机核 GCORES 百年风云世界杯Vol.1丨足球崛起 | 机核 GCORES 100年前,一群人提前替我们经历了AI恐惧 | 机核 GCORES 《呼啸山庄》2026 ——一辆当代艺术的大卡车冲撞了我的大脑 手游《天穗之咲稻姬:日之香巡灵传》宣布将于7月27日停服 | 机核 GCORES 集结梦之队,征战世界杯,《最佳球会ONLINE》上线Steam 山水绝景随心拼 休闲建造游戏《千里山河录》Steam商店页公开 巫师帽、法袍、魔杖,为什么它们是影视、游戏里的法师必备三件套? 《无鞘信使》-第一章 复古风自动战斗肉鸽《终结之终结》Steam商店页面现已上线 电脑里有一款不破不立的MMO,录音笔VOL.688 | 机核 GCORES 《生化危机》30周年纪念周边发售,这次是真的“保护伞” 可靠耐用+AI全能,惠普战66 2025锐龙版深度体验 《时之书:无尽终章》关卡“大航海时代”全球首次公开 经典名作《乌龙派出所》改编经营模拟游戏《乌龙派出所~阿两的商店街物语~》正式宣布支持简体中文 明日开冲,解锁反套路三国互动影游《代号三国:龙起》即将上线 独立游戏《这是我的宝藏!》已发售~ 降低难度不是唯一解,无压力死亡也是好体验 Netflix官宣新片《普通人》:讲述韩国现代史上的权力风暴 《生化危机:安魂曲》全球销量现已突破700万份 《绝地鸭卫》PC版5月15日正式发售 亡妻回忆录?女性向情感叙事游戏《S-mail》现已正式发售 全新酷黑风格,酷睿Ultra 200S PLUS的高性价比搭档!七彩虹BATTLE-AX B860M-PLUS S WIFI7 V20 超级黑刃主板测评 胖狗 索尼发布了港台地区PS5产品价格调整公告,将于5月1日起实施 二次元怪猎+性感美女!《碧蓝幻想:无尽黄昏》开启Beta公测 这款怪谈类型中式恐怖游戏居然更新了?! 《百日战纪 -最终防卫学园-》改编漫画将于今年冬季开启连载 《如被附身,请致电我们》:匈牙利黑色幽默恐怖小说 《竹屿山房杂部卷五》(译文) 大树 超越引擎 摄影分享丨四月 碎片杂记vol.72 当老式FPS与老式动画技术碰撞出新时代的火花—《神探杰克鼠》 想做独游,如何避免首个项目就褒姒? 在线多人动作游戏《OCTOPinbs》将于5月12日上线Steam! 《酒鬼女神的酒诡》确定将于2026年登陆Steam 《CRYMELIGHT》将于11月5日(周四)正式发售!4月25日开始预购! 钢铁国度MKI部落Evolution,蛮兵部分 【钢铁国度】部落-Primal MK I,蛮兵部分 这是一个高中生用ai跑出来的作品,我自称他为物理神话 钢铁国度MKI部落Metamorphosis,蛮兵部分上 钢铁国度MKI部落Metamorphosis,蛮兵部分下 INDIE Live Expo于4月25日举办:首发9款新作,超200款独立游戏亮相 暗黑卡牌策略新作《魔忌:穷鼠啮狸》发布全新中文试玩版和发售预告片,4月30日正式上线在即 战锤40K长篇小说:变节者・苦难主宰(三)(全书完) 战锤40K长篇小说:变节者・苦难主宰(二) 战锤40K长篇小说:变节者・苦难主宰(一) 英语语言学习丨短语专题1:短语的特点 唯一的EVE战争 【少前同人】【M200】战术人形会梦见音乐会吗 【昏迷3】即将发售,前作主角悉数到场!“恶灵”宋老师化身可操控角色 业内人士:游戏公司“十有八九”使用生成式AI,包括卡普空 欢庆一周年:《光与影:33号远征队》全新纪念艺术图、超值折扣与免费更新同步上线 才刚刚开始呢 【抽奖】《星际卡车司机》推出免费大型更新,四折平史低折扣进行中 四人合作FPS游戏《佣兵猎手》抢先体验重大更新 1 现已上线 Raw Fury新作《深馅地牢 Deep Dish Dungeon》将于今秋加入 XGP 塔防幸存者游戏《魔怪来袭》推出首个 DLC 《饿狼传说:群狼之城》1周年纪念!新DLC“沃尔夫冈·克劳萨”今日参战 猫狗相伴 欢乐闯关 双人合作平台跳跃游戏《猫狗同行》上线Steam商店页 《同行:月球逃脱》(Together: Moon Escape)上线将于明日上线Steam
可以在家学会的网络技术(二):从网页到 TCP/IP
韩大 · 2024-05-13 · via 机核

本篇我们会探索以下知识:

URL\DNS\TCP\IP\Port

认识“网址”

我们先来研究一下我们在浏览器输入栏填写的“网址”:

https://www.lua.org/

技术上来说,这串字符被称为 URL:统一资源定位符(Uniform Resource Locator)。 上面这个 URL,我们可以分为几段:

  1. https,这部分被字符 :// 与其他部分隔开。这部分叫做 Scheme,表示浏览器使用什么方法和服务器通信(也就是协议)。除了 https,浏览器支持的还有 http/ftp/mailto。

  2. www.lua.org,这部分被字符 / 与其他部分隔开。这部分叫做 Domain Name,中文称为“域名”,它代表了服务器的地址,浏览器通过这个地址去互联网上找到对应的服务器。这部分也是随后我们需要进一步探索的部分。

  3. / 后面的部分,虽然啥都没有,也是个一个部分。这部分称为 Path To File,就是要访问的文件路径。作为网站首页,一般不写的话,会默认为访问 /index.html,不过这个配置是网站服务器控制的。

我们做的第一个实验,是玩一下 URL:请把 mailto://2740168@qq.com 输入到 Chrome 浏览器的地址栏中,看看会发生什么?

弹出了让你打开邮件客户端,如果你有配置好一个电子邮件账号,就可以直接给 2740168@qq.com 发邮件了。以前好多网站,会把“联系我们”的链接,就写成这种 mailto://xxxx@xxxx.com 的形式,让用户点击之后直接给预设的邮箱地址发邮件。不过现在电子邮件已经很少人用了,所以现在比较少见这样的链接了。

URL 的定义除了我们上面说的三个部分,实际上还有更丰富的含义:

  • 域名部分,有些浏览器还支持直接在 URL 中填入用户名和密码,用来快速进入一个有账号控制的地址,类似:https://username:password@www.xxxxxx.com/

  • 端口 Port 部分(上图写的是 80),是服务器上一个特定的通信参数,这个数字范围 0-65535 的。这个参数控制了浏览器建立 TCP 连接的时候,使用的端口参数,这也是我们下一步要谈论到的一个知识:TCP 协议的通信地址。

  • 路径 Path to the file 部分,一般看起来好像一个文件路径,常用的 Web 服务器软件也会依次作为下载路径的一部分,在设置好的文件路径下开始寻找。如果找不到,就会返回常见的 404 页面。

  • Parameters 部分,也有叫 Query String 的,这个部分是以问号 ? 开头,用 = 号和 & 号组成的一组字符串。这个往往被一些 Web 应用程序用来作为“动态参数”输入,以前有些在网页上填写的输入框都是以这个方式传到服务上的。

  • Anchor锚部分,这个部分可以在长长的网页上定位一个位置,让浏览器快速的跳转到那个页面上,大家如果写 html 的话,就可以加入这种“锚点”的标签,让用户点一下跳过去。常见于网页的“回到开头”的链接上。

以上的部分,如果要做个实验来具体的体验,都是可以的,但是有点偏离本文的学习路径,咱们暂时跳过,如果有兴趣的读者可以给我留言,我后面贴一下这些实验的做法也可以。

URL 作为一种广泛应用的互联网资源描述方式,除了用于浏览器以外,很多别的软件也会用,譬如版本管理软件 SVN,我们就能看到类似这样的地址:svn://xxxx.xxxx.xxxx/path/

认识 IP 和 DNS

下面我们专注于“域名”部分。我们今天所使用的互联网,所使用的技术被称为“TCP/IP”网络,而每个网站的域名,都必须要至少对应上 TCP/IP 网络上的一个通信地址。这种通信地址,被称为“IP 地址”(Internet Protocol Address)。我们可以通过一个小工具来看看,刚刚访问的网站,它的 IP 地址是啥。

首先,我们需要调出一个命令行窗口 cmd.exe,我们可以在 windows 下按快捷键 Win+S,打开"开始菜单"的搜索栏,输入 cmd.exe,并且启动这个程序。

然后我们可以在那个黑黑的窗口中输入我们的命令行工具,来探索网络了。首先,我们输入命令:ping www.lua.org,把上面浏览器实验中的网站域名 www.lua.org 作为 ping 命令的参数输入进去,然后按回车。

ping 这个工具,是用来检测 TCP/IP 网络上,某个特定服务器是否能访问的一个小工具。当我们输入了域名或者 IP 地址作为参数,这个工具就会尝试向所指定的互联网地址服务器,发出一些网络数据包。如果目标服务器支持 ping 功能的响应,会原封不动返回 ping 工具发来的数据包,这个时候 ping 软件就能统计这一来一回的时间,并且打印出来。这样我们就能直到,访问目标服务器的延迟时间大概是多少了。上面的例子中,延迟是 162 毫秒(网速还行)。

我们可以发现,在输出的文字中,出现了一串特别的字符:46.175.8.47,这就是 IP 地址。那么,ping 这个软件,是如何知道 www.lua.org 这个域名要转换成 46.175.8.47 这个 IP 地址的呢?——这是通过操作系统(windows)来实现的:操作系统会把 www.lua.org 这个字符串,发到配置好的某个互联网服务器上,查询到对应的 IP 地址。这个过程称为“域名解析”,而提供这个解析的服务,称为 DNS (Domain Name System)。

我们可以通过一些方法,来看一下,我们的 DNS 服务器的 IP 地址是什么。我们找到 windows 的设置面板,然后找到“网络和 Internet”,在“状态”这一栏,找到你上网功能的“属性”部分。

在窗口中一直往下滚动,你就可以看到 DNS 的部分了。

这里显示的 DNS 服务器是: 10.93.128.1 这个地址。实际上,你也可以自己手动去设置不同的 DNS 地址,现在网上也有很多“公益”“开源”的 DNS 服务供大家免费使用,譬如:8.8.8.8,或者中国电信位于广州的 DNS 服务:202.96.128.86。手工设置的截图我也贴一下,不过,如果大家能正常上网玩耍,一般不需要手工修改这个配置。

现在我们上网的路由器一般都提供了自动配置这个参数的功能,避免用户自己去填这个地址填错,导致无法正常上网。

我不厌其烦的贴出上面的截图。是因为后续我们可能需要频繁的打开 windows 操作系统的“网络设置”界面,来做一些有意思的测试。所以先热身一下。

手搓一个 Web 服务器

现在我们知道网站域名实际上会被转换成一个 IP 地址,而浏览器本身也是支持直接输入 IP 地址进行访问的,所以我们可以尝试自己做一个简单的 web 服务器,来验证一下上面我们的 HTTP 知识是否正确。

网络服务器除了需要有一个 IP 地址以外,还需要一个程序,使用所谓 TCP(Transmission Control Protocol)协议,来提供网络服务。TCP 协议的能力,我们的 windows 操作系统已经具备了,程序员可以写个程序来使用这个能力。所以我们在开始之前,也需要一个工具,来帮我们做个简单的 TCP 服务。至于什么是 TCP 协议,我们可以在实验中慢慢体会,现在先下载这个叫 NetAssist 的软件,可以从下面的网盘下载,或者网上搜索一下(注意别下载到木马软件了)。

https://pan.baidu.com/s/15m-dzhuRVM3K9qlob8JmEw?pwd=tzmc

这个软件不需要安装,直接双击就可以运行了。然后在软件左上角的“网络设置”中如下填写:

  1. 协议类型:TCP Server

  2. 本地主机地址:127.0.0.1

  3. 本地主机端口:8899

然后点击下面的按钮“打开”。点击之后,可能 windows 会弹出一个你见过的提示窗口,说是有程序要获得什么网络权限之类的,你的“允许”就好了。

以前你可能不知道,为啥有的程序运行的时候会弹出这个窗口,现在可以告诉你,如果有个程序试图启动一个网络服务,也就是监听某个网络端口,windows 出于安全考虑,会用这种方式告诉你。

至此,你就已经启动了一个网络服务。这个网络服务程序就是 NetAssist 这个软件,它使用了 windows 操作系统的网络功能,在 IP 地址 127.0.0.1 上,监听了 8899 端口。

这里的 IP 地址 127.0.0.1 是一个特殊的网络地址,你就算没上网,这个地址也是可以用,而且不需要你配置的,这个地址就是表示当前本地主机,也就是中文的“自己”,或者英文的“me”的意思。你可能发现还可以选择 0.0.0.0 或者另外的一些 IP 地址,这些我们后面会提到都是些啥,现在我们可以先简单的用 127.0.0.1 这个地址。

这里的 8899 端口,是操作系统为了让一台电脑上,多个程序都能使用网络,而编出来的一个号码。任何程序,在使用 TCP/IP 网络功能的时候,都要向操作系统申请一个这样的号码,称为“端口号”。一旦申请成功后,操作系统会检查收到的每个 TCP/IP 协议网络包,通过端口号来确定,把这个网络信息包发给申请的程序。一个程序可以申请一个端口号,也可以申请多个;但一般情况下,不可以多个程序共用一个端口号。端口号的可用范围为 0-65535 我们这里填写的 8899,因为这个数字没其他程序使用,所以操作系统很爽快的让我们申请成功了。——因此 NetAssist 程序,就可以在 127.0.0.1 这个 IP 上,监听所有发往 8899 端口的 TCP 数据了。

下面,我们来准备一段文本数据,作为我们的手搓 WEB 服务器的返回内容。内容就是上面我们分析的 HTTP 协议的报文:

HTTP/1.1 200 OK Content-Type: text/html Content-Length: 59 <body>hello <a href="http://www.gcores.com/">fun</a></body>

这个报文构造了一个简单的网页,上面显示了hello fun这样一行字,并且fun这个词还是个链接,点击会跳去一个有意思的网站。注意这个上面的 Content-Length: 59 是经过计算的,刚好是下面网页内容的长度,如果你修改了下面网页的内容,需要数一下多少个字符,然后修改这个59为你真正的内容长度。

接下来,我们打开一个浏览器,譬如 Chrome,在地址栏上输入:http://127.0.0.1:8899,然后你会看到浏览器并没返回什么内容,标签页有个转圈的动画,好像正在载入的样子。这个时候,请麻利的拷贝上面我们准备的那段 HTTP 报文,然后麻利的切换到 NetAssist 软件,在右下角“数据发送”窗口,把内容粘贴过去,然后点“发送”。

此时,你就会看到浏览器窗口中,出现了一行字 hello fun,至此,我们手搓的 Web 服务器实验成功了。你可以在 NetAssist 的窗口中,看到之前我们讨论的 HTTP 请求报文(Headers)。

我们这里使用了 IP+Port 的方式填写 URL 地址,浏览器也是支持。一般情况下,很多网站并不需要填写 Port 端口数据,如果你不填写,在地址以 http 作为 scheme 的情况下,浏览器默认会访问 80 这个端口,如果是 https 作为 scheme,浏览器则会访问 443 端口。至于 https 和 http 的差别,也是一个很有意思的知识,以后有机会聊。

总之,我们现在知道了,所谓网页浏览,基本的过程就是:

  1. 有一个软件程序,在连接了 TCP/IP 网络的电脑上运行,监听了某个 IP 和 某个端口

  2. 另外一个软件,通过网络,和上面这个软件所运行的 IP 和端口,建立了一个“连接”

  3. 发起连接请求的软件(称为客户端,一般是浏览器),向“网络连接”发送了一堆 HTTP 的请求报文信息。

  4. 接收到请求的软件(称为服务器端,著名的有 IIS、nginx、apache 等),查看了客户端发来的信息,然后把对应的数据,以 HTTP 响应报文的方式,回写到当前的“网络连接”里面。

我们上面提到的,HTTP 协议里面的各种 Header 所对应的功能,都是客户端和服务器端,互相之间通过建立的 TCP/IP 连接,进行数据传输行为的一些约定。譬如客户端会要求 GET 某个路径(PATH)的文件,服务器就通过传过来的 GET 的文件路径信息,在服务器磁盘的某个地方查找这个文件,然后把文件内容发给客户端。而我们手搓的服务器,不管你要求什么路径的文件,都是返回同样的内容,大家可以尝试修改浏览器的地址栏信息,加上一些如 http://127.0.0.1:8899/aaa/bbb.html 这样的内容进行测试,返回的还是同样的页面内容。

至此,我们大体的体会了一下 TCP/IP 网络功能,和网页功能之间的关系。但是 TCP/IP 并不仅仅可以用于网页浏览服务,我们玩的网络游戏、微信等等很多网络功能,都是使用 TCP/IP 功能的。这些都是通过一些应用程序,使用操作系统的 TCP/IP 功能来实现的。

在刚刚的例子当中,有一个重要的问题没有被讨论:为什么我们知道了 IP 地址,就可以把数据通过网络发到对应的电脑上?所以我们下一篇,通过操作系统的 TCP/IP 设置,来看看它具体是如何运作的。