ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

计算机网络零基础入门:从IP到HTTP,用生活类比看懂网络原理

计算机网络零基础入门:从IP到HTTP,用生活类比看懂网络原理 总有朋友跟我说给我讲讲计算机网络呗我连IP是什么都不知道。我一开始会搬出一堆术语结果对方眼神渐渐放空最后留下一句算了太难了就走人了。后来我学乖了改用一套幼儿园版讲法——把计算机网络类比成寄快递、认门牌号、看红绿灯效果出奇地好。这篇万字长文就是那套讲法。它不会让你变成网络专家但能让你从完全零基础到听得懂大家在说什么顺带理解你平时遇到的WiFi慢网页打不开系统检测到异常流量这些事到底是怎么回事。适合被教材术语劝退的纯小白、刚入行的非科班同学以及想给身边人讲明白网络是什么的热心人。1. 计算机网络说到底就是互相串门的聪明办法1.1 先搞清楚网络到底由什么组成我教小白最爱用的类比就是寄快递。你想想你要给远方的朋友寄一箱苹果会发生什么你先把苹果装进纸箱打包在箱子上写下朋友的地址和你的地址写信封然后交给快递网点接入网络快递公司的货车把它运到中转站路由器再运到另一个城市跨网络传输最后快递员送到朋友楼下到达目标网络朋友签收、拆开箱子解包看到你附的纸条数据内容。整个过程你的朋友不需要知道苹果是从哪棵树上摘的你也不需要知道货车走的是哪条高速——你们只关心苹果能不能完整到。计算机网络干的事情就是把这套流程变成电子化、自动化。拆开来看组成一个网络的基本零件就这么几样主机你的电脑、手机、服务器相当于寄件人和收件人。网络接口手机里的WiFi模块、电脑的网卡相当于你家门口的那个快递点。链路网线、WiFi信号、光纤相当于连接快递点的道路。路由器/交换机负责把数据往正确的方向转相当于城市里的快递中转站。协议大家共同遵守的规则相当于快递公司的面单规范、运输流程。很多教材一上来就抛出一堆设备名词把你砸晕其实你只需要记住一句话计算机网络就是让多台设备按照约定好的规则互相传数据的一套系统。设备只是硬件规则才是灵魂。那套规则就叫协议。1.2 为什么协议这么重要——快递公司的那张面单想象一下如果全世界每家快递公司用的面单格式都不一样有的地址写在左上角有的写在右下角有的电话号码是11位有的要求带区号。那快递分拣员得疯掉。网络协议的作用就是统一这张面单。我们现在用的互联网核心协议簇叫TCP/IP协议。它不是单个协议而是一整套规则规定了数据怎么打包分片与封装包上要写什么内容源地址、目标地址、校验信息数据怎么从一台设备走到另一台设备路由规则到了以后怎么交付给正确的程序端口映射这里插一句很多人查资料时会看到OSI七层模型、TCP/IP四层模型被吓到。其实协议分层就像快递公司的部门分工揽件部只负责收件运输部只负责开车派送部只负责上楼敲门。每个部门不需要管别的部门怎么干活只要接口约定好、交接清楚就行。这样搞的好处是某个部门升级工作方式其他部门不用跟着改。网络协议分层就是这个道理后面我会专门展开讲。2. 每台电脑都有自己的门牌号IP地址与域名2.1 IPv4、IPv6到底差在哪你寄快递必须写收件地址否则快递员没法送。网络上的每台设备也必须有地址否则数据包没法找到你。这个地址就是IP地址。我们见得最多的是IPv4地址长得像这样192.168.1.100。它由四组数字组成每组0到255也就是一个32位的二进制数。你大概可以算出IPv4地址一共约有42亿个。听起来很多对吧但问题是全世界联网的设备早就远超42亿了——手机、电脑、电视、智能灯泡都在抢地址。怎么办呢就像老小区门牌号不够用开发商只好建新区、换新编码规则。这个新编码规则就是IPv6地址它是一串128位的地址长这样240e:390:1234:5678:abcd:ef01:2345:6789。数量多到什么程度地球上的每一粒沙子都能分到一大堆。所以现在新出的路由器、手机、系统都在逐步支持IPv6就是为了解决门牌号不够分的问题。不过你也不用急着记IPv6长啥样日常用到最多的情况是登录路由器管理后台看到一堆fe80开头的地址别慌那是IPv6本地链路地址相当于小区内部自己用的门牌号不是公网正式地址。2.2 记不住门牌号咋办DNS域名系统IP地址虽然精准但它很难记。240e:390:1234:5678:abcd:ef01:2345:6789这种地址正常人看一眼就不想再看第二眼。于是网络设计者们搞了个偷懒方案给IP地址起个容易记的外号这就是域名比如baidu.com、taobao.com。那你怎么通过域名找到对应的IP地址靠一个叫DNS域名系统的服务。你可以把它理解成手机通讯录你不需要记住朋友的手机号只需要存个名字张三打电话时通讯录帮你查出号码。具体流程是这样的你在浏览器输入www.example.com浏览器先不着急去找网站服务器而是先问DNS服务器喂www.example.com的IP地址是多少DNS服务器查了一下回答哦它的IP是93.184.216.34。拿到这个IP后浏览器才真正出发去访问那台服务器。这里有个实操经验有时候你打不开某个网站但用手机流量能打开用WiFi打不开很大概率就是DNS解析出问题了。这时候可以试试把电脑的DNS改成公共DNS比如国内的114.114.114.114或者223.5.5.5阿里DNS。改完一般能恢复正常。这招在解决网络已连接但网页打不开的问题时非常常用新手值得记住。2.3 为什么会有异常流量提示防的是不守规矩的人你有没有遇到过这种情况填了一个表单或者刷新了几次网页突然弹出一句话我们的系统检测到您的计算机网络中存在异常流量请稍后重新发送请求。很多人一看就慌了以为电脑中毒了或者被盯上了。我说句让你安心的话这大概率不是你电脑的问题而是网站的安全系统在自我保护。你可以把网站服务器想象成一个商场门口保安。平时人流正常保安不拦人。但突然有个人在门口来回冲刺或者同一张脸三秒内出现十次保安就会觉得不对劲——可能是机器人脚本在刷接口可能是有人在撞库攻击也可能是某个爬虫在批量抓数据。为了拦住这些不守规矩的家伙保安会暂时把可疑请求挡在门外让你稍后重新发送。一个正常用户为什么会触发这个机制常见原因有几种短时间内高频刷新或点击比如抢票、秒杀时手速过快你所在的网络出口IP被很多人共享比如公司、学校统一走一个出口其中一个人有不正常行为整个出口被临时风控切换网络频繁导致IP变化过快被系统判定为可疑浏览器插件在后台发送额外请求遇到这种情况最有效的处理方式是先停一停等几分钟再试别疯狂刷新。刷新越猛系统越觉得你像机器人。然后可以试试点一下验证码、换个网络环境比如从WiFi切到流量、清一下浏览器缓存。如果还是持续出现可以考虑更换浏览器的用户代理设置但一般用不到那一步。总之这是安全机制在起作用说明网站有防护意识反而是好事。3. 数据出门前要装行李箱分层与封装3.1 为什么计算机会像洋葱一样一层套一层前面说了协议要分层但新手往往不理解为什么非要搞这么多层直接一把梭把数据发过去不行吗我给你讲个真实的血泪教训。早期的网络协议确实简单粗暴结果就是某个公司换了新的传输设备所有上层应用都得跟着改牵一发动全身。后来大家学聪明了——把整个通信过程切成几个独立的阶段每个阶段做好自己的事通过标准接口对接。我们可以用装行李箱出门来理解一次数据发送的过程应用层你决定要发什么内容。比如你给朋友写了一条消息晚上一起吃饭。这个内容本身就叫应用层数据。传输层你给消息加了一个标签写上这条消息要给微信这个应用。这个标签机制对应TCP/UDP里的端口号。网络层你又在外面套了个信封写上寄到哪个城市哪栋楼。这是IP地址的职责。链路层最后为了让信在小区里能真正送到楼下还得套一个写着小区内部路线的包装。这对应MAC地址和以太网帧的工作。每一层只处理自己需要的信息把它包装好交给下一层。收到数据的一方再一层一层拆开逆向处理。这个过程叫封装Encapsulation和解封装Decapsulation。你不需要每一层都懂到寄存器级别只需要记住数据从上层传到下层一路加包装从下层传到上层一路拆包装。这就是洋葱模型。3.2 TCP与UDP一个像快递要签收一个像漂流瓶传输层有两个最重要的协议一个叫TCP一个叫UDP。几乎所有初学者都会在这里犯迷糊我用两个生活场景帮你钉死。TCP传输控制协议像是寄挂号信或发需要签收的快递。特点有仨第一寄之前要先确认你朋友在家建立连接第二每一包裹对方收到后都要回执没收到的会重发可靠传输第三所有包裹按顺序送到不能乱有序传输。所以TCP适合对完整性要求高的场景发文件、看网页、聊微信文字、登录账号。UDP用户数据报协议像是往河里扔漂流瓶。你扔出去就完事了对方收不收得到、什么时候收到、收到几瓶你全不关心。它没有那些确认、重传的流程所以速度快、延迟低但可能会丢数据、会乱序。所以UDP适合对实时性要求高的场景打游戏、看视频直播、语音通话。游戏里偶尔卡一下可以忍受但如果你扔一个技能服务器要等三次确认才执行那就没法玩了。这里有个常被误解的点很多人以为TCP一定比UDP好。实际上它俩没有高低之分只看合不合适。文件传错了不行必须TCP视频通话延迟高了受不了必须UDP。如果非要用TCP传直播流观众会卡到怀疑人生如果用UDP传银行转账指令钱可能莫名其妙丢一笔。选哪个看业务需求。3.3 端口号同一栋楼里的不同房间理解了IP地址是门牌号但你会发现一个bug一台服务器上可能同时跑着网站服务、邮箱服务、文件服务如果一个数据包到了服务器门口服务器怎么知道该把它交给谁答案是端口号。你想象一下IP地址找到的是小区那栋楼端口号才是几单元几零几。数据包到了楼门口还要按端口号找到具体的房间把数据递给住在那里的程序。默认端口号有一些约定俗成的规矩端口号对应的常见服务21FTP文件传输22SSH远程登录25SMTP发邮件53DNS域名解析80HTTP普通网页443HTTPS加密网页3306MySQL数据库你看一个IP地址 一个端口号就能精确定位某台机器上的某个程序。这就是常说的套接字Socket的基本概念。新手以后看到192.168.1.10:8080这种写法不要慌冒号前面是IP冒号后面是端口。4. 数据包上路后要经过的交通系统4.1 路由器就是十字路口的交警数据封装好出发后不会像鸽子一样飞一条直线到目的地。它一路上要经过很多个路口这个路口就是路由器。每个数据包上都有目标IP地址路由器拿到包后查一下自己的路由表——你可以把它理解成导航软件的地图——然后决定往右转走下一段路。这个过程叫路由。一台路由器不需要知道去所有地方的路它只需要知道下一个路口该往哪走然后一棒接一棒最终把数据送到目的地。让我给你一个具体画面你在上海往北京的朋友发了个文件。数据包先到你家路由器的WAN口再到运营商的城市节点然后接入国家级骨干网络途经几个大型路由器最后一层层下放到北京、他所在的楼宇、他的电脑。每一步都是查表—选路—转发这三个动作。这跟你开车上高速时按路牌一个一个路口走是一模一样的逻辑。所以以后有人问你路由器是干什么的你就回答它是网络世界的交警/导航员负责看着数据包上的地址把它往正确的方向转。4.2 堵车和绕路带宽、延迟、丢包的故事网络好不好大家最关心的三个词是带宽、延迟、丢包。这三个词在网速测试软件里经常出现但它们不是一回事。带宽单位是Mbps兆比特每秒指的是路有多宽。带宽大就像高速路有八车道同一时间能并排跑更多车。但这不意味着每辆车跑得都快。延迟单位是ms毫秒指的是从发出到收到需要多久。延迟高就像红绿灯多、路口堵即使路很宽车子也要走走停停。丢包指的是发出去的包没有到达。丢包率高就像路中间塌了个坑一部分车掉进去了。打个比方带宽是车道数量延迟是红绿灯周期丢包是路上有没有坑。打游戏卡经常不是带宽不够而是延迟太高或丢包严重——你的带宽有1000Mbps也没用因为每一个小包都要在路上磨蹭半天。反过来下载大文件时带宽才是主角延迟影响反而不大。说到这儿教你一个最基础的网络自检命令。在电脑命令行里输入ping 223.5.5.5如果能看到类似下面的回复正在 Ping 223.5.5.5 具有 32 字节的数据: 来自 223.5.5.5 的回复: 字节32 时间18ms TTL55 来自 223.5.5.5 的回复: 字节32 时间16ms TTL55说明你的设备到阿里DNS服务器的往返延迟大概在16-18毫秒。如果你ping不通说明链路可能断了或者目标地址把你屏蔽了。这是网络排错第一步非常实用。4.3 家里WiFi慢到底是哪里慢很多朋友家里办了千兆宽带却发现看视频还是卡。这时候别急着骂运营商先自己排查一下。按这个顺序来有线比无线快找一根网线把电脑直接插到光猫上拨号上网测一下速度。如果插线满速、WiFi慢问题大概率出在路由器无线部分或摆放位置。频段选对没有现在路由器大多是双频的2.4GHz穿墙能力强但速度慢、干扰大5GHz速度快但穿墙弱。如果你离路由器远设备可能自动连了2.4GHz这时候速度掉一半是正常的。路由器位置对不对把路由器放高一点、放在房子中间位置别塞在弱电箱里也别放在电视柜后面一堆金属杂物旁边。WiFi信号本质上就是微波金属、墙体、水都会严重削弱它。重启大法光猫和路由器连续开机一两周后确实会出现内存泄漏、连接数耗尽的问题。直接断电重启大部分网速变慢的玄学问题都能解决。这排查思路的核心逻辑是分段隔离先确认是运营商线路的问题还是你家内部设备的问题再确认是有线的问题还是无线的问题。一层层缩小范围而不是瞎猜。5. 你每天都在用的应用层协议HTTP、HTTPS与Cookie5.1 浏览器输入网址后发生了什么前面说了那么多底层机制现在把它们串起来看看最日常的场景你在浏览器里输入www.example.com按下回车到底发生了什么DNS解析浏览器先向DNS服务器询问这个域名对应的IP地址。如果之前查过浏览器或操作系统会有缓存就直接用缓存的不问了。建立TCP连接浏览器拿到IP地址发起一次TCP连接三次握手相当于先打个电话确认对方在线。发送HTTP请求连接建立后浏览器按照HTTP协议发一个请求报文内容大致是说GET / HTTP/1.1Host: www.example.com请把首页内容给我。服务器处理并响应服务器收到请求处理一下比如查数据库、生成页面然后返回HTTP响应报文里面带着状态码比如200表示成功404表示找不到页面、响应头、网页正文。浏览器渲染浏览器拿到HTML、CSS、JavaScript等资源开始画页面。如果页面里还有图片、脚本等资源浏览器会对每个资源重新发起请求——不过同一个域名下的连接会被复用不会重新握手。断开或保持连接处理完后连接可能立即关闭也可能保留一段时间以供复用这取决于HTTP头的设置。这一步一步走下来你会发现前面学的IP、TCP、DNS全都在真实地运转。很多人说我也上网但不知道网络干啥了其实你每次点开网页这些步骤都在你眼皮底下跑了一遍只是你没意识到。5.2 HTTPS为什么比HTTP多了一个SHTTP是明文协议传数据就像寄明信片沿途每个经过的节点都能看到你写了什么。如果你在明信片上写银行卡密码等于裸奔。HTTPS就是HTTP加上了加密相当于把明信片换成了密封信封。它做了三件事加密内容即使别人截获了数据包看到的也是一堆乱码。校验完整性数据在传输中被篡改接收方能察觉。身份认证通过数字证书证明我就是我防止A网站冒充B网站。具体原理涉及非对称加密和对称加密的配合这里不展开细节你只需要记住一个直观模型HTTPS先用公钥安全地商量出一个临时的对称密钥之后所有数据都用这把临时钥匙加解密。这样既保证了安全性又保证了速度。所以看到浏览器地址栏有小锁图标说明这个网站用的是HTTPS。登录页面、支付页面如果不是HTTPS打死也别输入密码。这条建议值得你记一辈子。5.3 Cookie与Session超市会员卡和小本本你有过这种体验吧登录了一个网站关掉浏览器第二天再打开居然还保持着登录状态。网站是怎么记住你的这要归功于Cookie和Session。Cookie可以理解成超市发的会员卡。超市第一次接待你时办了一张卡给你卡上写了一个会员编号和你的一些偏好。以后你每次来超市只要出示这张卡收银员一看编号就知道你是谁不用再重新登记。Cookie也是一样是服务器发给浏览器的一小段文本浏览器会存下来之后每次访问同域名时自动带上。Session则是超市自己那边的小本本。会员卡上只有编号超市前台的小本本上记着编号9527的客人在前天买过婴儿奶粉偏好无糖可乐。服务器这边也存着对应你身份的数据这堆数据就叫Session。Cookie和Session通常是配合使用的Cookie里放一个会话ID服务器根据这个ID去查Session小本本。这里有个实用的安全意识Cookie里如果存了敏感信息比如直接明文存用户名密码非常危险一旦被窃取就可能账户被盗。现在的网站一般只存一个随机生成的会话标识真正的用户信息放在服务器端。所以你在公共电脑上用完网站最好点退出登录这本质上是让服务器销毁Session并让浏览器清除Cookie。6. 幼儿园毕业前送你几个实用小工具和避坑建议6.1 Windows/Mac自带的三件套排错工具新手不需要去装那些花里胡哨的第三方网络工具系统自带的三个命令足够解决大部分日常问题。ping测连通性ping baidu.com它能告诉你目标能不能通延迟多少。如果ping不通再换一个地址试试比如ping 223.5.5.5。如果域名ping不通但IP能通说明DNS解析有问题如果IP都不通说明链路或路由有问题。ipconfigWindows/ifconfigMac/Linux看自己家的配置ipconfig你能看到本机IP地址、子网掩码、默认网关、DNS服务器。当你需要确认电脑到底拿到什么IP时用这个。很多上不了网的问题一查发现IP变成169.254.x.x这是系统没从路由器拿到地址的典型表现重启网络或检查DHCP即可。tracertWindows/tracerouteMac/Linux看数据包走的路线tracert baidu.com它会逐个列出从你到目标之间经过的路由器节点以及每一跳的延迟。这条命令能告诉你卡在哪一段路上。比如前面几跳都通到某个运营商节点超时大概率是运营商之间的互联出了问题。不过要注意有些路由器节点出于安全考虑不响应探测包显示* * *不代表一定故障要看整体趋势。这三个命令配合使用你就能在大脑里画出一条从你的设备到目标网站之间的路线图。遇到网络问题先分清楚是DNS的问题、路由的问题还是目标服务器的问题而不是一上来就重装系统。6.2 新手最容易理解歪的几个概念IP地址为什么会变重启路由器怎么就变好了路由器默认开启DHCP功能相当于小区物业自动分配门牌号。它每次分配的地址可能是动态的租约到期或重启后设备重新申请就可能拿到一个新IP。很多时候重启大法能解决网络问题就是因为重启后设备重新获取IP、重新建立连接清掉了之前卡死的状态。公网IP和私网IP有什么区别你家里路由器分配给你的192.168.x.x是私网IP相当于小区内部编号只在小区内有效。你家的宽带运营商分配给你的是公网IP现在多为动态公网IP相当于这个小区在整座城市的路牌地址。数据包要先按公网IP找到你家小区的门口再按私网IP找到你这栋楼。中间这个过程叫NAT网络地址转换你不需要深究只需要知道它们是不同层级、不同范围的地址就行。局域网和广域网有什么区别你家所有设备连着一个路由器这个范围内的网络叫局域网LAN。互联网是无数个局域网连起来形成的广域网WAN。可以这样记局域网是一个小区广域网是所有小区连成一座城市。6.3 进阶路线从幼儿园到小学、中学把这篇文章读透你已经有幼儿园毕业的水平了可以听懂一些基础网络对话。如果你想继续往上走我给一条比较顺的路线先看视频课培养感觉B站上有很多计算机网络公开课其中湖科大教书匠系列的讲解深入浅出对小白相当友好。如果你是为考研408准备这个课程配合做题也很有帮助。再读一本入门教材谢希仁的《计算机网络》是国内经典教材体系完整适合系统学习《计算机网络自顶向下方法》则是从应用层往下讲贴近日常使用场景不容易劝退。两本选一本精读就行。有基础后再刷考研向内容王道考研的计算机网络讲义和习题知识点密度高、考点明确适合有一定底子后用来检验和强化。如果目标就是408那么先把教材过一遍再刷王道效果会好很多。动手实践到这一步你可以装个Wireshark抓包看看自己浏览网页时产生了什么报文试着用telnet或nc手写一个HTTP请求再折腾一下虚拟机搭建一个局域网。不动手永远只是纸上谈兵。这里我要提醒一句网上有些实训答案期末试题答案之类的东西能帮你应付一时但网络这行最后拼的是排查问题的直觉和底层理解。抄十份答案不如自己抓一个包看一眼。我不是说题海战术没用而是说动手实验带来的理解深度是刷题替代不了的。最后再分享一个我个人的小体会我当年被协议栈、封装、路由这些术语绕得晕头转向后来学会把所有概念都翻译成快递、门牌、红绿灯这种生活场景一下就想通了。计算机网络乍一看像一座高墙但墙上的每一块砖——IP、TCP、DNS、HTTP——拆开看都是常识问题的标准答案。你只要抓住数据从一台电脑到另一台电脑这条主线遇到新概念就往这条线上挂会发现它没有想象中那么可怕。下次再有人跟你说起异常流量的时候希望你能想起这篇文章里的保安和商场淡定地回一句哦那多半是风控在拦机器人。
返回列表